今回は、「csvファイル」へのデータの書き出しについて解説していこうと思います。csvファイルとは何か?については、本サイトの「Pythonでcsvファイルを読み込んでみよう」で解説しているので、そちらをご覧ください。
1. listデータのcsvへの書き出し
まずは、データがlist形式の場合の書き出し方法について解説します。
listをcsvに書き出す場合は、「csv」というライブラリの「writer」オブジェクトを使用します。
使用方法は簡単で、下のように使います。
#まず、下のようにwirteオブジェクトを宣言 write = csv.writer(出力ファイル) #データが1次元の場合の書き出し write.writerow(データ) #データが2次元の場合の書き出し write.writerows(データ) #ただし、下のようにいっぺんに書くこともできます csv.writer(出力ファイル).writerow(データ)
では、実際に使用例を下で見てみましょう。
1.1. 1次元データの書き出し
まずは、下のコードを実行してみてください。
import csv f = open('out.csv', 'w') data = ['あいうえお','12345'] writer = csv.writer(f) writer.writerow(data) f.close()
上のコードを実行すると、下の画像のような「out.csv」というcsvファイルができます。

1次元配列は特に注意することもないので、上で解説した使い方を使えば問題ありません。
1.2. 2次元データの書き出し(空行削除解説付き)
次に、2次元データの書き出しについて解説します。まずは、下のコードを実行してみましょう。
import csv f = open('out2.csv', 'w') data = [['あいうえお','12345'],['かきくけこ','678910']] writer = csv.writer(f) writer.writerows(data) f.close()
すると、出力はできるのですが、下のように空の行が入ってしまいます。

そこで、それを防ぐためには、ファイルを開く際に「newline=”」を用いることで、空の行が挿入されるのを防ぐことができます。
※空の行は、改行コードと呼ばれるものの処理の仕方により挿入されてしまうため、「newline=”」と改行コードを指定してやることで防ぐことができます。
import csv f = open('out2.csv', 'w', newline='') data = [['あいうえお','12345'],['かきくけこ','678910']] writer = csv.writer(f) writer.writerows(data) f.close()
上のように書くことで、2次元配列も出力することができました。
- listの書き出しは「csv」ライブラリの「writer」オブジェクトを使用
- listが1次元の場合、writerowメソッドを使用
- listが2次元の場合、writerowsメソッドを使用
- 2次元を書き出す場合は、ファイルを開く際に「newline=”」を用いて空行が挿入されないようにする
2. numpyデータのcsvへの書き出し
次に、numpyデータのcsvへの書き出しについて解説します。
numpyをcsvへ書き出す場合は、テキストへの書き出しと同様に「savetxt」を使用します。
ただし、csvは「カンマ区切り」なので、区切り文字を「,」に指定して保存します。区切り文字の指定には「delimiter」を使用します。
では、実際のコードを確認してみましょう。
import numpy as np data = np.arange(9).reshape(3,3) np.savetxt("outnp.csv", data, delimiter=",")

すると、上のようにcsv形式で保存することができます。
使い方は、「numpy.savetxt(ファイル名, データ, delimiter=”,”)」のように使います。
ただし、デフォルトでは文字コードが「”%.18e”」になっているため、気になる方は下のように「fmt」を使ってフォーマットを指定しましょう。
#整数の場合 np.savetxt("outnp.csv", data, delimiter=",", fmt="%d") #実数(少数以下5桁)の場合 np.savetxt("outnp.csv", data, delimiter=",", fmt="%.5f")
他にもいろいろな文字フォーマットがあるので、他のフォーマットを使いたい方は調べて使ってみてください。
- numpyの書き出しは、テキストへの書き出しと同様に「savetxt」を使用
- 「delimiter」を使用し区切り文字を「,」に指定
- 文字コードは「fmt」を使ってフォーマットを指定
3. pandasデータのcsvへの書き出し
最後に、pnadasで作成したデータフレームをcsvへ書き出す方法について解説します。
pandasには、「to_csv」というcsvへ書き出す用のメソッドが用意されているので、それを使用します。
使用方法は、「df.to_csv(ファイル名)」という形で使います。では、実際にコードを確認してみましょう。
import pandas as pd df = pd.DataFrame({"名前":["太郎", "五郎", "花子"], "身長":[169, 175, 160], "成績":[90, 70, 85]}) df = df.set_index('名前') df.to_csv("output_pd.csv", encoding="shift_jis")
すると、下のようにcsvファイルへ書き出すことができました。

※日本語を使う場合は、「encoding=”shift_jis”」を使わないと文字化けしてしまいます。
また余談ですが、csv以外へ書き出したい場合は「sep」を使うことで区切り文字を指定することができます。
import pandas as pd df = pd.DataFrame({"名前":["太郎", "五郎", "花子"], "身長":[169, 175, 160], "成績":[90, 70, 85]}) df = df.set_index('名前') df.to_csv("output_pd.txt", encoding="shift_jis", sep="\t")
すると、下のようにテキスト形式でも保存できます。

※上のコードでは、区切り文字を「タブ(Tab)」に指定しています。
- pandasの書き出しは「to_csv」というcsvへ書き出すメソッドを使用
- 日本語を使う場合は、「encoding=”shift_jis”」を使わないと文字化けする
- csv以外へ書き出したい場合は「sep」を使うことで区切り文字を指定
4. まとめ
今回は、pythonのデータをcsvへ書き出す方法について解説しました。テキストファイルへの書き出しや、もう少し丁寧な解説が見たい方は、本サイトの「Pythonでテキストファイル・csvファイルへの書き出しをしてみよう(write)」で解説しておりますので、そちらをご覧ください。
このサイトで皆さんの疑問が少しでも解決出来たら幸いです。
もっと詳しくPythonについて学びたい方は、本サイトお勧めのプログラミングスクールである「侍テラコヤ」を利用してみるのも良いと思います。
詳しくは下記の記事で解説していますので、良ければそちらもご覧ください。

また、このサイトでは初心者の方向けに「プログラミングのお勧め学習法」も紹介していますので、気になった方はそちらもご覧いただけると幸いです。
コメント
コメント一覧 (2件)
‘tuple’ object has no attribute ‘to_csv’だって
このエラー吐かれる人多いんじゃない?
ご質問いただいているエラーについて、
ご質問者様は、おそらくタプル(()で囲われたデータ)を
to_csvでcsv出力しようとされたのだと思いますが、
to_csvはpandasのDataFrameのメソッドですので、使用できません。
タプルの場合はこのページ上部の
「1. listデータのcsvへの書き出し」の方法を使用していただければ出力することが出来ます。