我的数据框包含一些基于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 :(得分:0)
我认为这是由于数据中的nan
,因为无法估算nan
s的密度。但是,由于您希望可视化密度,因此假设丢失/未观察到的单元格应遵循与观察/未丢失单元格相同的分布,仅仅丢弃缺失值不应该是一个大问题。因此,df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')
就足够了。
另一方面,如果缺失值不是“未观察到”,而是超出测量范围的值(例如来自温度传感器的数据,其读数为0~50F,但有时会遇到100F温度。传感器发出错误代码并记录为缺失值),然后dropna()
可能不是一个好主意。