PythonでCSVファイルを読み書きする包括的ガイド
PythonでCSVファイルを読み書きする包括的ガイド
CSVファイルとは?
CSV(Comma-Separated Values)ファイルは、表形式データをプレーンテキストで格納します。各行が1レコードを表し、個々のフィールドはカンマ、セミコロン、または他の区切り文字で区切られます。CSVファイルは軽量で、スプレッドシート、データベース、データ分析ツールで広くサポートされており、データ交換の好ましいフォーマットです。
CSVサンプルファイル
小さなプログラミング言語データベースの典型的なCSV表現。1行目が列ヘッダー、以降がデータ行。
テーブルデータ
| プログラミング言語 | 設計者 | 登場年 | 拡張子 |
|---|---|---|---|
| Python | Guido van Rossum | 1991 | .py |
| Java | James Gosling | 1995 | .java |
| C++ | Bjarne Stroustrup | 1983 | .cpp |
CSVデータ
Programming language,Designed by,Appeared,Extension Python,Guido van Rossum,1991,.py Java,James Gosling,1995,.java C++,Bjarne Stroustrup,1983,.cpp
Python組み込みcsvモジュール
csvモジュールはCSVファイルの読み書きのための低レベルツールを提供します。クォート、区切り文字、行終端文字を自動処理し、手動文字列操作の必要性を減らします。
主要関数
csv.reader()– 行をリストとしてイテレーションcsv.DictReader()– 行を列名をキーとする辞書に変換csv.writer()– 行をCSVファイルに書き込みcsv.DictWriter()– 辞書をCSVファイルに書き込み- 方言ヘルパー:
csv.get_dialect()、csv.list_dialects()、csv.register_dialect()、csv.unregister_dialect()
CSVファイルの読み取り
CSVファイルを読み取り、各行をPythonリストとして出力する最小限の本番向け例:
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
出力:
["Programming language", "Designed by", "Appeared", "Extension"] ["Python", "Guido van Rossum", "1991", ".py"] ["Java", "James Gosling", "1995", ".java"] ["C++", "Bjarne Stroustrup", "1983", ".cpp"]
CSVを辞書として読み取り
csv.DictReaderを使うとヘッダー行が自動的に辞書キーにマッピングされ、データ処理が簡素化されます。
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
結果の辞書:
{"Programming language": "Python", "Designed by": "Guido van Rossum", "Appeared": "1991", "Extension": ".py"}
{"Programming language": "Java", "Designed by": "James Gosling", "Appeared": "1995", "Extension": ".java"}
{"Programming language": "C++", "Designed by": "Bjarne Stroustrup", "Appeared": "1983", "Extension": ".cpp"}
CSVファイルの書き込み
csv.writerとcsv.DictWriterクラスで効率的にデータ書き込み:
import csv
rows = [
["Programming language", "Designed by", "Appeared", "Extension"],
["Python", "Guido van Rossum", "1991", ".py"],
["Java", "James Gosling", "1995", ".java"],
["C++", "Bjarne Stroustrup", "1983", ".cpp"],
]
with open('writeData.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerows(rows)
生成されるwriteData.csvは元のサンプルと一致します。
PandasでのCSV操作
PandasはデータをDataFrameに読み込み、最小限のコードで強力なデータ操作を可能にすることでCSV処理を簡素化します。未インストールならpip install pandasでインストール。
Pandasで読み取り
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
出力:
Programming language Designed by Appeared Extension 0 Python Guido van Rossum 1991 .py 1 Java James Gosling 1995 .java 2 C++ Bjarne Stroustrup 1983 .cpp
Pandasで書き込み
import pandas as pd
data = {
'Programming language': ['Python', 'Java', 'C++'],
'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
'Appeared': ['1991', '1995', '1983'],
'Extension': ['.py', '.java', '.cpp'],
}
df = pd.DataFrame(data)
df.to_csv('pandaresult.csv', index=False)
print(df)
結果のCSVは元と同一ですが、DataFrameは高度な分析機能を提供します。
結論
PythonのcsvモジュールとPandasは、CSVファイルの読み取り、書き込み、操作のための堅牢で使いやすいツールを提供します。これらのライブラリを習得すれば、Webサービス、ETLパイプライン、科学研究における効率的なデータワークフローが実現できます。今すぐ実験を始め、CSV処理をプロジェクトに自信を持って統合してください。
Python
- VHDLのTEXTIOライブラリでテキスト・ファイルからFPGAブロックRAMを初期化する
- Python キーワードと識別子: 予約語と命名規則をマスター
- Python 文・インデント・コメント: 明確なガイド
- Python 変数・定数・リテラル: 包括的ガイド
- Python 型変換とキャスト: 包括的ガイド
- Python I/Oとモジュールインポート完全マスター: 実践ガイド
- Python グローバル・ローカル・非ローカル変数を理解する
- PythonファイルI/O:ファイル操作、読み書き、管理のマスター
- Pythonディレクトリ・ファイル操作マスター:作成、移動、一覧、リネーム、削除
- Pythonエラーと組み込み例外をマスターする
- Pythonで現在の日付と時刻を取得する実践ガイド