pandas~要約統計量編~
前書き
前回に引き続き、今回もpandasの説明をします。今回は、欠損値と要約統計量を求めるメソッドについて説明(紹介)します。
欠損値
まずは、サンプルをみましょう。
# sample.py import pandas as pd import numpy as np sdata = {'A': 80, 'B': 70, 'C': 60, 'D': 0} stage = ['S', 'A', 'B', 'C', 'D'] data = pd.Series(sdata, index=stage) print(data)
# 実行結果 S NaN # 欠損値 A 80.0 B 70.0 C 60.0 D 0.0 dtype: float64
実行結果は上記のようになります。この例の場合は、sdataの中に見つかった4つのデータ(A, B, C, D)は正しくインデックスと対応付けられています。'S'に対応するデータは、sdataに存在しないためNaN(not a number)となります。pandasは、NaNを欠損値またはNA値として扱います。対応するデータが存在しないときは、欠損値が自動的に補完されます。
要約統計量
pandasには、要約統計量を計算する様々なメソッドがあります。ここでは、重要なものをいくつか説明します。
# sample.py import pandas as pd import numpy as np # np.nanにより欠損値にすることができる data = pd.DataFrame([[1.0, 2.0], [np.nan, 4.0], [5.0, np.nan], [7.0, 8.0]], index=['one', 'two', 'three', 'four'], columns=['a', 'b']) print(data) print(data.describe()) # 複数の要約統計量を計算する print(data.sum()) # 行の合計値 print(data.sum(axis=1)) # 列の合計値 print(data.mean()) # 行の平均値 print(data.std()) # 行の標準偏差 print(data.count()) # 行の欠損値ではない要素の数
# 実行結果 # print(data) a b one 1.0 2.0 two NaN 4.0 three 5.0 NaN four 7.0 8.0 # print(data.describe()) a b count 3.000000 3.000000 mean 4.333333 4.666667 std 3.055050 3.055050 min 1.000000 2.000000 25% 3.000000 3.000000 50% 5.000000 4.000000 75% 6.000000 6.000000 max 7.000000 8.000000 # print(data.sum()) a 13.0 b 14.0 dtype: float64 # print(data.sum(axis=1)) one 3.0 two 4.0 three 5.0 four 15.0 dtype: float64 # print(data.mean()) a 4.333333 b 4.666667 dtype: float64 # print(data.std()) a 3.05505 b 3.05505 dtype: float64 # print(data.count()) a 3 b 3 dtype: int64
実行結果は上記のようになります。describe()は複数の要約統計量を計算します。sum()・mean()・std()は合計値、平均値、標準偏差を計算します。また、axis=1のように指定することにより、計算対象の軸を変更できます。count()は欠損値以外の要素の個数を計算します。
よく使う要約統計量の一覧は以下になります。
メソッド | 意味 |
---|---|
describe | 複数の要約統計量を求める |
count | NA値ではない要素の個数を求める |
min, max | 最小値・最大値を求める |
argmin, argmax | 最小値・最大値が得られた場所のインデックスを求める |
sum | 合計値を求める |
mean | 平均値を求める |
median | 中央値を求める |
var | 分散を求める |
std | 標準偏差を求める |
cumsum | 累積和を求める |
また、上記のメソッドにおいてdescribe以外はaxisにより計算軸を指定することができます。axis=0が行・axis=1が列です。デフォルトではaxis=0となっています。そのほかにも、指定できるオプションはありますが、使用頻度は高くないので説明しません。
あとがき
お疲れさまでした。今回は、欠損値と要約統計量を求めるメソッドについて説明しました。次回は、欠損値の処理について説明したいと思います。