[英]Pandas: Group by year and plot density
我有一个包含一些基于time
的数据的数据框:
>>> temp.groupby(pd.TimeGrouper('AS'))['INC_RANK'].mean()
date
2001-01-01 0.567128
2002-01-01 0.581349
2003-01-01 0.556646
2004-01-01 0.549128
2005-01-01 NaN
2006-01-01 0.536796
2007-01-01 0.513109
2008-01-01 0.525859
2009-01-01 0.530433
2010-01-01 0.499250
2011-01-01 0.488159
2012-01-01 0.493405
2013-01-01 0.530207
Freq: AS-JAN, Name: INC_RANK, dtype: float64
现在我想绘制每年的密度。 以下命令用于其他数据帧,但此处不存在:
>>> temp.groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')
ValueError: ordinal must be >= 1
该列的外观如下:
>>> temp['INC_RANK'].head()
date
2001-01-01 0.516016
2001-01-01 0.636038
2001-01-01 0.959501
2001-01-01 NaN
2001-01-01 0.433824
Name: INC_RANK, dtype: float64
我认为这是由于您数据中的nan
所致,因为无法估算nan
s的密度。 但是,由于要可视化密度,假设丢失/未观察到的像元应遵循与观察到的/未缺失的像元相同的分布,只是简单地降低缺失值就不是一个大问题。 因此, df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')
就足够了。
另一方面,如果不是“未观察到”缺失值,而是超出测量范围的值(例如,来自温度传感器的数据,其读数为0〜50F,但有时会遇到100F温带。传感器发出错误代码并记录为缺失值),那么dropna()
可能不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.