基礎から学ぶPython入門 90日コース | 業務自動化 - Day 36:pandas入門

Python 90日で身につけるPython
スポンサーリンク
スポンサーリンク

Day 36:pandas入門で「業務データを一気に扱う力」を身につける

Day 36では、業務自動化の世界でほぼ必須と言ってよいライブラリ pandas を扱います。 ExcelやCSVのデータを「表」としてまとめて扱い、集計・加工・フィルタリングを楽にしてくれる強力な道具です。

キーワードは次の5つです。

  • DataFrame
  • Series
  • CSV読み込み
  • Excel読み込み
  • データ表示

ここでは、初心者向けにかみ砕いて、 「pandasって何者なのか」「どうやってデータを読み込んで、どう表示するのか」を ステップバイステップで説明していきます。

pandasとは何かをイメージする

「表形式データを扱うためのスーパー道具」

pandasは、表形式データ(行と列を持つデータ)を扱うためのライブラリです。 Excelの表、CSVファイル、データベースから取ってきた結果などを、 Pythonの中で「表」として扱えるようにしてくれます。

まずはインストールから始めます。

bash

pip install pandas

インストールができたら、Pythonコードの中で import pandas as pd と書いて使います。

DataFrameとSeriesのイメージ

DataFrame:Excelのシートのような「表」

DataFrame は、pandasの中心となるデータ構造で、 「行と列を持つ表」 だと考えると分かりやすいです。

  • 行:1件分のデータ(例:1人の顧客、1日の売上など)
  • 列:項目(例:名前、年齢、売上金額など)

Series:1列だけを取り出した「縦ベクトル」

Series は、1列分のデータを表す構造です。 DataFrameから「売上列だけ」「名前列だけ」といった形で取り出したものがSeriesになります。

手作りDataFrameで感覚をつかむ

まずは、CSVやExcelを使う前に、 「Pythonのリストや辞書からDataFrameを作る」ことで感覚をつかんでみます。

import pandas as pd


def create_dataframe_example():
    """手作りでDataFrameを作る例です。"""
    # 辞書のキーが「列名」、値が「列のデータ(リスト)」という形です。
    data = {
        "商品名": ["りんご", "みかん", "ぶどう"],
        "数量": [10, 8, 5],
        "単価": [120, 100, 300],
    }

    # DataFrameを作成します。
    df = pd.DataFrame(data)

    print("=== DataFrameの中身 ===")
    print(df)


if __name__ == "__main__":
    create_dataframe_example()
Python

ここでのポイントは、

  • 辞書のキーが列名、値がその列のデータ(リスト)になっていること
  • pd.DataFrame() で「表」を作っていること
  • print(df) で、表形式で表示されること

です。

Seriesを取り出してみる

DataFrameから1列だけ取り出す

import pandas as pd


def series_example():
    """DataFrameからSeries(1列)を取り出す例です。"""
    data = {
        "商品名": ["りんご", "みかん", "ぶどう"],
        "数量": [10, 8, 5],
        "単価": [120, 100, 300],
    }
    df = pd.DataFrame(data)

    # 「数量」列だけを取り出します。
    quantity_series = df["数量"]

    print("=== 数量列(Series) ===")
    print(quantity_series)

    # Seriesは「1列分のデータ+インデックス」を持っています。
    print("=== Seriesの型 ===")
    print(type(quantity_series))


if __name__ == "__main__":
    series_example()
Python

ここでのポイントは、

  • df["数量"] で「数量列だけ」を取り出していること
  • 取り出したものが Series 型であること
  • Seriesは「インデックス(行番号)」と「値」をセットで持っていること

です。

CSV読み込み:業務データをpandasに取り込む

サンプルCSVを作る

まずは、簡単なCSVファイルを作ります。

# day36_make_csv.py
def create_sample_csv(filename="sales.csv"):
    """サンプルCSVファイルを作成する関数です。"""
    content = """商品名,数量,単価
りんご,10,120
みかん,8,100
ぶどう,5,300
"""

    with open(filename, "w", encoding="utf-8") as f:
        f.write(content)

    print(f"{filename} を作成しました。")


if __name__ == "__main__":
    create_sample_csv()
Python

pandasでCSVを読み込む

import pandas as pd


def read_csv_example():
    """CSVファイルをpandasで読み込む例です。"""
    df = pd.read_csv("sales.csv")  # CSVをDataFrameとして読み込みます。

    print("=== CSVから読み込んだDataFrame ===")
    print(df)

    # 列ごとの型を確認してみます。
    print("=== 列のデータ型 ===")
    print(df.dtypes)


if __name__ == "__main__":
    read_csv_example()
Python

ここでのポイントは、

  • pd.read_csv("ファイル名") でCSVをそのままDataFrameにできること
  • ヘッダー行(1行目)が自動的に列名として認識されること
  • df.dtypes で各列の型(int, float, objectなど)を確認できること

です。

Excel読み込み:既存のExcelをpandasで扱う

サンプルExcelを作る

# day36_make_excel.py
from openpyxl import Workbook


def create_sample_excel(filename="sales.xlsx"):
    """サンプルExcelファイルを作成する関数です。"""
    wb = Workbook()
    ws = wb.active
    ws.title = "Sales"

    ws["A1"] = "商品名"
    ws["B1"] = "数量"
    ws["C1"] = "単価"

    ws["A2"] = "りんご"; ws["B2"] = 10; ws["C2"] = 120
    ws["A3"] = "みかん"; ws["B3"] = 8;  ws["C3"] = 100
    ws["A4"] = "ぶどう"; ws["B4"] = 5;  ws["C4"] = 300

    wb.save(filename)
    print(f"{filename} を作成しました。")


