学習ガイド

Pythonで始めるデータ分析入門|pandasの基本操作を実践で学ぶ

15分で読めます
この記事のポイント

Pythonのpandasライブラリを使ったデータ分析の基本を解説。CSV読み込み、データの加工、集計、可視化まで、実践的なコード例で学べます。

editor

チョットデキル編集部

チョットデキルの編集部です。プログラミング学習に役立つ情報をお届けします。

データ分析は、ビジネスの意思決定から学術研究まで、あらゆる分野で求められるスキルです。Pythonはデータ分析の分野で最も広く使われているプログラミング言語であり、中でもpandasというライブラリは、表形式のデータを直感的に操作できる強力なツールとして定番の存在です。本記事では、pandasの基本的なデータ構造の理解からCSVの読み込み、データの加工・集計、そしてmatplotlibによる可視化まで、実践的なコード例を交えながら一通りの流れを解説します。Pythonとは?をまだ読んでいない方は、先にそちらで概要を掴んでおくとスムーズに進められます。

Python データ分析入門 とは

Python と pandas / NumPy / Matplotlib を使って、CSV や Excel のデータを集計・可視化・前処理する一連の手順のことです。Jupyter Notebook を使えば 1 行ずつ結果を確認しながら進められます。

TL;DR 早わかりサマリー

  • pandas を使えば、Excel で数時間かかる集計が Python なら 数行・数秒で終わります
  • 覚えるべきは DataFrame の読み込み・整形・集計・可視化の 4 ステップ
  • Jupyter Notebook / Google Colab で環境構築不要に始められます
  • AI 時代でも、データ整形と前処理の地力は人間が持つべき必須スキル

pandasの基本データ構造:SeriesとDataFrame

pandasには2つの主要なデータ構造があります。1次元のデータを扱う「Series」と、2次元の表形式データを扱う「DataFrame」です。

Python

import pandas as pd # Seriesは1次元のデータ scores = pd.Series([85, 92, 78, 95, 88], name="数学") print(scores) print(f"平均点: {scores.mean()}")

Seriesはインデックス付きの1次元配列で、リストや辞書から簡単に作成できます。一方、DataFrameは複数のSeriesを束ねたような構造で、Excelのスプレッドシートに近い感覚でデータを扱えます。

Python

# DataFrameは2次元の表データ data = { "名前": ["田中", "佐藤", "鈴木", "高橋", "伊藤"], "数学": [85, 92, 78, 95, 88], "英語": [90, 85, 82, 88, 95], "国語": [78, 88, 90, 82, 85] } df = pd.DataFrame(data) print(df)

実行すると、行と列で構成された見やすい表が出力されます。DataFrameはデータ分析のほぼすべての場面で使う基本構造なので、しっかり理解しておきましょう。

CSVファイルの読み込み

実際のデータ分析では、CSVファイルからデータを読み込むケースが大半です。pandasのread_csv()関数を使えば、たった1行でDataFrameとして読み込めます。

Python

import pandas as pd # CSVファイルを読み込む df = pd.read_csv("sales_data.csv") # データの概要を確認する print(df.shape) # 行数と列数 print(df.head()) # 先頭5行を表示 print(df.dtypes) # 各列のデータ型 print(df.describe()) # 基本統計量(平均、標準偏差、最小値、最大値など)

shapeで全体のサイズを確認し、head()で先頭のデータを目視確認し、describe()で基本的な統計量を一括で把握する。この3つはデータを読み込んだ直後に必ず実行する定番の操作です。

エンコーディングの問題が発生する場合は、以下のように指定します。

Python

df = pd.read_csv("sales_data.csv", encoding="cp932") # Windows環境のCSV df = pd.read_csv("sales_data.csv", encoding="utf-8-sig") # BOM付きUTF-8

データの選択とフィルタリング

DataFrameから必要なデータだけを取り出す操作は、分析の基本中の基本です。列の選択、条件によるフィルタリング、複数条件の組み合わせを見ていきましょう。

Python

