【Python】Pandas ~ 基本編 / Excel編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/11/05/221010

の続き。

今回は、Pandas で Excel を扱う際のメモ。

目次

【0】使用上の注意
【1】読み込み
【2】書き込み
【Z】応用編
  例1:複数Excelファイル読み込んで、商品ごとの売上データを出力

※ CSV への変換については、以下の関連記事を参照のこと。

Pandas ~ 基本編 / Excel => CSVに変換 ~
https://dk521123.hatenablog.com/entry/2021/01/25/000000

【0】使用上の注意

PandasでExcelを扱うには、「xlrd / xlwt」が必要な模様。
 => なので、環境になければインストールする必要がある

【1】読み込み

import pandas as pd

input_book = pd.ExcelFile('sample.xlsx')

# sheet_namesメソッドでExcelブック内の
# 各シートの名前をリストで取得できる
sheet_name_list = input_book.sheet_names

# DataFrameとして一つ目のsheetを読込
excel_data_frame = input_book.parse(sheet_name_list[0])

# 読み込んだシートの先頭2行を表示
print(excel_data_frame.head(2))

DataFrameとして読み込み場合

import pandas as pd

data_frame = pd.read_excel(
  'sample.xlsx', sheet_name='新しいシート')

【2】書き込み

import pandas as pd

data_frame = pd.read_excel(
  'sample.xlsx', sheet_name='新しいシート')

# Excel出力
with pd.ExcelWriter('out_clone.xlsx') as writer:
  data_frame.to_excel(writer)

print("Done")

【Z】応用編

例1:複数Excelファイル読み込んで、商品ごとの売上データを出力

import os
import pandas as pd

path = "./Excel/"
excel_files = os.listdir(path)

sales_df = pd.DataFrame()
for excel_file in excel_files:
  full_path = path + excel_file
  print("full_path = {}".format(full_path))
  data_frame = pd.read_excel(full_path)
  sales_df = pd.concat(
    [sales_df, data_frame], ignore_index=True)

sales_by_channel = sales_df.groupby('商品名').sum()

# 商品ごとの売上データを出力
print(sales_by_channel)

入力データ:2020年11月_売上.xlsx

商品名    売上
機械A 600,000
機械B 200,000
機械A 960,000
機械B 200,000

入力データ:2020年12月_売上.xlsx

商品名    売上
機械B 600,000
機械A 13,000

出力結果

full_path = ./Excel/2020年11月_売上.xlsx
full_path = ./Excel/2020年12月_売上.xlsx
          売上
商品名
機械A  1573000
機械B  1000000

関連記事

Pandas ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/22/014957
Pandas ~ 基本編 / Excel => CSVに変換 ~
https://dk521123.hatenablog.com/entry/2021/01/25/000000
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
Pandas で Excel を扱った際のトラブル
https://dk521123.hatenablog.com/entry/2021/07/03/000000