はじめに
前回は、データの読み込みとクレンジングについて学びました。今回は、データの基本統計量と集計方法について詳しく解説します。データの基本統計量を把握することで、データの全体像を理解し、重要な洞察を得ることができます。また、集計操作を行うことで、データの要約やグループ化を通じてさらに深い分析が可能になります。
基本統計量の計算
基本統計量は、データの中心傾向や分散を示す指標です。Pandasを使用すると、簡単に基本統計量を計算することができます。
データの読み込み
まず、サンプルデータを読み込みます。
import pandas as pd
# サンプルデータの読み込み
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
df = pd.read_csv(url)
# データの先頭5行を表示
print(df.head())
基本統計量の表示
Pandasのdescribe
メソッドを使用すると、データフレームの基本統計量を一括で計算できます。
# 基本統計量の表示
print(df.describe())
このコードを実行すると、各列の件数、平均値、標準偏差、最小値、四分位数、最大値などが表示されます。
PassengerId Age Fare
count 891.000000 714.000000 891.000000
mean 446.000000 29.699118 32.204208
std 257.353842 14.526497 49.693429
min 1.000000 0.420000 0.000000
25% 223.500000 20.125000 7.910400
50% 446.000000 28.000000 14.454200
75% 668.500000 38.000000 31.000000
max 891.000000 80.000000 512.329200
個別の基本統計量の計算
個別の基本統計量も、Pandasの各種メソッドを使用して計算できます。
# 平均値の計算
print(df['Age'].mean())
# 中央値の計算
print(df['Age'].median())
# 標準偏差の計算
print(df['Age'].std())
# 最小値と最大値の計算
print(df['Age'].min())
print(df['Age'].max())
データの集計
データの集計は、データをグループ化し、各グループの集計値を計算する操作です。Pandasのgroupby
メソッドを使用すると、簡単に集計操作を行うことができます。
グループ化と集計
以下は、性別ごとに年齢の平均値を計算する例です。
# 性別ごとに年齢の平均値を計算
grouped = df.groupby('Sex')['Age'].mean()
print(grouped)
このコードを実行すると、男性と女性のそれぞれの平均年齢が表示されます。
Sex
female 27.915709
male 30.726645
Name: Age, dtype: float64
複数の集計操作
複数の列に対して異なる集計操作を同時に行うこともできます。
# 性別ごとに年齢の平均値と運賃の中央値を計算
grouped = df.groupby('Sex').agg({'Age': 'mean', 'Fare': 'median'})
print(grouped)
このコードを実行すると、性別ごとの年齢の平均値と運賃の中央値が表示されます。
Age Fare
Sex
female 27.915709 23.0000
male 30.726645 10.5000
ピボットテーブルの作成
Pandasのpivot_table
メソッドを使用すると、Excelのピボットテーブルのようにデータを要約することができます。
# ピボットテーブルの作成
pivot_table = pd.pivot_table(df, values='Fare', index='Sex', columns='Pclass', aggfunc='mean')
print(pivot_table)
このコードを実行すると、性別とクラスごとの運賃の平均値が表示されます。
Pclass 1 2 3
Sex
female 106.125798 21.970121 16.118810
male 67.226127 19.741782 12.661633
実践例:Titanicデータセットの集計と可視化
ここでは、Titanicデータセットを使用して、データの集計と基本統計量の計算を実際に行います。
データの読み込み
import pandas as pd
# Titanicデータセットの読み込み
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
df = pd.read_csv(url)
# データの先頭5行を表示
print(df.head())
基本統計量の計算
# 基本統計量の表示
print(df.describe())
性別ごとの生存率の計算
# 性別ごとの生存率を計算
survival_rate = df.groupby('Sex')['Survived'].mean()
print(survival_rate)
クラスごとの平均運賃の計算
# クラスごとの平均運賃を計算
mean_fare = df.groupby('Pclass')['Fare'].mean()
print(mean_fare)
ピボットテーブルの作成
# ピボットテーブルの作成
pivot_table = pd.pivot_table(df, values='Fare', index='Sex', columns='Pclass', aggfunc='mean')
print(pivot_table)
グラフの作成
集計結果をグラフで可視化することで、データの理解がさらに深まります。
import matplotlib.pyplot as plt
# 性別ごとの生存率を棒グラフで表示
survival_rate.plot(kind='bar')
plt.title('Survival Rate by Sex')
plt.xlabel('Sex')
plt.ylabel('Survival Rate')
plt.show()
# クラスごとの平均運賃を棒グラフで表示
mean_fare.plot(kind='bar')
plt.title('Average Fare by Class')
plt.xlabel('Pclass')
plt.ylabel('Average Fare')
plt.show()
# ピボットテーブルのヒートマップを表示
import seaborn as sns
sns.heatmap(pivot_table, annot=True, fmt=".2f")
plt.title('Average Fare by Sex and Class')
plt.show()
まとめ
今回は、データの基本統計量と集計方法について学びました。基本統計量を把握することでデータの全体像を理解し、集計操作を行うことでデータの要約やグループ化を通じてさらに深い分析が可能になります。次回は、データの可視化について詳しく解説します。
コメント