2015-04-02 27 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()可能不是一個好主意。