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()
Pythonpandasで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()
Pythonpandasで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()
PythonDay 36のまとめ
Day 36では、pandas入門として、
- DataFrame(表)とSeries(1列)のイメージをつかむこと
- 辞書から手作りでDataFrameを作ることで、構造を理解すること
pd.read_csv()でCSVを、pd.read_excel()でExcelを簡単に読み込む方法head()・tail()・columns・shapeなど、データを確認するための基本操作- 特定の列だけを取り出して表示する方法
をステップバイステップで体験していただきました。
ここまで来ると、ExcelやCSVの業務データを、 「pandasのDataFrameとして扱い、まとめて処理する」 という発想に一歩近づいています。 次のDayでは、このpandasを使って、フィルタリング・集計・グループ化など、 より実務に近いデータ加工へ進んでいきます。
