データ分析を行う際、任意のグループごとに平均などの統計量を算出することがよくあります。
本記事では、Pythonのデータ分析用ライブラリであるPandasを用いて、前述の操作を行う方法について解説します。
使用するメソッドと実装例
グループごとの統計量を算出する処理に必要なメソッド、その使い方を紹介します。
使用するメソッド
使用するメソッドは、Pandasのgroupbyメソッドと計算用メソッド(後述)です。
対象のDataFrameに対して以下のようにメソッドを適用することにより、出力結果として指定の列におけるグループ別の統計量が得られます。
DataFrame.groupby('任意の列名①')['任意の列名②'].メソッド() … # 列名①:グループ分けの対象となる列 # 列名②:統計量算出の対象となる列
実装例
前述のやり方に従って処理を実装してみます。
import pandas as pd
df = pd.DataFrame([['A', 'Male', 15], ['B', 'Female', 16],
['C', 'Male', 17], ['D', 'Female', 18]],
columns=['name', 'sex', 'age'], index=[101, 102, 103, 104])
print('元のDataFrame')
print(df)
temp = pd.DataFrame()
temp['sum'] = df.groupby('sex')['age'].sum() # 合計値
temp['max'] = df.groupby('sex')['age'].max() # 最大値
temp['min'] = df.groupby('sex')['age'].min() # 最小値
temp['ave'] = df.groupby('sex')['age'].mean() # 平均値
temp['median'] = df.groupby('sex')['age'].median() # 中央値
print('\nsexのグループ別統計量')
print(temp)
このプログラムを実行すると以下の出力結果が得られます。
元のDataFrame name sex age 101 A Male 15 102 B Female 16 103 C Male 17 104 D Female 18 sexのグループ別統計量 sum max min ave median sex Female 34 18 16 17.0 17.0 Male 32 17 15 16.0 16.0