我有一个包含从2006/01/01到2011/01/01开始的数据的csv文件,它包含:( timestapm,heure,lat,lon,impact)我需要计算每月影响的平均值几年,然后绘制它。 我相信我应该每天,然后每月,然后按年分组数据。
这是我的数据样本:
timestamp,heure,lat,lon,impact,type
2007-01-01 00:00:00,13:58:43,33.837,-9.205,10.3,1
2007-01-02 00:00:00,00:07:28,34.5293,-10.2384,17.7,1
2007-01-02 00:00:00,23:01:03,35.0617,-1.435,-17.1,2
2007-01-03 00:00:00,01:14:29,36.5685,0.9043,36.8,1
2007-01-03 00:00:00,05:03:51,34.1919,-12.5061,-48.9,1
这是我正在使用的代码:
names =["timestamp","heure","lat","lon","impact","type"]
data = pd.read_csv('flash.txt', names=names, parse_dates=['timestamp'], index_col=['timestamp'])
print (data.head())
daily = data.groupby(pd.TimeGrouper(freq='D'))['impact'].count()
monthly = daily.groupby(pd.TimeGrouper(freq='M'))['impact'].count()
ax = yearly.plot(kind='bar')
plt.show()
所以,我的主要要求是如何按年份分组(在一年中1月1日的文件中,直到去年1月份收集在一个酒吧的文件中)等等。 任何想法?
答案 0 :(得分:2)
您可以组合组合: (假设你有一个时间日期时间索引)
data.groupby([(data.index.year),(data.index.month)])['impact'].count()
这将按年份和按月分组
答案 1 :(得分:0)
另一种方式:
data.groupby(lambda x: (x.year, x.month)).size()
同样:
df.groupby([lambda x: x.year, lambda x: x.month]).size()