PythonでCSVファイルを効率的に操作する方法とテクニック

Sponsored Link

はじめに

CSVファイルはデータを扱う上でよく利用される形式の一つです。Pythonにはcsvモジュールをはじめとした、CSVファイルを簡単に読み書きするためのさまざまなツールが揃っています。この記事では、Pythonを使ってCSVファイルを効率的に読み書きする方法と、そのための便利なテクニックについて解説します。

PythonでCSVファイルを扱うための準備

Pythonには標準ライブラリとしてcsvモジュールが含まれているので、追加のインストールは不要です。まず、基本的な使い方から始めましょう。

CSVファイルの基本的な読み込み

以下のコードは、csv.readerを使ってCSVファイルを1行ずつ読み込む基本的な方法です。

import csv

with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)

withステートメントを使うことで、ファイルの自動的なクローズが保証されます。

CSVファイルの基本的な書き込み

次に、CSVファイルにデータを書き込む方法です。csv.writerを使って、リスト形式のデータを1行ずつ追加します。

import csv

data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 25, 'Los Angeles'],
]

with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data)

newline=''を指定すると、プラットフォームに依存しない改行コードで出力されます。

DictReaderとDictWriterを使った高度な操作

DictReaderを使ってCSVを辞書形式で読み込む

列名がキーとして使えるとデータの可読性が上がります。csv.DictReaderを利用することで、各行が辞書として扱われるので、列名でアクセスが可能になります。

import csv

with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['Name'], row['Age'], row['City'])

DictWriterを使って辞書形式でCSVに書き込む

辞書形式のデータを書き込む場合はcsv.DictWriterを使用します。列のヘッダー行も一緒に出力されます。

import csv

data = [
{'Name': 'Alice', 'Age': 30, 'City': 'New York'},
{'Name': 'Bob', 'Age': 25, 'City': 'Los Angeles'},
]

with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=['Name', 'Age', 'City'])
writer.writeheader() # ヘッダー行を書き込み
writer.writerows(data)

CSVファイルのデータを効率よく操作するためのテクニック

特定の列だけを読み込む

大量のデータのうち、必要な列だけを抽出したい場合は、DictReaderで列名を指定して読み込むと便利です。

import csv

with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
selected_columns = [{'Name': row['Name'], 'City': row['City']} for row in reader]

print(selected_columns)

CSVファイルのフィルタリングと条件検索

特定の条件に基づいて行をフィルタリングする場合も、リスト内包表記を用いることで効率よく処理できます。

import csv

with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
filtered_rows = [row for row in reader if int(row['Age']) > 20]

print(filtered_rows)

上記の例では、「Ageが20より大きい」行だけを抽出しています。

pandasライブラリを使ったCSV操作の応用

大規模なCSVファイルやより複雑なデータ操作には、pandasライブラリが便利です。インストールは以下のコマンドで行えます。

pip install pandas

pandasでCSVを読み込む

pandas.read_csv()を使うと、CSVデータをDataFrame形式で読み込めます。DataFrameはテーブル状のデータ構造で、データの操作や分析がしやすくなります。

import pandas as pd

df = pd.read_csv('sample.csv')
print(df.head()) # 最初の5行を表示

pandasでCSVに書き出す

DataFrameをそのままCSVファイルに書き出すには、DataFrame.to_csv()を使います。

import pandas as pd

data = {
'Name': ['Alice', 'Bob'],
'Age': [30, 25],
'City': ['New York', 'Los Angeles']
}

df = pd.DataFrame(data)
df.to_csv('output.csv', index=False) # index=Falseで行番号を非表示

まとめ

Pythonを用いてCSVファイルを効率的に操作する方法について解説しました。基本のcsvモジュールから、pandasを使ったより高度な操作まで、目的に応じて選んで使うことで、開発作業の効率を大幅に向上させることができます。ぜひ、プロジェクトに応じて適切な方法を活用してみてください。

Welcome to Python.org
The official home of the Python Programming Language

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