我有一个很大的csv文件,数据看起来像这样:
YY-MO-DD HH-MI-SS_SSS | Temperature | Magnetic
2015-12-07 20:51:06:608 | 22.7 | 32.3
2015-12-07 20:51:07:609 | 22.5 | 47.7
.... ... ...
现在,我想将python与pandas一起使用来创建如下所示的csv:
Hour | Average Temp | Average Mag
20:00 | 22.6 | 40
21:00 | ... | ...
依此类推,每个24小时都如此。
第二件事是我想做相同的平均,但是对于一个月的每一天:
Date | Average Temp | Average Mag
7-12-2015 | 22.6 | 40
8-12-2015 | ... | ...
有没有在python中执行此操作的好方法?我尝试了excel,但是csv非常大,并且我有很多(希望创建一个循环来对每个文件执行相同的操作)
谢谢 !
你可以先转换to_datetime
,然后set_index
和最后resample
与聚集mean
和std
在0.18.0
新的重采样api版本中
#convert column to datetime
df['YY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YY-MO-DD HH-MI-SS_SSS'], format='%Y-%m-%d %H:%M:%S:%f')
#set index from column
df = df.set_index('YY-MO-DD HH-MI-SS_SSS')
#resample and aggregate mean
print df.resample('H').mean()
Temperature Magnetic
YY-MO-DD HH-MI-SS_SSS
2015-12-07 20:00:00 22.6 40.0
print df.resample('H').std()
Temperature Magnetic
YY-MO-DD HH-MI-SS_SSS
2015-12-07 20:00:00 0.141421 10.889444
print df.resample('D').mean()
Temperature Magnetic
YY-MO-DD HH-MI-SS_SSS
2015-12-07 22.6 40.0
print df.resample('D').std()
Temperature Magnetic
YY-MO-DD HH-MI-SS_SSS
2015-12-07 0.141421 10.889444
如果要将全部聚合到新列中,可以使用:
#resample and aggregate mean
df1 = df.resample('H').agg(['mean','std'])
df1.columns = [' '.join(col) for col in df1.columns]
print df1.reset_index()
YY-MO-DD HH-MI-SS_SSS Temperature mean Temperature std Magnetic mean \
0 2015-12-07 20:00:00 22.6 0.141421 40.0
Magnetic std
0 10.889444
df2 = df.resample('D').agg(['mean','std'])
df2.columns = [' '.join(col) for col in df2.columns]
print df2.reset_index()
YY-MO-DD HH-MI-SS_SSS Temperature mean Temperature std Magnetic mean \
0 2015-12-07 22.6 0.141421 40.0
Magnetic std
0 10.889444
如果您需要写to_csv
(可能没有索引):
df1.to_csv('myfile.csv', index=False)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句