我有一个数据框架,其中包含一些基于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
发布于 2015-04-02 16:18:06
我认为这是由于您的数据中的nan
,因为nan
s的密度无法估计。但是,既然您想要可视化密度,那么简单地删除丢失的值应该不是一个大问题,假设丢失/未观察到的单元应该遵循与观察到的/未丢失的单元遵循相同的分布。因此,df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')
应该就足够了。
另一方面,如果缺失值不是“未观察到”,而是超出了测量范围(例如,来自温度传感器的数据,读数为0~50F,但有时会遇到100F温差)。传感器发出错误代码并记录为缺失值),则dropna()
可能不是一个好主意。
https://stackoverflow.com/questions/29415203
复制