2020年5月25日月曜日

【pandas】describeによるデータフレームの統計量算出

 データ分析用ライブラリpandasのデータフレームに対する平均、標準偏差などの統計量の求めかたを説明する。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. describeによる統計量算出

 pandas.DataFrame.describeを用いるとデータフレームについて以下の統計量が取得できる。

項目 定義 個別のメソッド
count データ数 count
mean 平均 mean
std 標準偏差 std
min 最小値 min
25% 25パーセンタイル
50% 50パーセンタイル・中央値
75% 75パーセンタイル
max 最大値 max


import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.describe())

実行結果

             身長       体重
count    5.000000   5.000000 
 mean  172.600000  71.200000 
  std    7.536577  14.669697 
  min  162.000000  53.000000 
  25%  169.000000  59.000000 
  50%  174.000000  75.000000 
  75%  176.000000  82.000000 
  max  182.000000  87.000000 


2. 項目別の統計量算出

 上表に示すそれぞれの統計量についてのメソッドを使うことで項目別の統計量が取得できる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.min())

実行結果

身長    162
体重     53
dtype: int64


 データフレームのカラムを指定すれば特定のカラムについての統計量のみ取得できる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df['身長'].min())

実行結果

162


3. 相関係数の算出

 データフレームのcolumns間の相関係数を求めるにはcorrを用いる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.corr())

実行結果

         身長     体重
身長  1.00000  0.96645 
体重  0.96645  1.00000 


 相関係数を算出する場合、グラフ描画ライブラリmatplotlibにより散布図を一緒に表示すると分かりやすい。
散布図の作成方法についてはこちら(【matplotlib】散布図の作成と体裁の変更)。

import pandas as pd
import matplotlib.pyplot as plt

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.corr())

plt.scatter(df['身長'], df['体重'])
plt.show()

実行結果

         身長     体重
身長  1.00000  0.96645 
体重  0.96645  1.00000 



4. リファレンス

pandas > pandas.DataFrame.describe
pandas > pandas.DataFrame.count
pandas > pandas.DataFrame.min
pandas > pandas.DataFrame.max
pandas > pandas.DataFrame.mean
pandas > pandas.DataFrame.std

使用したバージョン:Python 3.7.0/pandas 1.0.3

0 件のコメント:

コメントを投稿