【Python】 Pandas ~ 基本編 / Excel => CSVに変換 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/11/18/000000

の続き。

AWS Glue で、Excel ファイルを開いて、
CSVに変換する必要が出てきたので、メモ。

なお、AWS Glue環境下でのExcel ファイルを扱うことに関しては
以下の関連記事を参照のこと。

AWS Glue ~ Excelを扱うには / PySpark (Glue2.0) 版 ~
https://dk521123.hatenablog.com/entry/2020/10/09/144520

■ Pandas でのCSVに変換

* to_csv() を使う。
 => 以下、API仕様。

API仕様
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

主なオプション

# Option Names Explanations
1 index=True/False インデックスを書き出すか無視するか
2 header=True/False ヘッダーを書き出すか無視するか
3 quoting=csv.QUOTE_ALL etc 囲み文字の指定(csv.XXX で指定する場合「import csv」)
4 encoding=[Format] エンコーディング(defaults ‘utf-8’)
5 sep=[Delimiter] 区切り文字

■ サンプル

例1:Hello World!

import pandas as pd

data_frame = pd.read_excel('sample.xlsx')
data_frame.to_csv('output_sample.csv', index=False)

例2:to_csv の オプション

import csv
import pandas as pd

data_frame = pd.read_excel(r'C:\tmp\Book1.xlsx')
data_frame.to_csv(
  'output_sample.csv',
  index=False,
  header=True,
  sep=',',
  quoting=csv.QUOTE_ALL)

# if (data_frame and len(data_frame) < 0):
#  => ValueError: The truth value of a DataFrame is ambiguous.
#     Use a.empty, a.bool(), a.item(), a.any() or a.all().
if (data_frame.empty):
  print('Zero')
else:
  print('Count = {}'.format(len(data_frame)))

print('See output_sample.csv')

コンソール出力結果

Count = 3
See output_sample.csv

C:\tmp\Book1.xlsx

id   name    note
1   mike    hello
2   Tom hi, Tom"!!
3   Kevin   world!

output_sample.csv

"id","name","note"
"1","mike","hello"
"2","Tom","hi, Tom""!!"
"3","Kevin","world!"

■ トラブル「ValueError: The truth value of a DataFrame is ambiguous」について

以下のような書き方をすると、「例外内容」のようなエラーが発生する

例外が発生する条件の書き方

if (data_frame and len(data_frame) < 0):

例外内容

ValueError: The truth value of a DataFrame is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().

* ambiguous = 曖昧

=> DataFrame 全体を判定しているのか、
  各要素で判定しているのか曖昧だから
  a.empty, a.bool(), a.item(), a.any() 又は a.all()を使いなさい
  ってエラー。

参考文献
https://note.nkmk.me/python-numpy-pandas-value-error-ambiguous/

参考文献

https://note.nkmk.me/python-pandas-to-csv/

関連記事

Pandas ~ 基本編 / Excel編 ~
https://dk521123.hatenablog.com/entry/2020/11/18/000000
Pandas ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/22/014957
PythonExcel を扱うには
https://dk521123.hatenablog.com/entry/2019/11/05/221010
Python ~ 基本編 / Excelを扱う・OpenPyXL ~
https://dk521123.hatenablog.com/entry/2020/08/27/000000
AWS Glue ~ Excelを扱うには / PySpark (Glue2.0) 版 ~
https://dk521123.hatenablog.com/entry/2020/10/09/144520
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251