CSVモジュールでCSV出力するとき、ヘッダーを付けてみます。
CSVファイルの先頭行にヘッダーを付けるには
CSVファイル出力のとき、1行目にヘッダーを入れたいと思います。[br num=”1″]項目名の行ですね。
データの配列に項目名もまとめて入れてしまうやり方と、データの配列とは別にヘッダー行を入れるやり方を書いてみました。
配列にまとめて入れる
今回の例はコーヒーのメニューです。
まずは配列にヘッダー行もまとめて書いてみます
import csv
data_list = []
data_list.append(["Menu", "Price"])
data_list.append(["Caffe Americano", 400])
data_list.append(["Caffe Mocha", 550])
data_list.append(["Espresso", 510])
data_list.append(["Caffe Latte", 500])
data_list.append(["Soy Latte", 550])
with open("data/export_csvtest2.csv", "w", encoding="utf_8", newline="") as csv_file:
csv.writer(csv_file).writerows(data_list)
実行してみたところ、ヘッダー行を付けて出力できました。

with文でCSVファイルを開いているのは、with文を抜けたときにCSVファイルも自動的に閉じてくれるからです。[br num=”1″]閉じ忘れがなくて、しかもソースコードをシンプルにできます。
Pythonの参考書でよく見かけるヤツですね。
newline=””で改行を制御していて、無駄な空行が入らないようにしています。
書き込むときに付ける
CSVファイルに書き込むとき、ヘッダー行を付ける場合です。
import csv
data_list = []
data_list.append(["Caffe Americano", 400])
data_list.append(["Caffe Mocha", 550])
data_list.append(["Espresso", 510])
data_list.append(["Caffe Latte", 500])
data_list.append(["Soy Latte", 550])
with open("data/export_csvtest.csv", "w", encoding="utf_8", newline="") as csv_file:
csv.writer(csv_file).writerow(["Menu", "Price"])
csv.writer(csv_file).writerows(data_list)
まずは実行してみます。[br num=”1″]最初のやり方と同じく、ヘッダー行を付けて保存できました。

データ部だけの配列と、ヘッダーと分けて書き込むほうが、汎用性があるように思います。[br num=”1″]好みによるのかもしれないですが。
Pandasを使って読み込んで保存しなおしてみる
表データを扱うライブラリのPandasで、読み込んで再度保存してみます。
import pandas as pd
df = pd.read_csv("data/export_csvtest.csv")
df.to_csv("data/export_csv_pandas.csv")
header = Falseなどのオプションを付けていないので、ヘッダー行もインデックスも付くはずです。[br num=”1″]実行してみると・・・。
1行目にMenu,Price が表示されました。

Pandasで配列のデータをCSV出力したら、ヘッダーは「1,2,3」のように数字で付いてしまいますが、今回はもともと付けていた項目名になりました。[br num=”1″]ちゃんとヘッダーとして認識してくれたようですね。
PandasでCSV出力するときのヘッダーの扱いは、こちらの記事をどうぞ。
まとめ:CSV出力するときの、ヘッダーの付け方
writerowなどで書き込むとき、ヘッダー用の文字列が先頭にくるよう出力します。
Pandasは便利ですが、CSVモジュールもしっかり使えるようにしたいものです。
コメント Comments
コメント一覧
コメントはありません。
トラックバックURL
https://pro-blo.com/python/scraping/csv-writer-with-header/trackback/