Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在python中按年份分组数据_Python 2.7_Pandas_Pandas Groupby - Fatal编程技术网

Python 2.7 在python中按年份分组数据

Python 2.7 在python中按年份分组数据,python-2.7,pandas,pandas-groupby,Python 2.7,Pandas,Pandas Groupby,我有一个csv文件,其中包含从2006/01/01到2011/01/01的数据,它包含:(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:

我有一个csv文件,其中包含从2006/01/01到2011/01/01的数据,它包含:(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月在文件中收集在一个栏中)等所有月份。
有什么想法吗?

您可以按组合进行分组: (假设您有时间-日期-时间索引)


这将按年份和月份分组

您可以按组合进行分组: (假设您有时间-日期-时间索引)


这将按年份和月份分组

这只是另一种方式:

data.groupby(lambda x: (x.year, x.month)).size()
同样地:

df.groupby([lambda x: x.year, lambda x: x.month]).size()

只是另一种方式:

data.groupby(lambda x: (x.year, x.month)).size()
同样地:

df.groupby([lambda x: x.year, lambda x: x.month]).size()


你问题的答案听起来像是你在第5行申请的分组月。或者你还想要别的吗?这是一个月一组,我需要一年一组等等,我很困惑:你想要一年一个月,对吗?是的,我需要一年一组,我需要一个月一组,以便有所有的月份(例如:6年的1月)在一个栏中等等…你的问题的答案听起来像是你在第5行申请的分组月。或者你想要别的吗?这是一个月一组,我需要一年一组等等,我很困惑:你想要一年一个月,对吗?是的,我需要一年一年地分组,我需要一个月一组,以便把所有的月份(例如:6年的1月)都放在一个酒吧里,等等…我照你说的做了,我得到了这个错误:“tuple”对象没有属性“month”,你的索引是datetime索引吗?(检查:data.index.dtype_str)我检查了一下,得到了:datetime64[ns]应该没有理由不起作用。你能分享你的代码片段+一段数据吗?你可以使用一些东西,比如说它是我的错,它现在工作得很好…谢谢你,muchi照你说的做了,我得到了这个错误:“tuple”对象没有属性“month”你的索引是datetime索引吗?(检查:data.index.dtype_str)我检查了一下,得到了:datetime64[ns]应该没有理由不起作用。你能分享你的代码片段+一段数据吗?你可以用我不好的东西,现在可以用了,很好…非常感谢