熊猫:按年份和地块密度分组

时间:2015-04-02 14:16:51

标签: python pandas

我的数据框包含一些基于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

1 个答案:

答案 0 :(得分:0)

我认为这是由于数据中的nan,因为无法估算nan s的密度。但是,由于您希望可视化密度,因此假设丢失/未观察到的单元格应遵循与观察/未丢失单元格相同的分布,仅仅丢弃缺失值不应该是一个大问题。因此,df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')就足够了。

另一方面,如果缺失值不是“未观察到”,而是超出测量范围的值(例如来自温度传感器的数据,其读数为0~50F,但有时会遇到100F温度。传感器发出错误代码并记录为缺失值),然后dropna()可能不是一个好主意。