if __name__ == "__main__":
    create_sample_excel()
Python

pandasでExcelを読み込む

import pandas as pd


def read_excel_example():
    """Excelファイルをpandasで読み込む例です。"""
    # sheet_nameで読み込むシートを指定できます(デフォルトは最初のシート)。
    df = pd.read_excel("sales.xlsx", sheet_name="Sales")

    print("=== Excelから読み込んだDataFrame ===")
    print(df)

    print("=== 列のデータ型 ===")
    print(df.dtypes)


if __name__ == "__main__":
    read_excel_example()
Python

ここでのポイントは、

  • pd.read_excel("ファイル名", sheet_name="シート名") でExcelをDataFrameにできること
  • Excelの表をそのまま「pandasの表」として扱えるようになること

です。

データ表示:よく使う基本操作

先頭・末尾だけを見る(head / tail)

大量のデータを扱うときは、全部を表示するのではなく「一部だけ」見ることが多いです。

import pandas as pd


def display_example():
    """DataFrameの基本的な表示方法の例です。"""
    df = pd.read_csv("sales.csv")

    print("=== 先頭5行(デフォルト) ===")
    print(df.head())  # 先頭5行

    print("=== 先頭2行 ===")
    print(df.head(2))  # 先頭2行

    print("=== 末尾2行 ===")
    print(df.tail(2))  # 末尾2行

    print("=== 列名一覧 ===")
    print(df.columns)

    print("=== 行数・列数 ===")
    print(df.shape)  # (行数, 列数)


if __name__ == "__main__":
    display_example()
Python

ここでのポイントは、

  • df.head() で先頭部分だけ確認できること
  • df.tail() で末尾部分だけ確認できること
  • df.columns で列名一覧、df.shape で行数・列数を確認できること

です。

特定の列だけ表示する

import pandas as pd


def display_columns_example():
    """特定の列だけを表示する例です。"""
    df = pd.read_csv("sales.csv")

    print("=== 商品名列だけ ===")
    print(df["商品名"])

    print("=== 商品名と数量だけ ===")
    print(df[["商品名", "数量"]])  # 複数列はリストで指定します。


if __name__ == "__main__":
    display_columns_example()
Python

ここでのポイントは、

  • df["列名"] で1列だけ、df[["列名1", "列名2"]] で複数列を取り出せること
  • 必要な列だけを抜き出して表示・加工できること

です。

Day 36ミニテンプレート:pandas入門スクリプト

最後に、Day 36で学んだ内容を一通り試せるテンプレートを示します。

# day36_pandas_intro.py
import pandas as pd
from openpyxl import Workbook


def create_sample_files():
    # CSV
    csv_content = """商品名,数量,単価
りんご,10,120
みかん,8,100
ぶどう,5,300
"""
    with open("sales.csv", "w", encoding="utf-8") as f:
        f.write(csv_content)

    # Excel
    wb = Workbook()
    ws = wb.active
    ws.title = "Sales"
    ws["A1"] = "商品名"; ws["B1"] = "数量"; ws["C1"] = "単価"
    ws["A2"] = "りんご"; ws["B2"] = 10; ws["C2"] = 120
    ws["A3"] = "みかん"; ws["B3"] = 8;  ws["C3"] = 100
    ws["A4"] = "ぶどう"; ws["B4"] = 5;  ws["C4"] = 300
    wb.save("sales.xlsx")

    print("sales.csv と sales.xlsx を作成しました。")


def pandas_basic():
    # CSV読み込み
    df_csv = pd.read_csv("sales.csv")
    print("=== CSVから読み込んだDataFrame ===")
    print(df_csv)

    # Excel読み込み
    df_excel = pd.read_excel("sales.xlsx", sheet_name="Sales")
    print("=== Excelから読み込んだDataFrame ===")
    print(df_excel)

    # 列操作
    print("=== 商品名列 ===")
    print(df_csv["商品名"])

    print("=== 商品名と数量列 ===")
    print(df_csv[["商品名", "数量"]])

    # 先頭・末尾
    print("=== 先頭2行 ===")
    print(df_csv.head(2))

    print("=== 末尾2行 ===")
    print(df_csv.tail(2))

    # 行数・列数
    print("=== 行数・列数 ===")
    print(df_csv.shape)


def main():
    create_sample_files()
    pandas_basic()


if __name__ == "__main__":
    main()
Python

Day 36のまとめ

Day 36では、pandas入門として、

  • DataFrame(表)とSeries(1列)のイメージをつかむこと
  • 辞書から手作りでDataFrameを作ることで、構造を理解すること
  • pd.read_csv() でCSVを、pd.read_excel() でExcelを簡単に読み込む方法
  • head()tail()columnsshape など、データを確認するための基本操作
  • 特定の列だけを取り出して表示する方法

をステップバイステップで体験していただきました。

ここまで来ると、ExcelやCSVの業務データを、 「pandasのDataFrameとして扱い、まとめて処理する」 という発想に一歩近づいています。 次のDayでは、このpandasを使って、フィルタリング・集計・グループ化など、 より実務に近いデータ加工へ進んでいきます。

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