どうもニコイチです。前回の記事で、基礎統計量やグラフ、相関分析に関する見方を学びました。今回は、データを分析する際の基本的なステップとして、「仮説を立てること」の重要性とその検証方法を学びます。データをただ眺めるだけでは意味を見出すのが難しいため、具体的な仮説を立てながら進めていきます。
以下は、定期預金契約に関するデモデータを使った仮説の例です。
Pythonでデータ分析を始めよう!初心者向けガイド | いきかちガジェットゲームLab:ガジェット・ゲーム・DX
どうもニコイチです。今回はdemoデータを使って実際に予測モデルを作れるようになることを目的とした、シリーズをご紹介します。Pyhonってなに?どうやってつかうの?と戸惑って…
目次
仮説の例
- 前回のキャンペーンで成功した人は、再度申し込む可能性が高いのではないか?
- 収入が高いほど定期預金を申し込む可能性が高いのではないか?
- 既婚者は未婚者よりも定期預金を申し込む傾向があるのではないか?
今回は、仮説1を基に「前回キャンペーンの成果(poutcome
)と定期預金申し込み有無(y
)」の関係性を調べます。
データ解析の基本:クロス集計
仮説検証の第一歩として、pandas.crosstab
関数を使用したクロス集計を行います。この関数は、カテゴリーデータの分布や関連性を簡単に確認するのに便利です。
import pandas as pd
# データ読み込み
df = pd.read_csv('demo_data.csv')
# クロス集計
cross_tab = pd.crosstab(df['poutcome'], df['y'], margins=True)
print(cross_tab)
実行結果例
y no yes All
poutcome
failure 300 50 350
success 150 200 350
unknown 400 50 450
All 850 300 1150
- 縦軸:前回のキャンペーン結果(
poutcome
) - 横軸:定期預金申し込み有無(
y
) - 合計:
margins=True
オプションで全体の合計値を表示
申込率の計算
出現数の絶対値だけでは比較が難しいため、申込率(yesの割合)を算出します。
# 各カテゴリの申込率を計算
cross_tab['rate'] = cross_tab['yes'] / cross_tab['All']
print(cross_tab)
実行結果例
y no yes All rate
poutcome
failure 300 50 350 0.1429
success 150 200 350 0.5714
unknown 400 50 450 0.1111
All 850 300 1150 -
success
の申込率が最も高く、約57%となっています。
データ操作の基本:カラムの値変更と新規追加
- カラムの値を変更する例 数値型のカラムすべてに1を足したい場合:
df['balance'] = df['balance'] + 1
- 新しいカラムを追加する例 各行の
balance
を基にした新しい指標を計算して追加:df['balance_ratio'] = df['balance'] / df['balance'].sum()
データの可視化
データの傾向を視覚的に確認するために、以下の手法を使います。
1. 棒グラフ
カテゴリーデータの頻度を確認。
import matplotlib.pyplot as plt
df['poutcome'].value_counts().plot(kind='bar')
plt.xlabel('Poutcome')
plt.ylabel('Frequency')
plt.title('Distribution of Poutcome')
plt.show()
2. ヒートマップ
クロス集計結果を視覚化。
import seaborn as sns
sns.heatmap(cross_tab.iloc[:-1, :-1], annot=True, fmt='d', cmap='Blues')
plt.title('Poutcome vs Subscription')
plt.show()
まとめ
- 仮説を立てることで、データ分析が効率的に進められます。
- クロス集計や申込率の計算は、カテゴリーデータの関連性を調べる基本的な手法です。
- 可視化を組み合わせることで、データの傾向をより直感的に理解できます。
コメント