Python入門!CSVファイル操作方法を徹底解説! Pandasの使い方も合わせて紹介

2025.08.21
カテゴリー:オフショア開発,開発

 

プログラミング初心者やデータ分析に興味を持ち始めた方にとって、「CSVファイルの操作」は避けて通れないスキルです。特にPythonでは、標準ライブラリや外部ライブラリを使って効率よくCSVファイルを読み書きできます

 

本記事では、PythonでのCSVファイル操作の基礎から応用までを徹底解説します。さらに、人気のデータ分析ライブラリ「Pandas」を用いた強力なデータ操作手法についてもわかりやすく紹介します。これを読めば、実務でも使えるCSV操作がバッチリ身につきますので、最後までぜひご覧ください。

 

CSVファイルとは

 

CSV(Comma-Separated Values)ファイルは、データをカンマで区切って保存するテキストファイルです。行ごとに1レコード、カンマごとに1フィールドとして情報が整理されており、非常にシンプルで扱いやすい形式です。

 

特徴:

  • テキスト形式なので軽量
  • ExcelやGoogleスプレッドシートでも開ける
  • プログラムでの読み書きが容易

 

CSVファイルの中身

名前,年齢,職業

田中,30,エンジニア

佐藤,25,デザイナー

鈴木,28,マーケター

 

このように、カンマで区切られたシンプルな形式がCSVの特徴です。

 

主なメリット

  • ExcelやGoogleスプレッドシートで簡単に開ける
  • テキストエディタでも中身が確認できる
  • 軽量かつ互換性が高い

 

業務では顧客データ、売上データ、商品リストなど、多くの情報をCSV形式でやり取りする機会があります。

 

Python標準ライブラリでCSVを操作する

 

Pythonには標準でcsvモジュールが用意されており、インストール不要でCSVファイルの読み書きが可能です

 

CSVの読み込み

import csv

 

with open(‘sample.csv’, newline=”, encoding=’utf-8′) as f:

    reader = csv.reader(f)

    for row in reader:

        print(row)

 

このコードで、1行ずつリスト形式でデータを取得できます。

 

CSVの書き込み

import csv

 

data = [

    [“Name”, “Age”, “Country”],

    [“Alice”, 25, “USA”],

    [“Bob”, 30, “UK”]

]

 

with open(‘output.csv’, ‘w’, newline=”, encoding=’utf-8′) as f:

    writer = csv.writer(f)

    writer.writerows(data)

 

ワンポイント

  • newline=” を使うことで、Windows環境で不要な空行が出るのを防ぎます。
  • encoding=’utf-8′ は日本語を正しく扱うために重要です

 

DictReader/DictWriterを使う

import csv

 

with open(‘sample.csv’, newline=”, encoding=’utf-8′) as csvfile:

    reader = csv.DictReader(csvfile)

    for row in reader:

        print(row[‘名前’], row[‘年齢’])

 

辞書形式で扱えるため、可読性・メンテナンス性が高くなります。

 

PandasでCSVを操作する

 

Pandasはデータ分析のために広く使われるPythonライブラリです。表形式のデータ(DataFrame)としてCSVファイルを扱うことができ、Excelライクな感覚で操作できます

 

Pandasのインストール

pip install pandas

 

CSVを読み込む

import pandas as pd

 

df = pd.read_csv(‘sample.csv’)

print(df)

 

CSVを書き出す

df.to_csv(‘output.csv’, index=False, encoding=’utf-8′)

 

index=Falseを指定しないと、自動で行番号(インデックス)がCSVに追加されてしまうので注意しましょう。

 

データの抽出と加工

print(df[‘名前’])         # 特定の列を抽出

print(df.iloc[0])         # 1行目を抽出

df[‘年齢’] += 1           # 年齢を1歳加算

df[‘職業’] = df[‘職業’].str.upper()  # 職業を大文字に変換

filtered = df[df[‘年齢’] > 30]  # 30歳以上のデータ抽出

print(filtered)

 

具体的な活用例

  • 顧客の誕生日から年齢を自動計算
  • 商品データから在庫ゼロの商品を抽出
  • 売上データから店舗別・月別の集計を作成

 

CSV操作でよくあるエラーと対処法

 

UnicodeDecodeError(文字コードエラー)

原因:CSVファイルの文字コードがUTF-8以外(例:Shift-JIS)

対処法:encodingを指定する

 

df = pd.read_csv(‘sample.csv’, encoding=’shift_jis’)

 

FileNotFoundError(ファイルが見つからない)

対処法:ファイルパスを確認する。

 

import os

print(os.getcwd())  # 現在の作業ディレクトリを表示

 

index列が自動で追加される

対処法:書き出し時にindex=Falseを明示

 

df.to_csv(‘output.csv’, index=False)

 

ファイルのエンコーディングやパス指定は、初心者がつまずきやすいポイントです。常にtry-except構文を使うことで、エラー時の対応が柔軟になります

 

実務で使える応用テクニック

 

複数CSVファイルの一括読み込み・結合

import glob

import pandas as pd

 

files = glob.glob(‘data/*.csv’)

df_list = [pd.read_csv(file) for file in files]

combined_df = pd.concat(df_list, ignore_index=True)

 

このコードは、特定フォルダ内のCSVファイルをすべて結合し、一つの大きなDataFrameとして扱います。年間の売上ファイル(月別)を統合したい時などに便利です。

 

CSVデータをグラフ化(matplotlibと連携)

import matplotlib.pyplot as plt

 

df.plot(x=’名前’, y=’年齢’, kind=’bar’)

plt.title(‘年齢別棒グラフ’)

plt.xlabel(‘名前’)

plt.ylabel(‘年齢’)

plt.grid(True)

plt.show()

 

売上推移の折れ線グラフや、商品カテゴリごとの円グラフなども簡単に作成できます。

 

まとめ

PythonでCSVファイルを操作するスキルは、データ分析や業務自動化を目指す上で非常に重要です。標準ライブラリでも基本的な操作は可能ですが、Pandasを使えばより効率的で高機能な処理が可能になります。

 

この記事のまとめ

  • CSVファイルはあらゆる場面で使われる基本的なデータ形式
  • Pythonのcsvモジュールで読み書きは簡単にできる
  • Pandasを使えば、データ加工・集計・可視化が圧倒的に楽になる
  • 実務でも使える一括処理や可視化テクニックを活用しよう

 

今後、CSVだけでなくExcelやJSON、SQLなど他形式のデータも扱う機会が増えてきます。まずはCSVの基本をしっかり押さえて、次のステップに進みましょう。もし、より複雑なデータ処理や業務の自動化でお困りでしたら、お気軽に3inkへご相談ください。