我正在使用一個包含世界上15個國家/地區的人口數據的熊貓數據框Top15
。熊貓統計組中的NaN值
Population
Country
China 1.367645e+09
United States 3.176154e+08
Japan 1.274094e+08
United Kingdom 6.387097e+07
Russian Federation 1.435000e+08
Canada 3.523986e+07
Germany 8.036970e+07
India 1.276731e+09
France 6.383735e+07
South Korea 4.980543e+07
Italy 5.990826e+07
Spain 4.644340e+07
Iran 7.707563e+07
Australia 2.331602e+07
Brazil 2.059153e+08
現在我想看看這些數據的大陸方面的統計數據。所以我使用字典創建GROUPBY對象:
df = Top15.groupby(ContinentDict)
其中:
ContinentDict = {'China':'Asia',
'United States':'North America',
'Japan':'Asia',
'United Kingdom':'Europe',
'Russian Federation':'Europe',
'Canada':'North America',
'Germany':'Europe',
'India':'Asia',
'France':'Europe',
'South Korea':'Asia',
'Italy':'Europe',
'Spain':'Europe',
'Iran':'Asia',
'Australia':'Australia',
'Brazil':'South America'}
,然後我創建一個新的數據幀將包含各種統計信息:
new_df = pd.DataFrame({'size' : df.size().values, 'sum' : df.sum().values, 'mean' : df.mean().values, 'std' : df.std().values}, index = df.groups.keys())
我得到以下輸出:
mean size std sum
North America 5.797333e+08 5 6.790979e+08 2.898666e+09
Asia 2.331602e+07 1 NaN 2.331602e+07
South America 7.632161e+07 6 3.464767e+07 4.579297e+08
Europe 1.764276e+08 2 1.996696e+08 3.528552e+08
Australia 2.059153e+08 1 NaN 2.059153e+08
正如您所看到的,在標準偏差列中,有兩個值爲NaN
(適用於亞洲和澳大利亞)。
在此之後,我試圖尋找在各個值
df.std()
,我也得到:
Asia 6.790979e+08
Australia NaN
Europe 3.464767e+07
North America 1.996696e+08
South America NaN
Name: Population, dtype: float64
現在亞洲是完全罰款和南美是不是!我的原始數據框中沒有任何NaN
值。如何解釋這種奇怪的行爲以及如何解決這個問題?
你可以添加'ContinentDict'嗎? – jezrael
@jezrael:添加字典。 – Peaceful
我剛纔意識到大陸的尺寸在最終輸出中也是錯誤的。 – Peaceful