Pythonでのデータ分析入門
第3回: データの基本統計量と集計

Python

はじめに

前回は、データの読み込みとクレンジングについて学びました。今回は、データの基本統計量と集計方法について詳しく解説します。データの基本統計量を把握することで、データの全体像を理解し、重要な洞察を得ることができます。また、集計操作を行うことで、データの要約やグループ化を通じてさらに深い分析が可能になります。

基本統計量の計算

基本統計量は、データの中心傾向や分散を示す指標です。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()

まとめ

今回は、データの基本統計量と集計方法について学びました。基本統計量を把握することでデータの全体像を理解し、集計操作を行うことでデータの要約やグループ化を通じてさらに深い分析が可能になります。次回は、データの可視化について詳しく解説します。

コメント

タイトルとURLをコピーしました