# 特定の列を選択 names = df["名前"] subset = df[["名前", "数学"]] # 複数列を選択 # 条件によるフィルタリング high_math = df[df["数学"] >= 90] print(high_math)

複数の条件を組み合わせる場合は、&(AND)や|(OR)を使い、各条件を括弧で囲みます。

Python

# 数学90点以上 かつ 英語85点以上 excellent = df[(df["数学"] >= 90) & (df["英語"] >= 85)] print(excellent) # 数学95点以上 または 英語95点以上 top_students = df[(df["数学"] >= 95) | (df["英語"] >= 95)] print(top_students)

この条件フィルタリングは、SQLのWHERE句に相当する操作です。pandasでは直感的なPython式で同じことを表現できます。

データの加工と新しい列の追加

既存のデータから新しい列を計算して追加する操作も頻繁に行います。

Python

# 合計点を計算して新しい列を追加 df["合計"] = df["数学"] + df["英語"] + df["国語"] # 平均点の列を追加 df["平均"] = df[["数学", "英語", "国語"]].mean(axis=1) # 条件に基づいてラベルを付ける df["評価"] = df["平均"].apply(lambda x: "A" if x >= 90 else "B" if x >= 80 else "C") print(df)

apply()メソッドを使えば、任意の関数を各行に適用できます。ここではlambda式で平均点に応じた評価ラベルを付けています。

groupbyによる集計

データ分析で最も強力な機能の1つが、グループ化と集計です。pandasのgroupby()は、SQLのGROUP BYと同じ発想で、特定の列の値ごとにデータをまとめて集計できます。

Python

# 売上データの例 sales_data = { "店舗": ["東京", "大阪", "東京", "大阪", "東京", "大阪"], "商品": ["A", "A", "B", "B", "A", "B"], "売上": [100, 80, 150, 120, 90, 110], "個数": [10, 8, 15, 12, 9, 11] } sales = pd.DataFrame(sales_data) # 店舗ごとの売上合計 print(sales.groupby("店舗")["売上"].sum()) # 店舗ごとの複数の統計量を一括算出 print(sales.groupby("店舗")["売上"].agg(["sum", "mean", "count"]))

さらに、複数の列でグループ化することも可能です。

Python

# 店舗と商品の組み合わせごとに集計 result = sales.groupby(["店舗", "商品"])["売上"].sum() print(result)

agg()メソッドを使えば、合計・平均・件数などの複数の集計関数を一度に適用できるため、レポート作成時に非常に便利です。

欠損値の処理

実データには欠損値(NaN)が含まれていることがほとんどです。pandasは欠損値の検出と処理を簡単に行える機能を備えています。

Python

# 欠損値の確認 print(df.isnull().sum()) # 各列の欠損値の数 # 欠損値を特定の値で埋める df["売上"] = df["売上"].fillna(0) # 欠損値を平均値で埋める df["数学"] = df["数学"].fillna(df["数学"].mean()) # 欠損値を含む行を削除する df_clean = df.dropna()

欠損値をどう処理するかは分析の結果に直接影響します。0で埋めるのか、平均値で埋めるのか、行ごと削除するのか。データの性質と分析目的に応じて適切な方法を選ぶことが重要です。

matplotlibによるデータの可視化

集計したデータをグラフにすることで、数値だけでは見えにくい傾向やパターンを視覚的に把握できます。Pythonの可視化ライブラリの定番であるmatplotlibを使ってみましょう。

Python

import matplotlib.pyplot as plt # 棒グラフ:店舗ごとの売上合計 shop_sales = sales.groupby("店舗")["売上"].sum() shop_sales.plot(kind="bar") plt.title("店舗別売上合計") plt.ylabel("売上") plt.tight_layout() plt.show()

pandasのDataFrameやSeriesにはplot()メソッドが組み込まれており、matplotlibと連携して簡潔なコードでグラフを描画できます。

Python

