Pythonのリスト(list)をcsvに出力する方法を紹介します。
リストをcsv出力する方法として、
「csvモジュール」を用いた方法と、
「pandas」を用いた方法を紹介しています。
この記事で分かること
【csvモジュールを用いた方法】
- csvモジュールの基本的な使い方
- リストを新規のcsvファイルに出力する方法
- リストを既存のcsvファイルに出力する方法
- 【補足】リストをcsv出力した際に、余計な改行が入る場合の対処方法
【pandasを用いた方法】
- リストを新規のcsvファイルに出力する方法
- リストを既存のcsvファイルに出力する方法
- リストをcsv出力する際の列名(column)の扱いについて
はじめに、Pythonの標準ライブラリである、「csvモジュール」を用いたリストのcsv出力の方法について紹介します。
スポンサーリンク
csvモジュールの基本的な使い方
「csvモジュール」の基本的な使い方について紹介します。
「csvモジュール」はPythonの標準ライブラリなので、pipでインストールすることなく使用できます。
サンプルコードに沿って、解説します。
### csvモジュールの基本的な使い方
import csv
csv_path = r"C:\***** 任意の保存先 *****\test.csv"
with open(csv_path, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["No.", "Fluits", "Price"])
writer.writerow([1, "Apple", 100])
writer.writerow([2, "Banana", 200])
writer.writerow([3, "Orange", 100])
サンプルコードの出力結果です。

