【Python初心者入門】OpenPyXLなどを使い分割・複数のExcelファイルを1つに連結(結合)する
参考:https://www.youtube.com/watch?v=-5v7CuXm7Ns
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。
■分割されたExcelファイルを用意する
OpenPyXLなどを使いExcelファイルを1つに連結(結合)してみますので、まずは分割されたExcelファイルを用意します。
Googleスプレッドシートで、上記のような支店ごとの売上管理表を作って、「.xlsx」形式でローカル上にダウンロードします。
ダウンロードした「.xlsx」形式のファイルを複製し、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」と支店ごとのファイルにします。
■分割された(複数)Excelファイルを1つに連結(結合)するプログラムを書く
■コード
import openpyxl import pandas as pd import glob #分割されたファイルを1つにまとめたファイルを書き出す場所 export_file_path = r'C:\Users\user\MyPandas' #分割されたファイルが置かれている場所 import_folder_path = r'C:\Users\user\MyPandas\rawdate-test' #ファイルを読み込む場所にあるxlsxファイルを取得 path = import_folder_path + '/' + '*.xlsx' #ファイルの中にある「.xlsx」に一致するものを取得 file_path = glob.glob(path) #Excelファイルを読み込む df_concat=pd.DataFrame() for i in file_path: df_read_excel=pd.read_excel(i) print(df_read_excel.head(3))
まずは、分割されたExcelファイルを、「C:\Users\user\MyPandas\rawdate-test」という場所(パス)に置きます。
「C:\Users\user\MyPandas\rawdate-test」という場所に置かれた「.xlsx」形式のファイルを取得、読み込みを行い、ちゃんと読み込んでいるか出力してみます。
■実行
今回のプログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。
実行してみると、分割されたファイルが置かれている場所(パス)のExcelファイルを取得し中身が読み込まれて、出力されていることを確認できました。
分割された(複数)Excelを1つに連結(結合)するconcat関数を使う
分割されたファイルが置かれている場所(パス)のExcelファイルを取得し中身が読み込まれて、出力されていることを確認できましたので、次に本題である分割されたExcelを1つに連結(結合)するプログラムを書いてきます。
■コード
import openpyxl import pandas as pd import glob #分割されたファイルを1つにまとめたファイルを書き出す場所 export_file_path = r'C:\Users\user\MyPandas' #分割されたファイルが置かれている場所 import_folder_path = r'C:\Users\user\MyPandas\rawdate-test' #ファイルを読み込む場所にあるxlsxファイルを取得 path = import_folder_path + '/' + '*.xlsx' #ファイルの中にある「.xlsx」に一致するものを取得 file_path = glob.glob(path) #Excelファイルを読み込む df_concat=pd.DataFrame() for i in file_path: df_read_excel=pd.read_excel(i) df_concat=pd.concat([df_read_excel,df_concat]) print(df_concat)
今回は、分割されたExcelファイルのデータの中身をそのままつなげるため、「pd.concat」というconcat関数を使います。concat関数を使うことで、1つに連結(結合)するが可能です。
■実行
concat関数を記述したプログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。
実行してみると、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」と支店ごとの分割されたExcelファイルが1つに連結(結合)されていることが確認できました。
■1つに連結(結合)されたExcelファイルを書き出してみる。
支店ごとの分割されたExcelファイルが1つに連結(結合)されていることが確認できましたので、この連結(結合)されているものを、「.xlsx」形式で書き出してみます。
■コード
import openpyxl import pandas as pd import glob #分割されたファイルを1つにまとめたファイルを書き出す場所 export_file_path = r'C:\Users\user\MyPandas' #分割されたファイルが置かれている場所 import_folder_path = r'C:\Users\user\MyPandas\rawdate-test' #ファイルを読み込む場所にあるxlsxファイルを取得 path = import_folder_path + '/' + '*.xlsx' #ファイルの中にある「.xlsx」に一致するものを取得 file_path = glob.glob(path) #Excelファイルを読み込む df_concat=pd.DataFrame() for i in file_path: df_read_excel=pd.read_excel(i) df_concat=pd.concat([df_read_excel,df_concat]) #結合したものをExcelファイルで書き出す df_concat.to_excel(export_file_path +'/'+'全店舗総合売上管理表.xlsx')
「to_excel」という記述で、Excelファイルを書き出す場所(パス)として指定した「C:\Users\user\MyPandas」に、「全店舗総合売上管理表.xlsx」というExcelファイルを書き出すプログラムです。
■実行
プログラムを、「openpyxl-test01.py」というファイル名で保存し、コマンドプロンプトから実行してみます。
実行してみると、何も表示されずに何も起こっていないように見えますが、Excelファイルを書き出す場所(パス)を確認してみます。
確認してみると、「全店舗総合売上管理表.xlsx」というExcelファイルを書き出されていることが確認できました。
Googleスプレッドシートで「全店舗総合売上管理表.xlsx」の中身を確認してみると、「堺支店」、「寝屋川支店」、「大阪支店」、「南堀江支店」、「梅田支店」のデータが1つに連結(結合)されていることが確認できました。
コメント