# 折れ線グラフ:月別の売上推移 monthly_data = { "月": ["1月", "2月", "3月", "4月", "5月", "6月"], "売上": [120, 135, 150, 142, 160, 175] } monthly = pd.DataFrame(monthly_data) monthly.plot(x="月", y="売上", kind="line", marker="o") plt.title("月別売上推移") plt.ylabel("売上(万円)") plt.grid(True) plt.tight_layout() plt.show()

kind引数を変えるだけで、棒グラフ(bar)、折れ線グラフ(line)、円グラフ(pie)、散布図(scatter)など、さまざまな種類のグラフを作成できます。

データ分析の実践的な流れ

ここまで学んだ内容を組み合わせて、データ分析の一連の流れを実践してみましょう。

Python

import pandas as pd import matplotlib.pyplot as plt # 1. データの読み込み df = pd.read_csv("sales_report.csv") # 2. データの概要確認 print(f"データサイズ: {df.shape}") print(df.head()) print(df.describe()) # 3. 欠損値の処理 df = df.dropna(subset=["売上"]) # 売上が欠損している行を除外 # 4. データの加工 df["月"] = pd.to_datetime(df["日付"]).dt.month # 5. 集計 monthly_sales = df.groupby("月")["売上"].agg(["sum", "mean", "count"]) monthly_sales.columns = ["合計売上", "平均売上", "取引件数"] print(monthly_sales) # 6. 可視化 fig, axes = plt.subplots(1, 2, figsize=(12, 5)) monthly_sales["合計売上"].plot(kind="bar", ax=axes[0], title="月別合計売上") monthly_sales["取引件数"].plot(kind="line", ax=axes[1], title="月別取引件数", marker="o") plt.tight_layout() plt.show()

読み込み、確認、前処理、加工、集計、可視化という流れは、データ分析における基本のワークフローです。データの規模や目的が変わっても、この流れは共通しています。

さらに学びを深めるには

pandasとmatplotlibの基本操作を身につけたら、次のステップとして以下の領域に進んでみてください。

  • 複数のDataFrameを結合するmerge()concat()を使ったデータの統合
  • ピボットテーブル(pivot_table())によるクロス集計
  • seabornライブラリを使ったより美しいグラフの作成

また、近年はAIを活用したデータ分析も注目されています。AIを使ったデータ分析入門では、AIツールと組み合わせた効率的な分析手法を紹介していますので、あわせて参考にしてみてください。

データ分析のスキルを確実に身につけるには、Pythonの基礎文法をしっかり理解しておくことが欠かせません。変数、リスト、辞書、ループ、関数といった基本構文があやふやなまま進めると、pandasの操作でつまずく場面が増えてしまいます。「Python基礎」コースでは、これらの基礎をハンズオン形式で体系的に学べます。データ分析の土台を固めたい方は、ぜひ受講を検討してみてください。

pandas の主要メソッド 10 選

これだけ覚えれば実務の 8 割をカバーできる、pandas の主要操作です。

Python

import pandas as pd # 1. CSV 読み込み df = pd.read_csv("sales.csv") # 2. 上から 5 行確認 df.head() # 3. データ型と件数の概要 df.info() # 4. 統計サマリ df.describe() # 5. 条件抽出 df[df["amount"] > 10000] # 6. ソート df.sort_values("date", ascending=False) # 7. グループ集計 df.groupby("category")["amount"].sum() # 8. ピボット df.pivot_table(index="category", columns="month", values="amount", aggfunc="sum") # 9. マージ (JOIN 相当) pd.merge(df_orders, df_users, on="user_id", how="left") # 10. グラフ描画 df.groupby("month")["amount"].sum().plot(kind="bar")

この 10 個を組み合わせれば、業務レポートのほとんどが書けます。

業務で起きる落とし穴と対処法

実務でデータ分析をすると、必ずぶつかる問題があります。

1. 日付の型ズレ CSV では日付が文字列として読み込まれます。pd.to_datetime(df["date"]) で datetime 型に変換します。

2. 欠損値の扱い NaN を 0 に置き換えるか、行ごと削除するかは意味が変わります。df.fillna(0) で 0 補完、df.dropna() で削除。

