to_csvでCSV,TSVファイルを書き込む / Python Pandas

 

{{DZ_TITLE}}
CSVをPandasで書込む方法。

基本形

以下の方法で、簡単に読み込むことが可能です。

df.to_csv('test.csv', encoding='utf8', index=False)

サンプル

プログラム

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# CSVを保存する
df.to_csv('test.csv', encoding='utf8', index=False)

作成されたデータ

No,Type,Voice
1,いぬ,わん
2,ねこ,にゃん
3,すずめ,ちゅん

パラメータ

エンコーディング 、 encoding

パラメータは書込みたいファイルの種類に合わせてください。
よく使うencoding

codec 説明
utf8 今、最もよく使われているユニコード系エンコーディング
cp932 MS-Windows版の拡張されたShift-JIS
shift_jis 一般的案Shift-JIS、Windows等拡張された文字は書込めない
utf_8_sig UTF8のBOM付、WindowsのExcel向けに出力するときに重宝する
df.to_csv('test.csv', encoding='utf8'   , index=False)
df.to_csv('test.csv', encoding='cp932'  , index=False)
df.to_csv('test.csv', encoding='shift_jis', index=False)
df.to_csv('test.csv', encoding='utf_8_sig', index=False)

インデックスを保存 、 index

他のサンプルですと、index=Falseを指定しているものが多いですが、ここではあえて外します。

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# CSVを保存する
df.to_csv('test.csv', encoding='utf8')

index=False 有り

No,Type,Voice
1,いぬ,わん
2,ねこ,にゃん
3,すずめ,ちゅん

index=False 無し
左に欄が1つ追加されます。
例えばIndexがDatetimeだったり重要な値の場合はindex=Falseを登録する必要があります。

,No,Type,Voice
0,1,いぬ,わん
1,2,ねこ,にゃん
2,3,すずめ,ちゅん

指定したカラムだけCSVに保存する、columns

あえてNo以外のTypeとVoiceを指定してみます。

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# CSVを保存する
df.to_csv('test.csv', encoding='utf8', index=False, columns=['Type', 'Voice'])

No欄以外がCSVに保存されています。

Type,Voice
いぬ,わん
ねこ,にゃん
すずめ,ちゅん

ヘッダーを消す、header

ヘッダーを消す場合header=False

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# CSVを保存する
df.to_csv('test.csv', encoding='utf8', index=False, header=False)

ヘッダーが消えます

1,いぬ,わん
2,ねこ,にゃん
3,すずめ,ちゅん

TSVファイル(タブ区切り)ファイルなどで保存する、sep

パラメータsepのデフォルトはCSV向けの,(カンマ)ですが、
カンマ以外のセパレータも指定可能です。

TSVの場合sep=’\t’となる。(\t)はタブを意味します。

英語環境と日本語環境で\の表示が変わります。
¥:日本語環境
\:英語完了 まれに日本語環境でも、英語環境と同じ\が表示される場合があります。(フォントに依存します)

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'No':[1,2,3], 'Type':['いぬ','ねこ','すずめ'], 'Voice':['わん','にゃん','ちゅん'] })

# CSVを保存する
df.to_csv('test.csv', encoding='utf8', index=False, sep='\t')

結果

No	Type	Voice
1	いぬ	わん
2	ねこ	にゃん
3	すずめ	ちゅん

日時の表示フォーマット、date_format

import pandas as pd

# テストデータ DataFrameを作成する
df = pd.DataFrame( {'Timestamp':['2020/1/10 1:2:4','2020/1/11 11:31:14','2020/01/12 12:6:24'],
                    'Type':['いぬ','ねこ','すずめ'],
                    'Voice':['わん','にゃん','ちゅん'] })
# Timestamp の型をdatetime型に変換する
df['Timestamp'] = pd.to_datetime(df['Timestamp'], format='%Y/%m/%d %H:%M:%S')

# CSVを保存する
df.to_csv('test.csv', encoding='utf8', index=False, date_format='%Y-%m-%d %H:%M')
Timestamp,Type,Voice
2020-01-10 01:02,いぬ,わん
2020-01-11 11:31,ねこ,にゃん
2020-01-12 12:06,すずめ,ちゅん

関連

CSVファイルの読込 read_csv
CSVファイルの保存 to_excel
Python - Pandas徹底解説

おすすめ記事

geojsonをfoliumで綺麗な地図を作る
geojsonをfoliumで綺麗な地図を作る
文字列による条件抽出 - Python Pandas
文字列による条件抽出 - Python Pandas
Django エラー 『NoReverseMatch at … ‘…’ is not a registered namespace』 対策
Django エラー 『NoReverseMatch at … ‘…’ is not a registered namespace』 対策
URL解析、接続 - Python徹底解説
URL解析、接続 - Python徹底解説
みちびき 高精度 L1S対応、Sony spresenseは買いなのか?
みちびき 高精度 L1S対応、Sony spresenseは買いなのか?
SEO対策として、セキュリティー対策ソフトでチェック
SEO対策として、セキュリティー対策ソフトでチェック
Supponsered

もっとPythonを学びたいなら

Python徹底解説
Python - OpenCV徹底解説

外部サイト
↓プログラムを学んでみたい場合、学習コースなどもおすすめです!

Comments

comments powered by Disqus