Pythonでデータ分析の基礎を身につける方法
小さな分析を1つ、最後までやり切ってみましょう
「データ分析」という言葉はよく聞くけれど、具体的に何をするものなのか実感が湧かない、という方は多いと思います。この記事では、難しい数学の知識は使わずに、Pythonで小さなデータ分析を1つ、最後までやり切る体験をしてもらいます。家計簿の自動集計の記事で使ったpandas・matplotlibの、いわば「次のステップ」にあたる内容です。
- 1
- 2
- 3
- 4
- 5
データ分析って何をすること?
「データ分析」と聞くと難しそうに感じますが、やっていることはシンプルで、基本的には次の3ステップの繰り返しです。
- 集める:分析したい数字やデータをまとめる(CSVファイルなど)
- 整理する:平均を出す、グループごとに分けるなど、扱いやすい形にする
- 傾向をつかむ:グラフにするなどして、数字の並びだけでは気づきにくい傾向を見つける
特別な数学の知識がなくても、この3ステップは十分に体験できます。まずは手を動かして、小さな分析を1つ最後まで終わらせてみましょう。
AI・データ分析の分野は今後も人材需要が拡大していくと言われています。今回学ぶ「集計してグラフにする」という基本操作は、その入口にあたる内容です。
用意するもの
- Python本体
- コードを書くためのエディタ(VS Codeなど)
- pandas(データを表として扱うライブラリ)
- matplotlib・japanize-matplotlib(グラフ作成用ライブラリ)
Pythonのインストール、コードを書くためのエディタ(VS Code)の準備、コードの書き方・実行方法がまだの方は、先に「Pythonを始める前に:インストールとエディタの準備」を済ませてから、この続きに進んでください。
ターミナルで以下のコマンドを実行し、必要なライブラリをまとめてインストールします。
pip install pandas matplotlib japanize-matplotlib
使うデータを用意する
今回は、クラスの小テストの結果を例に使います。「名前」「教科」「点数」の3列だけのシンプルな形式です。test_scores.csvという名前で、以下のような内容を保存してください。
| 名前 | 教科 | 点数 |
|---|---|---|
| Aさん | 国語 | 78 |
| Aさん | 算数 | 92 |
| Bさん | 国語 | 65 |
| Bさん | 算数 | 70 |
| Cさん | 国語 | 88 |
| Cさん | 算数 | 81 |
ここでは小テストの点数を例にしていますが、同じ「名前・カテゴリ・数値」という形式に置き換えられるデータであれば、アンケートの満足度や、日々の運動記録など、どんなものでも同じ手順で分析できます。
平均・合計・最大最小を求める
まずは、pandasでCSVを読み込み、点数全体の基本的な統計を求めてみます。
import pandas as pd
df = pd.read_csv("test_scores.csv", encoding="utf-8-sig")
print("平均点:", df["点数"].mean())
print("合計点:", df["点数"].sum())
print("最高点:", df["点数"].max())
print("最低点:", df["点数"].min())
実行すると、点数列の平均・合計・最高点・最低点が表示されます。df["点数"]のように列名を指定するだけで、その列全体に対する計算がまとめて行えるのが、pandasの基本的な考え方です。
教科ごとに集計する
全体の平均だけでなく、「教科ごと」のように条件を分けて集計したい場合はgroupbyを使います。
subject_mean = df.groupby("教科")["点数"].mean()
print(subject_mean)
実行すると、国語・算数それぞれの平均点が表示されます。「全体の平均」だけを見ていては気づけない、教科ごとの傾向の違いが見えるようになります。
groupby("教科")の部分をgroupby("名前")に変えれば、今度は生徒ごとの平均点を求めることもできます。同じ書き方で、見たい切り口を自由に変えられるのがgroupbyの便利なところです。
グラフ化して傾向をつかむ
最後に、教科ごとの平均点を棒グラフにして、数字を目で見て理解できるようにします。ここでも他のPython記事と同じく、Tkinterのウィンドウにグラフを表示します。
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import japanize_matplotlib
fig = Figure(figsize=(6, 4))
ax = fig.add_subplot(111)
subject_mean.plot.bar(ax=ax, color="#3e8f5c")
ax.set_title("教科別の平均点")
ax.set_ylabel("点数")
ax.set_xlabel("教科")
fig.tight_layout()
fig.savefig("subject_mean.png")
root = tk.Tk()
root.title("教科別の平均点")
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()
root.mainloop()
実行すると、教科ごとの平均点を表す棒グラフのウィンドウが開き、subject_mean.pngとして画像も保存されます。数字だけの一覧表よりも、グラフにしたほうがひと目で傾向をつかみやすいことを実感できるはずです。
ここからどう学びを広げるか
今回学んだ「平均・集計・グラフ化」は、データ分析のほんの入口です。慣れてきたら、次のようなテーマに進むと学びが広がります。
- 相関分析:2つの数値の間に関係があるかを調べる(例:勉強時間と点数の関係)
- 欠損値の処理:データの一部が空欄になっている場合の扱い方
- より大きなデータセットの練習:公開されている練習用データセットで、より実務に近い分析を体験する
- 機械学習の入門:集計・可視化の先にある、予測・分類といった発展的な分野
AI・データ分析関連の求人は増加傾向にあると言われていますが、実際に評価されやすいのは「文法を知っている」ことよりも「実際にデータを触って分析した経験」です。今回のような小さな分析を積み重ねていくことが、遠回りに見えて確実な一歩になります。
うまくいかないときのトラブルシューティング
まとめ
pandasを使って、平均・合計・最大最小を求める基本操作から、groupbyによるグループ集計、そしてグラフ化までの一連の流れを紹介しました。「小さな分析を1つ最後までやり切る」という今回の体験が、データ分析・AI関連分野への学びを広げていく最初の一歩になれば幸いです。

コメント