いつもお世話になります。プログラミング初心者です。
10分毎に観測したデータのデータフレームより、
n行ごとに平均化したデータフレームを作成してグラフ化まで
もっていきたいと考えています。
datetime a b group
0 2018-05-29 20:00:00 19.3 46.2 0
1 2018-05-29 20:10:00 20.2 46.7 0
2 2018-05-29 20:20:00 21.7 47.4 0
3 2018-05-29 20:30:00 23.7 47.3 0
4 2018-05-29 20:40:00 25.3 45.7 0
5 2018-05-29 20:50:00 26.9 45.7 0
6 2018-05-29 21:00:00 27.0 48.5 1
7 2018-05-29 21:10:00 32.1 40.6 1
8 2018-05-29 21:20:00 32.6 38.0 1
9 2018-05-29 21:30:00 31.8 37.3 1
10 2018-05-29 21:40:00 31.4 42.4 1
11 2018-05-29 21:50:00 32.9 42.4 1
例えば、上記のようなデータセットを読み込み、
他の皆様の質問を頼りに、groupbyを用いて以下のようにしてみましたが、
python
1#モジュールのインポート 2import matplotlib.pyplot as plt 3import pandas as pd 4import numpy as np 5 6#csvの読み込み 7df = pd.read_csv('XXX.csv',encoding='ANSI',parse_dates=[0]) 8 9#datetimeindexの作成 10index = pd.date_range 11 12#グループ番号を付け加える 13n = 6 14df['group'] = [x // n for x in range(0,len(df))] 15 16#n要素ごとの平均値を求める 17dfg = df.groupby("group").mean() 18 19print(df) 20print(dfg)
こうすると、以下のようなデータセットが出来上がります。
a b
group
0 22.85 46.500000
1 31.30 41.533333
見ると2要素の3行毎の平均値ができてはいるのですが、
これですと、datetimeの列が抜けており、時系列グラフに表す時に少し不都合です。
例えば、
group datetime a b
o 2018-5-29 20: 22.85 46.500000
1 2018-5-29 21: 31.30 41.533333
のような形、つまり6行ごとにまとめた日時を挿入したデータフレームを作りたいのです。
何か良い方法はありませんでしょうか?初歩的な質問で申し訳ありません。
よろしくお願い致します。
※追記
#モジュールのインポート import matplotlib.pyplot as plt import pandas as pd import numpy as np #csvの読み込み df = pd.read_csv('ocean_current1.csv',encoding='ANSI',parse_dates=[0],index_col=[0]) #期間毎の平均値を求める(1H) dfg = df.resample('1H').mean() #列データに記号を指定 dt = dfg['datetime'] a = dfg['a'] b = dfg['b'] #流向の度数→radian変換 c = np.radians(b) #ベクトルの成分計算 u = a*np.sin(c) v = a*np.cos(c) KeyError: 'datetime'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/28 22:27
2018/10/28 23:51
2018/10/29 01:31
2018/10/29 01:46