【Python】Pandas表データに名前を付けてCSVファイルで出力する方法|to_csvメソッドの使い方とエラー対処法(PermissionError: [Errno 13] Permission denied)

python-how-to-use-pandas-module-to_csv-method Python
記事内に広告が含まれていることがあります。

Pythonのpandasモジュールで読み込んだ表データや、加工・作成した表データを、好きな名前を付けてcsvファイルとしてローカルに出力する方法について解説しています。

また、出力するときに発生するPermissionError: [Errno 13] Permission deniedエラーの原因と対処法について。

▼CSVファイルの読み込みに関しては以下をご参考ください。

to_csvメソッドの使い方

to_csv('ファイルパス', encording='utf_8_sig', index=False)

 └ ①「’ファイルパス’」:絶対パスでも相対パスでも可
 └ ②「encording=’utf_8_sig’」:文字コードの指定
 └ ③「index=False」:pandasで表を読み込んだり作成した際に自動で生成されるインデックス番号の列を含めない指示。

①は必須。②、③は省略可です。



▼補足「utf_8_sig」について
utf_8の上位互換のようなものです。BOM付き、BOMなし両方のutf8を正常に読み込むことができます。

to_csvメソッドの実例

変数「df」に格納した次のような表をCSVファイルとして出力する例になります。

デスクトップに「output.csv」というファイル名で出力する場合は以下のコードを実行します。

df.to_csv("~/desktop/output.csv",index = False,encoding = "utf_8_sig")

▼詳細
①「df.to_csv」
  └データdf(変数)をcsvファイルに変換。

②「”~/desktop/output.csv”」
  └ 絶対パスで出力先を指定。
  └ デスクトップにファイル名「outpu.csv」で出力。
  └ 同じファイルがある場合は上書き。

③「index = False」
  └ 1列目のインデクス番号は不要

④「encoding = “utf_8_sig”」
  └ 文字コードはutf8のシグネチャー付き。

※シート名はファイル名と同じになります。

出力結果

文字化けとエラーの発生原因と対処法

文字化けの発生原因と対処法

文字コードの指定がないと文字化けします。

文字化けの例

df.to_csv("~/desktop/output.csv",index = False)

対処法

出力するコードには必ず、「encoding = “utf_8_sig”」のオプションを設定してください。

Permission denied

出力するファイル名と同じファイルが開かれた状態だとPermission deniedというエラーが発生します。

エラーの例

df.to_csv("~/desktop/output.csv",index = False)

#出力
# PermissionError: [Errno 13] Permission denied: 'C:\\Users\desktop/output.csv'

「Permission denied:」強力に拒否されたように見えますが、実態は開かれていて上書きできなかったという症状です。

対処法

ファイルを閉じてから実行してください。もし、ファイルの権限が書き込み不可になっている場合は権限を変更してください。

タイトルとURLをコピーしました