不規則な時間ステップのデータセットで10分以上の移動平均を作成しようとしています。以下のエラーが発生します
Traceback (most recent call last):
File "asosreaderpandas.py", line 13, in <module>
df.rolling('10min').mean()
File "/opt/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py", line 8900, in rolling
on=on, axis=axis, closed=closed)
File "/opt/anaconda3/lib/python3.6/site-packages/pandas/core/window.py", line 2469, in rolling
return Rolling(obj, **kwds)
File "/opt/anaconda3/lib/python3.6/site-packages/pandas/core/window.py", line 80, in __init__
self.validate()
File "/opt/anaconda3/lib/python3.6/site-packages/pandas/core/window.py", line 1478, in validate
raise ValueError("window must be an integer")
ValueError: window must be an integer
これは、移動平均を作成するために使用しているコードです。.txtファイルの長さが98,000行であることを除いて、過去の問題を解決したので、タイムスタンプを手動で入力します...
import pandas as pd
from datetime import datetime
df = pd.read_csv('KART.txt', header = 0)
#indexing the date format from txt file
pd.to_datetime(df.index, format='%Y-%m-%d %H:%M')
#creating ten minute average
df.rolling('10min').mean()
print(df)
私はパンダモジュールをよく理解していません、私は自分の日時を無駄に割り当てる複数の方法を試しましたが、これは完全に間違っていますか?
データセットサンプル
0,1
2019-01-01 00:00:00,4
2019-01-01 00:05:00,4
2019-01-01 00:10:00,4
2019-01-01 00:15:00,4
2019-01-01 00:25:00,5
2019-01-01 00:30:00,4
2019-01-01 00:35:00,4
2019-01-01 00:40:00,4
2019-01-01 00:45:00,4
2019-01-01 00:50:00,4
2019-01-01 00:55:00,4
2019-01-01 00:56:00,4
2019-01-01 01:00:00,4
...
コードに複数の問題があります。
あなたが持っている自動整数インデックス、あなたのデータフレームをロードするとき、列のインデックスを指定せずに、あなたのデータフレームに割り当てられているが(後で、あなたが望むものは明らかにされていない日時に変換してみてください)
日付に変換するときにインデックスを保存しません
修正バージョンは次のとおりです。
import pandas as pd
from datetime import datetime
df = pd.read_csv('KART.txt', header = 0, index_col=0) # <- specified column index
df.index = pd.to_datetime(df.index, format='%Y-%m-%d %H:%M') # <- saving index when converting it to datetime
df.rolling('10min').mean()
> 1
0
2019-01-01 00:00:00 4.0
2019-01-01 00:05:00 4.0
2019-01-01 00:10:00 4.0
2019-01-01 00:15:00 4.0
2019-01-01 00:25:00 5.0
2019-01-01 00:30:00 4.5
2019-01-01 00:35:00 4.0
2019-01-01 00:40:00 4.0
2019-01-01 00:45:00 4.0
2019-01-01 00:50:00 4.0
2019-01-01 00:55:00 4.0
2019-01-01 00:56:00 4.0
2019-01-01 01:00:00 4.0
...
編集Parfait
のコメントのおかげで、メソッドで日付を直接解析することで、コードのさらに短いバージョンを取得できます。read_csv
import pandas as pd
from datetime import datetime
df = pd.read_csv('KART.txt',
header = 0,
index_col=0, # <-- specified column index
parse_dates=True) # <-- parsed dates from txt
df.rolling('10min').mean()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加