プログラミングを勉強するサイトです。今まで使ってこなかった言語を新しく勉強し始めたのをきっかけに、プロブロを始めました。

【Python】CSVモジュールでCSV出力するときの、ヘッダーの付け方

【Python】CSVモジュールでCSV出力するときの、ヘッダーの付け方

 

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出力するときのヘッダーの扱いは、こちらの記事をどうぞ。

【Python】PandasでCSV出力するときの、ヘッダーとインデックス

まとめ:CSV出力するときの、ヘッダーの付け方

writerowなどで書き込むとき、ヘッダー用の文字列が先頭にくるよう出力します。

Pandasは便利ですが、CSVモジュールもしっかり使えるようにしたいものです。

この記事をシェアする

記事一覧へ戻る

コメント Comments

コメント一覧

コメントはありません。

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックURL

https://pro-blo.com/python/scraping/csv-writer-with-header/trackback/

関連記事 Relation Entry