一覧へ

CSVファイルとExcelファイルの操作

pandasを使用して、CSVファイルとExcelファイルを読み込み、処理、および保存するための基本的なワークフローを学びます。

入門
|
8
|
検証済み (2026-07)
CSVExcelpandasデータの入出力ファイル形式
進捗0/17 (0%)

CSVファイルとExcelファイルの取り扱い

このトピックを終えると

pandasを使ってCSVファイルとExcelファイルを読み書きできるようになり、実務で頻繁に遭遇するエンコーディング、シート選択、列指定の問題を解決できるようになります。


CSVとは

CSV(Comma-Separated Values)は、カンマで区切られたテキストファイルです。メモ帳で開くと、次のようになります。

text
名前,年齢,都市
キム・フン,30,ソウル
イ・ス,25,釜山
パク・ジン,35,大田

最も一般的なデータ交換形式です。どのようなプログラミング言語、どのようなオペレーティングシステムでも読み込むことができます。Excel、Google Sheets、データベースなど、すべてCSVのエクスポートをサポートしています。


CSVファイルの読み込み

python
import pandas as pd
# 基本的な読み込み
df = pd.read_csv("data.csv")
# エンコーディングの指定 - 韓国語の文字化けを防ぐ
df = pd.read_csv("data.csv", encoding="cp949")
# Windows Excelで保存された韓国語CSVファイルは、cp949(またはeuc-kr)
# UTF-8 BOM
df = pd.read_csv("data.csv", encoding="utf-8-sig")

韓国語のCSVファイルを読み込む際にUnicodeDecodeErrorが発生する場合は、エンコーディングの問題です。順番に試します:utf-8utf-8-sigcp949euc-kr


CSVファイルの読み込み - 高度なオプション

python
# 特定の列のみを読み込む - メモリの節約
df = pd.read_csv("data.csv", usecols=["名前", "年齢"])
# 区切り文字がカンマではない場合
df = pd.read_csv("data.tsv", sep="\t") # タブ区切り
df = pd.read_csv("data.txt", sep="|") # パイプ区切り
# ヘッダーがないファイル
df = pd.read_csv("data.csv", header=None,
names=["col1", "col2", "col3"])
# スキップする行を指定
df = pd.read_csv("data.csv", skiprows=2) # 上位2行をスキップ
# 大きなファイル - チャンク単位で読み込む
for chunk in pd.read_csv("big.csv", chunksize=10000):
process(chunk) # 10,000行ずつ処理

chunksizeは、数百MBを超える大規模なファイルでメモリ不足を防ぎます。一度にすべてをメモリにロードするのではなく、チャンクごとに処理します。


Excelファイルの読み込み

python
# 基本的な読み込み(最初のシート)
df = pd.read_excel("report.xlsx")
# 特定のシート
df = pd.read_excel("report.xlsx", sheet_name="売上")
# 複数のシートを一度に
sheets = pd.read_excel("report.xlsx", sheet_name=None)
# {'Sheet1': DataFrame, '売上': DataFrame, '費用': DataFrame}
for name, data in sheets.items():
print(f"{name}: {len(data)}行")
# セルの範囲を指定
df = pd.read_excel("report.xlsx",
usecols="B:E", # B~E列のみ
skiprows=3, # 上位3行をスキップ
nrows=100) # 100行のみ

Excelファイルの読み込みには、openpyxlパッケージが必要です(pip install openpyxl)。


ファイルの保存

python
# CSVファイルとして保存
df.to_csv("output.csv", index=False, encoding="utf-8-sig")
# index=False: 行番号列を除外
# utf-8-sig: Excelで開いても韓国語が文字化けしない
# Excelファイルとして保存
df.to_excel("output.xlsx", index=False, sheet_name="結果")
# 複数のシートに保存
with pd.ExcelWriter("output.xlsx") as writer:
df_sales.to_excel(writer, sheet_name="売上", index=False)
df_cost.to_excel(writer, sheet_name="費用", index=False)

CSVファイルを保存する際に、encoding="utf-8-sig"を使用すると、Windows Excelで開いたときに韓国語が文字化けしなくなります。utf-8で保存すると、Excelで文字化けすることがあります。


実践ワークフロー - CSVファイルの結合

複数の月次のCSVファイルを1つに結合することは、非常に一般的な作業です。

python
import glob
# フォルダ内のすべてのCSVファイルを検索
files = glob.glob("monthly_data/*.csv")
print(f"{len(files)}個のファイルが見つかりました")
# 読み込んで結合
dfs = []
for f in sorted(files):
temp = pd.read_csv(f, encoding="utf-8-sig")
temp["source_file"] = f # 元のファイル名を記録
dfs.append(temp)
df_all = pd.concat(dfs, ignore_index=True)
print(f"合計{len(df_all)}行")
# 結果を保存
df_all.to_csv("merged_all.csv", index=False, encoding="utf-8-sig")

ignore_index=Trueを指定しないと、各ファイルのインデックスがそのまま保持され、0, 1, 2, ..., 0, 1, 2, ... のようになります。


重要なまとめ

CSVファイルとExcelファイルは、データ分析の入口と出口です。外部からデータを受け取る場合、CSV/Excelファイルであり、結果を送信する場合もCSV/Excelファイルであることがほとんどです。エンコーディング(utf-8-sigcp949)、シートの選択、列の指定 - この3つを確実に理解すれば、「ファイルが開けません」という問題の90%を解決できます。


💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...