pandas のデータフレームで CSVとExcel読み書きする方法
Python ライブラリ pandas
のデータフレームを使って、CSV と Excel ファイルへの読み書きを実装してみます。Excelにデータを書き込んだり、CSVからデータをデータフレームに読み込んで見たりします。
CSV入出力
read_csv()
でCSVファイルをデータフレームに読み込む
pandas.read_csv — pandas 1.1.1 documentation
read_csv()
を使うと、CSVファイルの中身をデータフレーム形式で読み出すことができます。
サンプルとして次のようなフォーマットのCSVファイルを用意してこれを読み込みます。
"COL-1","COL-2","COL-3"
"DATA-11","DATA-12","DATA-13"
"DATA-21","DATA-22","DATA-23"
"DATA-31","DATA-32","DATA-33"
カンマ区切りでダブルクォートで括られたフォーマットのCSVファイルです。これを読み込みます。
import pandas as pd
df = pd.read_excel('in.csv', sep=',', quotechar='"', dtype=str)
print(df)
# COL-1 COL-2 COL-3
# 0 DATA-11 DATA-12 DATA-13
# 1 DATA-21 DATA-22 DATA-23
# 2 DATA-31 DATA-32 DATA-33
sep
が区切り文字、quotechar
がクォート文字の指定です。最後の dtype=str
ではすべてのデータを文字列型で読み出す指定をしています。
型の指定をしていないと、pandas側でいい感じに数値型などで読みだされるようになります。場合によってはゼロ埋めが消えたりして困ることにもなるので指定しています。列ごとに個別に指定したい場合は、dtype={'COL-1': str, 'COL-2': float}
みたいにすれば指定できます。
to_csv()
でデータフレームをCSVファイルに書き出す
pandas.DataFrame.to_csv — pandas 1.1.1 documentation
to_csv()
でデータフレームの内容をCSVファイルに書き出すことができます。
import pandas as pd
import csv
# 適当なデータフレームを用意
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# CSV形式で出力
df.to_csv('out.csv', index=False, sep=',', quotechar='"', quoting=csv.QUOTE_ALL)
実行すると、CSV形式でデータを in.csv
のデータをそのまま out.csv
に書き出してくれます。
index=False
は指定しないとデータフレームが持つ列情報を出力してしまうので、これを出力しないようにするパラメータです。sep
, quotechar
はそれぞれ区切り文字とクォート文字の設定です。quoting=csv.QUOTE_ALL
はクォートの出力を必須にする設定です。デフォルトだとクォートが無くても問題のない値の場合はクォートなしで出力されるような設定になっています。
Excel入出力
基本はCSV入出力の内容と同じです。ただし pandas で Excel の操作を行うためには xlrd
と xlwt
、openpyxl
のライブラリが必要になります。先にインストールしておきます。
$ pip install xlrd xlwt openpyxl
read_excel()
でExcelファイルをデータフレームに読み込む
pandas.read_excel — pandas 1.1.1 documentation
適当なExcelファイルを用意して動きを確認してみます。
import pandas as pd
df = pd.read_excel('in.xlsx', dtype=str, sheet_name='Sheet1')
print(df)
# COL-1 COL-2 COL-3
# 0 DATA-11 DATA-12 DATA-13
# 1 DATA-21 DATA-22 DATA-23
# 2 DATA-31 DATA-32 DATA-33
sheet_name
でシート名もしくはシート番号(0-indexed)を指定してデータを読み出すことができます。読み出すシート名を配列で指定すると、複数のシートを dict
型でまとめて読み出せます。
import pandas as pd
df = pd.read_excel('in.xlsx', dtype=str, sheet_name=[0, 1])
print(df)
# {0: COL-1 COL-2 COL-3
# 0 DATA-11 DATA-12 DATA-13
# 1 DATA-21 DATA-22 DATA-23
# 2 DATA-31 DATA-32 DATA-33, 1: Name
# 0 シート2}
to_excel()
でデータフレームをExcelファイルに書き出す
pandas.DataFrame.to_excel — pandas 1.1.1 documentation
to_excel()
でデータフレームの内容をエクセルファイルに書き出すことができます。
import pandas as pd
# 適当なデータフレームを用意
df = pd.DataFrame([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Excelに書き出す
df.to_excel('out.xlsx', sheet_name='Sheet1', index=False)
その他引数の詳細等はドキュメントを見ていただければよいかと思います。
以上。
コメントを書く