s-Stat 時系列データで異常値を検知しよう(3)

Pandas DataFrameオブジェクト

Pandasでcsvをread_csvするとDataFrameオブジェクトとして読み込まれます。
DataFramオブジェクトは2次元配列な感じです。
1次元目が列、2次元目が行のイメージみたいです。

例えば以下のcsvだと

date,value
2019,2845
2020,3246
2021,3633

read_csvしたDataFrameオブジェクトの変数名をdfとすると
それぞれのデータには以下の方法でアクセスします。

df['date'][0]->2019
df['date'][1]->2020
df['date'][2]->2021
df['value'][0]->2845
df['value][1]->3246
df['value'][2]->3633

read_csvするとデフォルトだと1行目を列名とみなすみたいです。
アクセスの方法も列名が反映され連想配列っぽくなります。

Pandas Seriesオブジェクト

hampelの第1引数はPandasのSeriesオブジェクトです。
Seriesオブジェクトは1次元の配列みたいです。
DataFrameオブジェクトからSeriesオブジェクトに変換する方法ですが
以下の方法でできます。

input=pd.Series(df['value'])

csvを読み込んでhampelメソッドを使い異常値を検出する 。

プログラムは以下の流れになります。
csvをread_csvでDataFrameオブジェクトとして読み込む。
DataFrameオブジェクトからSeriesオブジェクトを生成する。
Seriesオブジェクトを使ってhampelメソッドを呼び出して異常値を検出する。

ソースコードは以下の通り

import matplotlib.pyplot as plt
import pandas as pd
from hampel import hampel

# データ取得
df = pd.read_csv('./kome.csv')
print(df.columns)
print(df['value'])
input = pd.Series(df['value'])
rsts = hampel(input, window_size=5, n=3)
for rst in rsts:
  print('%d:date:%s value:%d' % (rst,df['date'][rst],df['value'][rst]))


書籍の紹介

2022年に注目すべきモバイルアプリ開発トレンド 15選

2022年に注目すべきモバイルアプリ開発トレンド 15選

s-Stat 時系列データで異常値を検知しよう(2)

s-Stat 時系列データで異常値を検知しよう(2)