【書式】
None は欠損値を意味する
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
print(dfA)
【結果】
国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
三郎 NaN NaN
四郎 4.0 8.0
【書式】
df.isnull().sum()
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
dfA.isnull().sum()
【結果】
国語 1
数学 2
dtype: int64
【書式】
df.dropna()
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
# 欠損値のあるデータを削除する
dfB=dfA.dropna()
# 結果表示
print("削除前",dfA)
print("\n")
print("削除後",dfB)
【結果】
削除前 国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
三郎 NaN NaN
四郎 4.0 8.0
削除後 国語 数学
一郎 1.0 5.0
四郎 4.0 8.0
4レコードのうち、2レコードが消える・・・
【書式】
df=df.dropna(subset=["列名"])
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
# 「国語」列に欠損値のあるデータを削除する
dfB=dfA.dropna(subset=["国語"])
# 結果表示
print("削除前",dfA)
print("\n")
print("削除後",dfB)
【結果】
削除前 国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
三郎 NaN NaN
四郎 4.0 8.0
削除後 国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
四郎 4.0 8.0
【書式】
df=df.fillna(df.mean())
※ここでいう平均は、欠損値以外の平均値
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
# 欠損値のあるデータを削除する
# 結果表示
print("削除前",dfA)
print("\n")
print("削除後",dfB)
【結果】
削除前 国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
三郎 NaN NaN
四郎 4.0 8.0
削除後 国語 数学
一郎 1.000000 5.0
二郎 2.000000 6.5
三郎 2.333333 6.5
四郎 4.000000 8.0
【書式】
df=df.fillna(method="ffill")
【コード】
import pandas as pd
data={
"国語":[1,2,None,4],
"数学":[5,None,None,8]
}
idx=["一郎","二郎","三郎","四郎"]
dfA=pd.DataFrame(data,index=idx)
# 欠損値のあるデータを削除する
dfB=dfA.fillna(method='ffill')
# 結果表示
print("削除前",dfA)
print("\n")
print("削除後",dfB)
【結果】
削除前 国語 数学
一郎 1.0 5.0
二郎 2.0 NaN
三郎 NaN NaN
四郎 4.0 8.0
削除後 国語 数学
一郎 1.0 5.0
二郎 2.0 5.0
三郎 2.0 5.0
四郎 4.0 8.0
三郎の国語の点数が、二郎と同じ2に変更された。