ライブラリ リスト 文法・環境 標準ライブラリ・モジュール

【python】リスト(list)をcsvへ出力する方法【csvモジュール、pandas】

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])

サンプルコードの出力結果です。

pythonのcsvモジュールの出力例
pythonのcsvモジュールの出力例

>import csv

csvモジュールをインポートしています。

>csv_path = r"C:\***** 任意の保存先 *****\test.xlsx"

新規に作成する、Excel Workbookのディレクトリと、ファイル名を指定しています。

「***** 任意の保存先 *****」の部分は、好きな場所に置き換えてください。

また、文字列の先頭に「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(excel_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に出力する方法を下記記事で紹介しています。併せて参考にしてみてください。

スポンサーリンク

-ライブラリ, リスト, 文法・環境, 標準ライブラリ・モジュール
-, ,