CSVファイルとは
CSV(Comma-Separated Values)は、データをカンマで区切ったテキスト形式のファイルです。スプレッドシートや他のプログラムとのデータ交換によく使われます。
名前,年齢,点数
田中,25,85
鈴木,30,92
佐藤,28,78
csv モジュール
Pythonの標準ライブラリ csv を使ってCSVを読み書きできます。
CSVの読み込み
python
import csvwith open("data.csv", "r", encoding="utf-8", newline="") as f: reader = csv.reader(f) header = next(reader) # ヘッダー行を取得 print("ヘッダー:", header) for row in reader: print(row) # ['田中', '25', '85']DictReader(辞書として読み込む)
python
import csvwith open("data.csv", "r", encoding="utf-8", newline="") as f: reader = csv.DictReader(f) for row in reader: # row は OrderedDict print(f"{row['名前']}: {row['点数']}点")CSVの書き込み
python
import csvdata = [ ["名前", "年齢", "点数"], ["田中", 25, 85], ["鈴木", 30, 92], ["佐藤", 28, 78],]with open("output.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerows(data) # 複数行をまとめて書き込むDictWriter(辞書として書き込む)
python
import csvfieldnames = ["名前", "年齢", "点数"]rows = [ {"名前": "田中", "年齢": 25, "点数": 85}, {"名前": "鈴木", "年齢": 30, "点数": 92},]with open("output.csv", "w", encoding="utf-8", newline="") as f: writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() # ヘッダーを書き込む writer.writerows(rows) # データを書き込むpandas を使ったCSV操作
実際のデータ分析では、pandasを使うのが最も一般的です。
CSVの読み込み
python
import pandas as pd# 基本的な読み込みdf = pd.read_csv("data.csv", encoding="utf-8")# よく使うオプションdf = pd.read_csv("data.csv", encoding="utf-8", # エンコーディング index_col=0, # インデックスにする列 header=0, # ヘッダー行のインデックス skiprows=1, # 先頭1行をスキップ usecols=["名前", "点数"], # 必要な列のみ読む dtype={"年齢": int}, # データ型を指定 na_values=["N/A", ""], # 欠損値としてとみなす値)print(df.head()) # 先頭5行を確認print(df.info())CSVへの書き込み
python
import pandas as pddf = pd.DataFrame({ "名前": ["田中", "鈴木", "佐藤"], "年齢": [25, 30, 28], "点数": [85, 92, 78],})# CSVへの保存df.to_csv("output.csv", encoding="utf-8", index=False)# index=True にするとインデックスも保存される文字コードの問題
Windowsで作成されたCSVはShift-JISエンコードの場合があります。
python
# Shift-JISの場合df = pd.read_csv("windows_data.csv", encoding="shift-jis")df = pd.read_csv("windows_data.csv", encoding="cp932") # Windows特有の文字も対応# Excel用(BOM付きUTF-8)df.to_csv("for_excel.csv", encoding="utf-8-sig") # ExcelでUTF-8を正しく開くため練習: CSVファイルの操作
CSV形式のデータを作成し、学生名と点数を保存・読み込みして平均点を求めてください。