Pythonデータ分析入門|初心者向けpandasの基本を解説

python
副業・キャリア入門

Pythonでデータ分析の基礎を身につける方法

小さな分析を1つ、最後までやり切ってみましょう

プログラミング未経験OK 所要時間の目安:30分程度

「データ分析」という言葉はよく聞くけれど、具体的に何をするものなのか実感が湧かない、という方は多いと思います。この記事では、難しい数学の知識は使わずに、Pythonで小さなデータ分析を1つ、最後までやり切る体験をしてもらいます。家計簿の自動集計の記事で使ったpandas・matplotlibの、いわば「次のステップ」にあたる内容です。

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

データ分析って何をすること?

「データ分析」と聞くと難しそうに感じますが、やっていることはシンプルで、基本的には次の3ステップの繰り返しです。

  1. 集める:分析したい数字やデータをまとめる(CSVファイルなど)
  2. 整理する:平均を出す、グループごとに分けるなど、扱いやすい形にする
  3. 傾向をつかむ:グラフにするなどして、数字の並びだけでは気づきにくい傾向を見つける

特別な数学の知識がなくても、この3ステップは十分に体験できます。まずは手を動かして、小さな分析を1つ最後まで終わらせてみましょう。

MEMO

AI・データ分析の分野は今後も人材需要が拡大していくと言われています。今回学ぶ「集計してグラフにする」という基本操作は、その入口にあたる内容です。

用意するもの

  • Python本体
  • コードを書くためのエディタ(VS Codeなど)
  • pandas(データを表として扱うライブラリ)
  • matplotlib・japanize-matplotlib(グラフ作成用ライブラリ)
INFO

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
MEMO

ここでは小テストの点数を例にしていますが、同じ「名前・カテゴリ・数値」という形式に置き換えられるデータであれば、アンケートの満足度や、日々の運動記録など、どんなものでも同じ手順で分析できます。

平均・合計・最大最小を求める

まずは、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)

実行すると、国語・算数それぞれの平均点が表示されます。「全体の平均」だけを見ていては気づけない、教科ごとの傾向の違いが見えるようになります。

POINT

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つの数値の間に関係があるかを調べる(例:勉強時間と点数の関係)
  • 欠損値の処理:データの一部が空欄になっている場合の扱い方
  • より大きなデータセットの練習:公開されている練習用データセットで、より実務に近い分析を体験する
  • 機械学習の入門:集計・可視化の先にある、予測・分類といった発展的な分野
MEMO

AI・データ分析関連の求人は増加傾向にあると言われていますが、実際に評価されやすいのは「文法を知っている」ことよりも「実際にデータを触って分析した経験」です。今回のような小さな分析を積み重ねていくことが、遠回りに見えて確実な一歩になります。

うまくいかないときのトラブルシューティング

数学が苦手でもデータ分析はできますか?
この記事で扱った平均・合計・最大最小・グループ集計は、算数レベルの内容です。相関分析や機械学習など、より進んだ分野に進むタイミングで少しずつ数学の知識を補っていけば十分です。最初から高度な数学は必要ありません。
Excelでも同じことができるのでは?
少量のデータであればExcelでも十分です。ただし、データの量が増えたり、同じ集計を毎回繰り返したりする場合は、コード化して再利用できるPythonのほうが効率的です。また、求人市場ではPythonでのデータ分析スキルが評価されやすい傾向もあります。
この後、具体的に何を学べばいいですか?
「ここからどう学びを広げるか」で紹介した、相関分析や欠損値処理から試してみるのがおすすめです。同じpandas・matplotlibの延長線上で学べるため、今回の内容がそのまま土台になります。

まとめ

pandasを使って、平均・合計・最大最小を求める基本操作から、groupbyによるグループ集計、そしてグラフ化までの一連の流れを紹介しました。「小さな分析を1つ最後までやり切る」という今回の体験が、データ分析・AI関連分野への学びを広げていく最初の一歩になれば幸いです。

他の自動化アイデアも見てみる

家計簿の自動集計やファイル整理など、Pythonでできる生活の自動化アイデアを6つ紹介しています。

6テーマ一覧を見る

コメント

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