見出し画像

重複したデータを取り除きます

体重計のデータ、statsmodels で ARを使って予測する時に事前のデータ加工が鍵になりそうです。
そこで、体重計のデータを例にして整理する方法を勉強します。

毎朝8時に計量するはずが、寝坊して10時に計測したとか。
これは時系列データを予測する時、時間のデータが一定の間隔にならなくなります。

もっとあるあるネタが、同じ日に2回計測してしまう時。
忙しい朝に計量したことを忘れて、夜にも計量してしまい、重複したデータになったり。

こういう1日数回存在するデータ、整理して1つにする方法があります。
resampleです。

体重の計測データを以下で作りました。
2020-5-1 8:0:0,60.1
2020-5-2 8:0:0,60.0
2020-5-3 8:0:0,60.0
2020-5-3 20:0:0,61.0
2020-5-4 8:0:0,59.2
2020-5-5 8:0:0,61.0
2020-5-6 8:0:0,60.5
2020-5-7 8:0:0,60.7
2020-5-7 8:5:0,60.8

2020-5-3と2020-5-7のデータが重複しています。
人間が測定するのだから、1日で1回確実に計測するとは限りません。

この重複をresample('D').mean()をして、1日1回のデータに加工し、以下のような結果が出ました。
2020-05-01 60.10
2020-05-02 60.00
2020-05-03 60.50
2020-05-04 59.20
2020-05-05 61.00
2020-05-06 60.50
2020-05-07 60.75

重複している2020-5-3と2020-5-7のデータが平均値で1つになっています。
ソースコードは以下です。


#pandasを使う宣言
import pandas as pd

#CSVの読み込み 、日付型では読み込めないので、一旦object型で読み込む
df = pd.read_csv('abc.csv',names=('ds', 'y'), dtype = {'ds':'object', 'y':'float'})


#時系列分析のための構造体を作成する
#最初に数値をfloat型で格納
my_df=pd.Series(df['y'], dtype='float')

#基準となるindexを日時型のdsを変換して格納
my_df.index=pd.to_datetime(df['ds'])

#先頭10個表示
print(my_df.head(10))

#重複データの削除 、日付が欠損している場合の穴埋めだがデータは埋めない。
my_df=my_df.resample('D').mean()

#先頭10個表示
print(my_df.head(10))

#学習 #勉強 #Python #プログラミング

いいなと思ったら応援しよう!