在python中按年分组数据

时间:2017-06-03 15:23:04

标签: python-2.7 pandas pandas-groupby

我有一个包含从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()

这是我得到的结果: enter image description here

所以,我的主要要求是如何按年份分组(在一年中1月1日的文件中,直到去年1月份收集在一个酒吧的文件中)等等。 任何想法?

2 个答案:

答案 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()