超初心者向けPython入門講座

仕事の効率化などにpythonを使いたい!けど何から始めらばよいか分からない、といった初心者の方向けに、pythonの導入から実用的な使い方まで、極力分かりやすくまとめたサイトです。

pandas python

PythonのpandasでExcelを操作しよう(読み込み、書き込み)

投稿日:2020-11-29 更新日:

今回は、Pythonのライブラリである「pandas」を用いたExcelの読み書きについて解説したいと思います。

他のライブラリを用いてもエクセルを操作することはできますが、「pandas」は使う機会が多いため、使えるようになると便利です。

解説内容

 

 

1. 必要なライブラリのインストール

まず、「pandas」でexcelデータを読み書きするために必要なライブラリをインストールしましょう。

「pandas」でexcelを操作するためには、実は他にも必要なライブラリがあります。

 

読み込みと書き込みでぞれぞれ以下のライブラリが必要ですので、やりたい操作に応じてインストールしてください。

ライブラリ使用内容対象ファイル補足
xlrd読み込み.xls, .xlsx新旧どちらでも
xlwt書き込み.xls古いexcel
openpyxl書き込み.xlsx新しいexcel

ここで少し補足をすると、excelは古いものと新しいもので拡張子がそれぞれ「.xls」と「.xlsx」に分けられています。

そして、書き込みを行う際はこの拡張子により必要なライブラリが異なるため、注意が必要です。

(excelのデータを扱う機会があるのであれば、全部入れておいても問題ないと思います。)

 

これでexcelデータを扱う準備ができたので、次の章からさっそくデータの読み書きについて解説していこうと思います。

Point
  • excelの読み書きには、「pandas」だけでは不十分
  • 読み込みには「xlrd」が必要
  • 書き込みには「xlwt」と「openpyxl」が必要

 

 

2. Excelデータの読み込み

では、まずexcelデータの読み込みについて解説します。

excelデータの読み込みには、「pandas.read_excel()」を使用します。

 

基本的にはcsvの読み込みと似た操作となります。

ただし、excelは、csvと違って1つのファイルで複数のsheetに分かれているため、その読み込みに多少の差があります。

では、実際にコードを動かしながら確認してみましょう。

  

下のようなエクセルを準備し、読み込んでみます。

Sheet1

Sheet2

 

 

2.1 Sheetを指定した読み込み

まず、読み込むSheetの指定方法について解説します。

sheetの指定には、「sheet_name=」を使用します。

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name=0)

または、

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name='Sheet1')

これで、「Sheet1」を読み込むことができました。 

 

上のコードのように、sheetの指定方法は、「前から何番目か」を数字で入力するか、「sheet名」を文字で入力するか、の2種類の方法があります。

これに関しては、どちらか扱いやすい方を利用されると良いと思います。

 

※ちなみに、前項でインストールしたライブラリですが、「pandas」でexcelを操作する際に内部で動いているだけなので、インポートする必要はありません

 

 

2.2 複数のsheetの読み込み

次に、複数のsheetを一度に読み込む方法について解説します。

といっても、実は先ほどとあまり変わらず、sheet_name」を「list」で受け渡すだけです。

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name=[0, 1])

すると、DataFrameが辞書型として読み込まれます。

 

そして、ここからデータを取り出したい時は「キー」を指定すれば取り出すことができます。

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name=[0, 1])
df1 = df[0]

Sheet1を単体で読み込んだ時と同じように読み込めていますね。

  

ちなみに、「sheet_name」に渡す「list」は「sheet名」でも構いません。ただしこの時は、「キー」も「sheet名」になります。

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name=["Sheet1", "Sheet2"])
df1 = df["Sheet1"]

 

 

2.3 すべてのsheetの読み込み

最後に、すべてのsheetを読み込む方法について解説します。

一つ一つ「list」で渡してもいいのですが、「sheet」が多い場合は少し大変ですよね。

そんな時は、「sheet_name=None」とすることで一括で読み込むことができます。

import pandas as pd
df = pd.read_excel("test.xlsx", sheet_name=None)

※ちなみにこの時の「キー」は「sheet名」になります。

 

これで、excelを「pandas」を使って読み込むことができました。

Point
  • excelデータの読み込みには、「pd.read_excel()」を使用
  • sheetの指定には、「sheet_name=」を使用
  • 複数sheetを読む場合は「sheet_name」を「lsit」で受け渡す
  • すべてのsheetを読み込む場合は「sheet_name=None」

 

 

3. Excelへの書き込み

次に、pandasを利用したexcelへの書き込みについて解説します。

excelへの書き込みには、「df.to_excel()」を使用します。

※dfの部分はデータフレーム名

 

書き込みに使うためにインストールした「xlwt」と「openpyxl」も、pandasの内部で動くためインポートする必要はありません。

では、実際にコードを動かしながら確認してみましょう。

 

3.1 エクセルへの保存(新規作成 or 上書き)

まず、ファイルが無い場合は新規作成し、ファイルがある場合は上書き保存する方法について解説します。

基本的な使い方は、

「df.to_excel("ファイル名", sheet_name="シート名", index=True, header=True)」

という形です。

 

では、実際にexcelに出力してみます。下のコードを確認してください。

