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の読み書きをおさらいしたのは、実はエクセルファイルでも同じようなコマンドを使うからでした。
まとめてみるとこんな感じ。
csv | excel | |
import | pandas | pandas 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」ではもっと複雑なエクセルファイルを読み込んだり、書き出したりすることができるそうですが、それはまた使うようになったら紹介したいと思います。
ではでは今回はこんな感じで。
コメント