Pandasでエクセルファイル(.xlsx)の読み書きをしてみる

目次

Pandas

色々Pandasを扱ってきて、できたらいいなと思っていたことが、エクセルファイルの読み書き。

csvファイルやtsvファイルを読み書きできて、Jupyter notebook上でテーブルを表示できると言っても、ソートして眺めたりするのにエクセルが便利だったりすることもありますよね。

ということで今回はPandasでエクセルファイル(.xlsx)の読み書きに関して解説していこうと思います。

そのためには元となるデータが必要です。

元データは前に作成したダミーデータ作成プログラムで作成してみました。

アップロードしておきますので、必要な方はこちらからダウンロードしてください。

次にエクセルファイルを扱うためのモジュール「openpyxl」をインストールします。

pip install openpyxl

インストールが終了したら、カーネルの再起動を行っておいてください。

それではまずはcsvファイルの読み書きからおさらいしていきましょう。

csvファイルの読み込み

csvファイルを読み込むには、「.read_csv(“ファイル名”)」でした。

<セル1>

import pandas as pd

df_csv = pd.read_csv("pandas24_testdata.txt", index_col=0)

df_csv

実行結果

またこの際、「index_col=0」をつけておかないと、インデックス行が付加されてしまうので注意です。

<セル2>

df_csv2 = pd.read_csv("pandas24_testdata.txt")

df_csv2

実行結果

またファイルを出力するには「.to_csv(“ファイル名”)」を使いました。

<セル3>

df_csv.to_csv("testdata_csv.csv")

実行結果

実行すると「testdata_csv.csv」というファイルが出力されます。

excelファイルの読み書き

それでは次にexcelファイルの読み書きを試していきましょう。

まずは先ほど読み込んだ「pandas24_testdata.txt」をエクセルファイルとして書き出してみます。

ということでここで「openpyxl」をインポートしておきましょう。

そしてエクセルファイルとして書き出すには「.to_excel(“ファイル名”)」を使います。

import openpyxl

df_csv.to_excel("testdata_excel.xlsx")

実行結果

実行すると「testdata_excel.xlsx」というファイルが出力されます。

(エクセル持っていないので、Numbersの画面ですが、お気になさらぬよう…)

次に読み込みをしていきましょう。

エクセルファイルを読み込むには「.read_excel(“ファイル名”)」です。

df_excel = pd.read_excel("testdata_excel.xlsx")

df_excel

実行結果

これでエクセルファイルを読み込めました。

最初にcsvの読み書きをおさらいしたのは、実はエクセルファイルでも同じようなコマンドを使うからでした。

まとめてみるとこんな感じ。

csvexcel
importpandaspandas
openpyxl
読み込み.read_csv(“ファイル名”).read_excel(“ファイル名”)
書き込み.to_csv(“ファイル名”).to_csv(“ファイル名”)

おまけ:.to_excelでのエラー

実は「.to_excel(“ファイル名”)」を試している時、エラーで少し困惑してしまったので、ちょっとそちらの解説をしておきます。

実は「.to_excel(“ファイル名”)」のコマンドでは拡張子が「.xlsx」のものしか出力できません。

つまりこんなふうにタイプミスをするとエラーが出てきます。

df_excel = pd.read_excel("testdata_excel.xlsxx")

実行結果
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-20-cd542cf6ece4> in <module>
----> 1 df_excel = pd.read_excel("testdata_excel.xlsxx")

(中略)

FileNotFoundError: [Errno 2] No such file or directory: 'testdata_excel.xlsxx'

反面、「.to_csv(“ファイル名”)」では拡張子が何であろうと出力はされます。

df_csv.to_csv("testdata_csv.csvv")

実行結果
(問題なく testdata_csv.csvvが出力される)

ということで「.to_excel(“ファイル名”)」を使う際には拡張子を間違えないように注意しましょう。

今回紹介した「openpyxl」ではもっと複雑なエクセルファイルを読み込んだり、書き出したりすることができるそうですが、それはまた使うようになったら紹介したいと思います。

ではでは今回はこんな感じで。

よかったらシェアしてね!

コメント

コメントする

目次
閉じる