dataframeをcsv出力する方法
とりあえず出力するだけなら以下でOK
df.to_csv('出力先path')
細かい出力設定はをパラメータ説明を確認
サンプル
デスクトップにCSV出力をするサンプル(最も単純な設定)
import os
import pandas as pd
import numpy as np
# デスクトップパス取得
desktop_path = os.path.expanduser('~/Desktop')
# 出力ファイル名を追加して出力パスを設定
out_path = os.path.join(desktop_path,r'sample.csv')
df = pd.DataFrame([[25,'pika',88,'Electric',np.NaN,np.NaN],
[131,'rara',80,'Water','Ice',np.NaN],
[143,'gon',82,'Normal',np.NaN,np.NaN],
[3,'fushi',84,'Grass','Poison',np.NaN],
[6,'kage',84,'Fire','Flying',np.NaN],
[9,'kame',84,'Water',np.NaN,np.NaN]],
columns=['no','name','level','type1','type2','helditem'])
# 作成したdf確認
print(df)
"""
no name level type1 type2 helditem
0 25 pika 88 Electric NaN NaN
1 131 rara 80 Water Ice NaN
2 143 gon 82 Normal NaN NaN
3 3 fushi 84 Grass Poison NaN
4 6 kage 84 Fire Flying NaN
5 9 kame 84 Water NaN NaN
"""
# csv出力
df.to_csv(out_path)
実行するとデスクトップに「sample.csv」が出力される
すでに「sample.csv」という名前のファイルがある場合は上書きされる
メモ帳で開くと中身が以下の様になっていることが確認できる
,no,name,level,type1,type2,helditem
0,25,pika,88,Electric,,
1,131,rara,80,Water,Ice,
2,143,gon,82,Normal,,
3,3,fushi,84,Grass,Poison,
4,6,kage,84,Fire,Flying,
5,9,kame,84,Water,,
区切り文字をカンマ以外にする
区切り文字をカンマ以外にしたらcsvと言えるか謎ですが。。。
例えばダブルコロン(:)で区切るとしたら
df.to_csv(out_path,sep=':')
以下の様に出力される
:no:name:level:type1:type2:helditem
0:25:pika:88:Electric::
1:131:rara:80:Water:Ice:
2:143:gon:82:Normal::
3:3:fushi:84:Grass:Poison:
4:6:kage:84:Fire:Flying:
5:9:kame:84:Water::
欠損データを特定の文字として出力する
欠損データ(np.NaNなど)を[null]として出力させるとしたら
df.to_csv(out_path,na_rep='null')
以下の様に出力される
,no,name,level,type1,type2,helditem
0,25,pika,88,Electric,null,null
1,131,rara,80,Water,Ice,null
2,143,gon,82,Normal,null,null
3,3,fushi,84,Grass,Poison,null
4,6,kage,84,Fire,Flying,null
5,9,kame,84,Water,null,null
指定した列のみ出力する
「no」,「type1」,「type2」の3列のみ出力する
また、「no,type2,type1」の順番で出力をさせるとしたら
df.to_csv(out_path,columns=['no','type2','type1'])
以下の様に出力される
,no,type2,type1
0,25,,Electric
1,131,Ice,Water
2,143,,Normal
3,3,Poison,Grass
4,6,Flying,Fire
5,9,,Water
仕様
DataFrame.to_csv(path_or_buf=None, sep=’,’, na_rep=”, float_format=None, columns=None, header=True, index=True, index_label=None, mode=’w’, encoding=None, compression=’infer’, quoting=None, quotechar='”‘, line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal=’.’, errors=’strict’, storage_options=None)
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html
パラメータ説明
パラメータ名 | 初期値 | 説明 |
---|---|---|
path_or_buf | None | 出力するパス |
sep | ‘,’ | フィールドの区切り文字 |
na_rep | ” | 欠損データの表現 |
float_format | None | 浮動小数点数のフォーマット文字列 |
columns | None | 書き込む列 |
header | True | 列(カラム)名の書き出し |
index | True | 行名(インデックス)の書き出し |
index_label | None | インデックスの設定 |
mode | ‘w’ | 書き込みモード |
encoding | None | 出力するエンコーディング |
compression | ‘infer’ | 圧縮の設定 |
quoting | None | float_formatを設定した場合、floatは文字列に変換される。csv.QUOTE_NONNUMERICは非数値として扱う |
quotechar | ‘”‘ | フィールドを引用するための文字 |
line_terminator | None | 改行文字の設定 |
chunksize | None | 一度に書き込む行 |
date_format | None | 日時のフォーマット文字列 |
doublequote | True | フィールド内のquotecharの引用を設定 |
escapechar | None | sepとquotecharをエスケープするために使用する文字の設定 |
decimal | ‘.’ | 小数点として認識される文字 |
errors | ‘strict’ | エラーの時の処理方法 |
storage_options | None | 特定のストレージ接続するときの設定 |
開発環境
Windows10:22H2、python:3.10.9、pandas:1.5.3
コメント