web-dev-qa-db-ja.com

Pandas NaNはpivot_tableによって導入されました

世界銀行APIからのいくつかの国とそのKPIを含むテーブルがあります。これは次のようになります no nan values present 。ご覧のとおり、nan値は存在しません。

ただし、intを分析に適した形にするために、このテーブルをピボットする必要があります。 A pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id'])たとえば、 TUERKEIこれは問題なく機能します:

for turkey it works しかし、ほとんどの国では、奇妙なnan値が導入されています。どうすればこれを防ぐことができますか?

strange nan values

5
Georg Heiler

pivotingを理解する最良の方法は、それを小さなサンプルに適用することだと思います。

import pandas as pd
import numpy as np

countryKPI = pd.DataFrame({'germanCName':['a','a','b','c','c'],
                           'indicator.id':['z','x','z','y','m'],
                           'value':[7,8,9,7,8]})

print (countryKPI)
  germanCName indicator.id  value
0           a            z      7
1           a            x      8
2           b            z      9
3           c            y      7
4           c            m      8

print (pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id']))
             value               
indicator.id     m    x    y    z
germanCName                      
a              NaN  8.0  NaN  7.0
b              NaN  NaN  NaN  9.0
c              8.0  NaN  7.0  NaN

必要に応じて、NaN0に置き換えてパラメータfill_valueを追加します。

print (countryKPI.pivot_table(index='germanCName', 
                              columns='indicator.id', 
                              values='value', 
                              fill_value=0))
indicator.id  m  x  y  z
germanCName             
a             0  8  0  7
b             0  0  0  9
c             8  0  7  0
13
jezrael

ドキュメントによると:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html

ピボットメソッドは次を返します:データフレームの形状を変更しました。

これで、fillnaメソッドを使用して、na値を任意の値に置き換えることができます。

例:

私のピボットは以下のdataFrameを返します:

PIVOT RETURN DATA TYPENanを0に置き換えたいので、ピボットメソッドから返されたデータフレームにfillna()メソッドを適用します

DATA FRAME RETURN AFTER REPLACING Nan values with 0

0
Arpan Saini