>import csv
csvモジュールをインポートしています。
>csv_path = r"C:\***** 任意の保存先 *****\test.xlsx"
新規に作成するcsvファイルのファイル名を指定しています。
「***** 任意の保存先 *****」の部分は、好きな場所に置き換えてください。
また、文字列の先頭に「r」をつけると、その文字列は 「raw文字列」 として扱われます。
例えば、"\n"という文字列は、pythonにより改行として扱われてしまいますが、raw文字列とすることで文字列の一部として扱われるようになります。
>with open(csv_path, 'w', newline='') as file:
with構文を使用して、csvファイルを新規作成してopenしています。
withを使用すると、withブロック終了時に自動的にcsvファイルを閉じる処理も実行されます。
そのため、csvファイルの閉じ忘れを回避できます。
>'w' : 書き込みモードで開いています。
他には、「r」読み取りモード、「a」追記モードなどがあります。
>newline='' : とりあえず、おまじないだと思って記載しておいてください。環境の差によって、余計な改行が入らないようにするオプションです。
newline='' が指定されない場合、クォートされたフィールド内の改行は適切に解釈されず、書き込み時に \r\n を行末に用いる処理系では余分な \r が追加されてしまいます。csv モジュールは独自 (universal) の改行処理を行うため、newline='' を指定することは常に安全です。
引用 : pythonドキュメント
>as file
openしたファイルのオブジェクトに、fileという名前をつけています。
ここで命名したファイルオブジェクト「file」を、withブロックの中で使用します。
なお、名前の付け方に制約はなく、「file」以外の名前でも構いません。
>writer = csv.writer(file)
csv.writer( )関数で、writerオブジェクトを生成しています。
イメージしにくいと思いますが、先ほど命名したファイルオブジェクト「file」に対して、
書き込みを行うツールを生成したイメージです。
データの書き込みには、writerオブジェクトが持っている、csvファイルに書き込むためのメソッドを使用します。
書き込み用のメソッドには、1行ずつ書き込むwriterow( )メソッド、複数行を一気に書き込むwriterows( )メソッド、があります。
>writer.writerow(["No.", "Fluits", "Price"])
先ほど生成したwriterオブジェクトの、writerow( )メソッドで、行ごとにデータを書き込んでいます。
スポンサーリンク
リスト(list)を新規のcsvファイルに出力する方法【csvモジュール】
「csvモジュール」の基本的な使い方が理解できたと思いますので、
リストを新規のcsvファイルに出力するサンプルコードを紹介します。
### リストをcsv出力する(csvモジュール)
import csv
list_1 = [
["No.", "Fluits", "Price"],
[1, "Apple", 100],
[2, "Banana", 200],
[3, "Orange", 100]
]
csv_path = r"C:\***** 任意の保存先 *****\test.csv"
with open(csv_path, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(list_1)
>writer.writerows(list_1)
writerオブジェクトを、writerows( )メソッドにすることで、リストの複数行を一気にcsvファイルに書き込んでいます。
リスト(list)を既存のcsvファイルに出力する方法【csvモジュール】
先ほどのサンプルコードは、リストを新規のcsvファイルに出力する例でした。
こちらは、リストを既存のcsvファイルに出力するサンプルコードになります。
### リストを既存のcsvに出力する(csvモジュール)
import csv
list_1 = [
[4, "Lemon", 100],
[5, "Mango", 1000]
]
csv_path = r"C:\***** 任意の保存先 *****\test.csv"
with open(csv_path, 'a', newline='') as file:
writer = csv.writer(file)
writer.writerows(list_1)
>with open(excel_path, 'a', newline='') as file:
'a' とすることで、追記モードでcsvをopenしています。
【補足】リストをcsv出力した際に、余計な改行が入る場合の対処方法
csvファイルをwith構文でopenする際に、
「newline=''」を入れていない場合に、行間に余計な改行が入る場合があります。
このような不具合がある場合は、「newline=''」の有無を確認してみてください。
スポンサーリンク
リスト(list)を新規のcsvファイルに出力する方法【pandas】
次に、pandasで、リストを新規のcsvファイルに出力する方法について紹介します。
pandasは、データ解析を支援する機能を提供してくれるライブラリです。
以下、サンプルコードです。
### リストをcsv出力する(pandas)
import pandas as pd
list_1 = [
["No.", "Fluits", "Price"],
[1, "Apple", 100],
[2, "Banana", 200],
[3, "Orange", 100]
]
csv_path = r"C:\***** 任意の保存先 *****\test.csv"
df = pd.DataFrame(list_1[1:], columns=list_1[0])
df.to_csv(csv_path, index=False)
リストをcsv出力する際の列名(column)の扱いについて
サンプルコードでは、元のリストに列名に相当するデータが入っています。
このデータを、DataFrameの列名(column)にするために、下記の処理を行っています。
>df = pd.DataFrame(list_1[1:], columns=list_1[0])
こちらのコマンドで、リストをDataFrameに格納しています。
列名に相当するデータである「list_1[0]」を、columnsとして指定しています。
また、DataFrame化するデータとして、
リストのスライス機能を用いて、リストの1行目以降を渡しています。
>df.to_csv(excel_path, index=False)
こちらのコマンドで、csvファイルへ出力しています。
今回はインデックスは出力したくなかったので、 index=False としています。
リスト(list)を既存のcsvファイルに出力する方法【pandas】
次に、pandasで、リストを既存のcsvファイルに出力する方法について紹介します。
### リストを既存のcsvに出力する(pandas)
import pandas as pd
list_1 = [
[4, "Lemon", 100],
[5, "Mango", 1000]
]
csv_path = r"C:\***** 任意の保存先 *****\test.csv"
df = pd.DataFrame(list_1)
df.to_csv(csv_path, mode='a', index=False, header=False)
>df.to_csv(csv_path, mode='a', index=False, header=False)
mode = 'a' とすることで、追記モードで出力しています。
また、余計な列名が出力されないように、header=False としています。
スポンサーリンク
まとめ
Pythonのリストをcsvに出力する方法を紹介しました。
「pandas」のDataFrameを扱えるようになると、データ解析が容易になるので、基本的な使い方は覚えておくことをオススメします。
なお、リストをExcelに出力する方法を下記記事で紹介しています。併せて参考にしてみてください。
スポンサーリンク