2017-06-03 107 views
0

我有一個csv文件,其中包含從2006/01/01到2011/01/01開始的數據,它包含:(timestapm,heure,lat,lon,impact),我需要計算多年來每月的平均影響,然後繪製它。 我相信我應該每天分組數據,然後按月分組,然後按年分組。按python劃分數據的年份

,這裏是我的數據樣本:

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月)的第一年的一月份,所有這些月份都是如此。 有什麼想法?

+0

的回答你的問題聽起來像GROUPBY你在第5行申請的月份還是你想要的東西? – Daan

+0

這是一組一個月一個月,我需要一組年月 –

+0

哦,等一下,我很困惑:你想按年份和月份,對吧? – Daan

回答

2

,您可以撥打GROUPBY組合: (假設你有時間日期時間的指數)

data.groupby([(data.index.year),(data.index.month)])['impact'].count() 

按年和按月這將組

+0

我照你說的做了,我得到這個錯誤:'元組'對象沒有屬性'月' –

+0

您的索引是一個日期時間索引? (檢查:data.index.dtype_str) – Daan

+0

我檢查,我得到這個:datetime64 [ns] –