import pandas as pd
#書き出すデータの作成
data = [[80,75,90,70,95],[95,80,75,90,65]]
#行列名の作成
col = ["国語", "算数", "理科", "社会", "英語"]
ind = ["太郎", "花子"]
#dataframe作成
df = pd.DataFrame(data, columns=col, index=ind)
#書き出し
df.to_excel("out.xlsx", sheet_name="test", index=True, header=True)

上のコードを実行すると、「out.xlsx」というexcelファイルに下のように出力することができます。

 ここで、sheet名を指定しなかった場合は「sheet1」という名前になります。

 

ただ、「index」や「header」が要らないという場合もあると思います。そんな時は、要らない方を「False」にすれば出力を止めることができます。

df.to_excel("out.xlsx", sheet_name="test", index=False, header=False)

 

ちなみに、pandasのDataFrameの作り方は、下の講座で解説していますので

良ければそちらもご覧ください。

 

 

3.2 複数シートへの書き込み(複数データフレーム)

次に、データが複数ある場合の書き込みについて解説します。

データが複数ある場合は、「pandas.ExcelWriter()」を使用します。

実際のコードを見て確認してみましょう。

import pandas as pd
#dataframe作成
df = pd.DataFrame([[1,2,3,4,5],[10,20,30,40,50]])
df2 = pd.DataFrame([["あ","い","う"],["月","火","水"]])
#書き出し
with pd.ExcelWriter("out2.xlsx") as writer:
    df.to_excel(writer, sheet_name="test1", index=False, header=False)
    df2.to_excel(writer, sheet_name="test2", index=False, header=False)

上のように、pd.ExcelWriter()をwithで開いて使います

結果は下のように、「test1」と「test2」というシートにそれぞれのデータが保存されています。

これで、データが複数あった場合でもデータをexcelに保存することができました。

 

 

3.3 既存のexcelに追記しよう

最後に、すでに存在するexcelに追記する方法について解説します。

追記する場合に限り、「openpyxl」をインポートして使用します。

 

では、先ほど作成した「out2.xlsx」に新しく追記してみましょう。

import pandas as pd
import openpyxl
#dataframe作成
df3 = pd.DataFrame([["test","3"],[10, 20]])
#書き出し
with pd.ExcelWriter("out2.xlsx") as writer:
    writer.book = openpyxl.load_workbook("out2.xlsx")
    df3.to_excel(writer, sheet_name="test3", index=False, header=False)

すると、下のように「test3」というシートに書き込むことができました。

 

ポイントとしては、複数の書き込みの時と同じように「pd.ExcelWriter()」をwithで開き、その後「writer.book=openpyxl.load_workbook()」既存のエクセルを開くところです。

 

ある程度何をやっているかを理解したら、形を覚えて使えるようになりましょう!

  

Point
  • excelへの書き込みには、「df.to_excel()」を使用
  • 基本的な使い方は「df.to_excel(“出力ファイル名”, sheet_name=”シート名”, index=True, header=True)」
  • データが複数ある場合は、「pandas.ExcelWriter()」を使用
  • 既存のexcelに追記する場合に限り「openpyxl」をインポートして使用

 

 

4. おわりに

今回は、pandasを用いてexcelのデータを読み書きする方法について解説しました。csvの読み書き同様、使う機会は多いと思いますので、どちらもマスターしておくといろいろと便利です。

特に、「pandas」は他にもできることがたくさんあるので、ぜひいろいろ使えるように頑張りましょう!

 

ちなみに、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作っていますので、気になった方はそちらもご覧いただけると幸いです。

スポンサーリンク




スポンサーリンク




-pandas, python
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

第12章 Pythonでcsvファイルを読み込んでみよう

さて、前回は「テキストファイル」の読み込みについて解説しましたね。この章では、「csvファイル」の読み込みについて解説したいと思います。 解説内容 csvファイルって何? csvファイルを読み込んでみ …

Pythonでcsvファイルへの書き出し(list,numpy,pandas対応)

今回は、「csvファイル」へのデータの書き出しについて解説していこうと思います。csvファイルとは何か?については、本サイトの「Pythonでcsvファイルを読み込んでみよう」で解説しているので、そち …

第11章 Pythonでテキストファイルを読み込んでみよう(read、readlines、readline)

9章では、「input」を使ってプログラムの外から値を入力しましたね。この章では、「テキストファイル」からのデータの読み込みについて解説したいと思います。(次章では「csvファイル」の読み込みについて …

Pandasとnumpyの違いや変換について(どっちを使えばいいの?)

今回は、Pyhonでデータを扱う際に使えるととても便利な「Pandas」について、同じくデータを扱う際に使用する代表的なライブラリである「numpy」と比較して解説したいと思います。 「Pandas」 …

第4章 Pythonのループ処理(for)を使ってみよう

この章では、いよいよ「ループ処理」を使っていこうと思います! 解説内容 ループ処理って何? ループ処理を使ってみよう ループ処理の範囲 rangeによるループ処理の応用 listを用いたループ処理   …

スポンサーリンク





初めまして、サイトを運営しているキユと申します。

このサイトでは、まったくの初心者がPythonを使って、単純作業や仕事を効率化できるようになるまでに必要なことをまとめています。