3. 重複データ df.drop_duplicates() で重複行を削除。どの列を基準にするかは subset で指定します。

4. メモリ不足 大きな CSV (数 GB) は read_csv で全件読まずに chunksize で分割読み込みします。

5. 桁あふれ 大きな数字を扱う場合、デフォルトの float64 で精度が足りないケースがあります。Decimal や category 型で対処します。

ハンズオン Step-by-Step

Python 3.10 以上と pandas で、CSV 1 つを集計するまでを試します。

Step 1. pandas をインストール

1 行で完了します。

ターミナル

pip install pandas

Step 2. CSV を作る or 用意

テスト用に sales.csv を 1 つ作ります (region, amount の 2 列、5 行ほど)。

csv

region,amount east,1000 west,2500 east,500 west,1800 east,700

Step 3. 読み込んで確認

head() で先頭 5 行を表示。

Python

import pandas as pd df = pd.read_csv("sales.csv") print(df.head())

Step 4. region 別に集計

groupby + sum で 1 行で集計できます。

Python

print(df.groupby("region")["amount"].sum())

Step 5. グラフ化

Matplotlib で棒グラフ表示。jupyter 環境ならそのまま表示されます。

Python

import matplotlib.pyplot as plt df.groupby("region")["amount"].sum().plot.bar() plt.show()

次は 5 万行クラスの実データを扱う AI を使ったデータ分析 に進みましょう。

関連リソース

よくある質問

Q. Excel と pandas、業務でどちらを使うべきですか

A. データが 1 万行を超える、複数ファイルを横断する、定期実行する、のいずれかが当てはまるなら pandas が向きます。それ以外は Excel で十分です。両方使い分けるのが理想です。

Q. pandas を学ぶのにかかる時間は

A. 基本操作は 10-20 時間、業務で困らないレベルまで 30-50 時間が目安です。Python の基本文法が分かっていれば、1 ヶ月で実務最低限のレベルに到達できます。

Q. Google Colab を使うメリットは

A. 環境構築不要、ブラウザでそのまま動く、無料で GPU も使える、Google Drive と連携できる、の 4 点が大きいです。インストールにつまづいた時点で挫折する初学者には特におすすめです。

Q. AI に Python データ分析を任せてしまえばいいのでは

A. 短期で答えだけ欲しいなら AI で十分です。ただ、AI の出力が正しいかを判断する力、自分のデータの構造を説明する力は、自分でも pandas を書けないと身に付きません。詳しくは AI を使ったデータ分析入門 との使い分けを参照してください。

Q. Jupyter Notebook と Python スクリプト、どちらで書くべき

A. 探索的に分析するなら Notebook、本番運用する定期処理なら .py スクリプトです。Notebook で書いた処理を、運用段階で .py に書き換えるのが標準的なフローです。

Q. 次に何を学べばよいですか

A. データ可視化なら Matplotlib / Seaborn / Plotly、機械学習なら scikit-learn、大規模データなら Dask / Polars が次のステップです。SQL を併用することで分析の幅が一気に広がります。詳しくは SQL とは も参照してください。

次に読むべきリソース

出典・参考リンク

本記事の主張・数値・仕様に関する根拠は、以下の一次情報・公式ドキュメントを参照しています。リンク先の更新により内容が変わる場合があるため、最新情報は各公式サイトで確認してください。

この記事について

  • 監修: 生田 陸人 (LuaGate エンジニア / 大手 IT 企業現役エンジニア)
  • 公開: 2026-05-28
  • 最終更新: 2026-05-28
  • カテゴリ: バックエンド
  • 検証環境: Python 3.12 / pandas 2.x / NumPy 1.26 / Matplotlib 3.8
  • 編集ポリシー: 公式ドキュメント・公的統計を一次情報として優先し、社内エンジニアが実機検証した内容のみを掲載しています。修正提案や事実誤認の指摘は チョットデキル運営 までお寄せください。
01/04