[英]Pandas: Group by year and plot density
我有一個包含一些基於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
我認為這是由於您數據中的nan
所致,因為無法估算nan
s的密度。 但是,由於要可視化密度,假設丟失/未觀察到的像元應遵循與觀察到的/未缺失的像元相同的分布,只是簡單地降低缺失值就不是一個大問題。 因此, df.dropna().groupby(pd.TimeGrouper('AS'))['INC_RANK'].plot(kind='density')
就足夠了。
另一方面,如果不是“未觀察到”缺失值,而是超出測量范圍的值(例如,來自溫度傳感器的數據,其讀數為0〜50F,但有時會遇到100F溫帶。傳感器發出錯誤代碼並記錄為缺失值),那么dropna()
可能不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.