2015-04-02 50 views
0

我有一个包含一些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 

回答

0

我认为这是由于您的数据nan,因为密度不能估计为nan s。但是,由于您想要显示密度,因此假设丢失/未观察的细胞应该与观察/未丢失细胞遵循相同的分布,那么简单地删除丢失的值应该不是一个大问题。因此,df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')应该就足够了。另一方面,如果缺少的值不是'不可观察的',而是超出测量范围的值(比如来自温度传感器的读数为0〜50F,但有时会遇到100°F温度。传感器发出错误代码并记录为缺失值),那么dropna()可能不是一个好主意。