初心者のためのpython入門

自分がつまづいたところやつまづきやすいところを中心に書いていきます。また、役に立つライブラリの紹介などをしていきます。

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となっています。そのほかにも、指定できるオプションはありますが、使用頻度は高くないので説明しません。

あとがき

お疲れさまでした。今回は、欠損値と要約統計量を求めるメソッドについて説明しました。次回は、欠損値の処理について説明したいと思います。