Pythonで、Excel・CSVを結合することもできます。
その方法を解説してみました。
※Pythonのコード by Leitz Phone 1
Pythonで複数のExcelファイルを結合
Pythonを使うと、複数のExcelファイルを結合できます。
たとえば、こういったExcelファイルが
1つのフォルダに複数あるとします。
これらをPythonで1つにできるのです。
このように。
このコードです。
前提条件や準備は、後述します。
☆のフォルダ名はそれぞれ変えていただければ。
#■初期設定 #ライブラリの読み込み import glob import pandas # 読み込んだファイルを入れるリストを準備 lists = [] #☆フォルダ、ファイルの種類を指定 folder='/Users/yoichiinoue/Dropbox/data/*.xlsx' #結合後のExcelファイル名を指定 excel_file_name='merge.xlsx' #1 フォルダ内のファイル一覧を読み込み file_list=glob.glob(folder) #2 ファイル一覧をExcelでリストへ追加 for i in file_list: lists.append(pandas.read_excel(i)) #3 リスト内のExcelをマージ merge_data = pandas.concat(lists) #4 マージしたデータをExcelへ書き込み merge_data.to_excel(excel_file_name,index=0)
少し変更すれば、CSVにも対応可能です。
(赤字が変えたところ)
#■初期設定 #ライブラリの読み込み import glob import pandas # 読み込んだファイルを入れるリストを準備 lists = [] #フォルダ、ファイルの種類を指定 folder='/Users/yoichiinoue/Dropbox/data/*.csv' #結合後のExcelファイル名を指定 excel_file_name='merge.xlsx' #1 フォルダ内のファイル一覧を読み込み file_list=glob.glob(folder) #2 ファイル一覧をExcelでリストへ追加 for i in file_list: lists.append(pandas.read_csv(i ,encoding='cp932')) #3 リスト内のExcelをマージ merge_data = pandas.concat(lists) #4 マージしたデータをExcelへ書き込み merge_data.to_excel(excel_file_name,index=0)
Excelを結合するほうのコードを解説します。
どういうものか、理解しておくのが好ましいので。
Pythonのコードの解説
ライブラリの読み込み
Pythonではライブラリという機能を読み込み、それを使うことができます。
今回使うのは、
・フォルダ、ファイルを操作するglob
・Excel、CSVを操作するpandas
これらを読み込みます。
このうち、pandasは、事前にインストールしなければいけません。
Windows Power Shell(Windows)、ターミナル(Mac)で、このようにインストールしましょう。
pip install pandas
※PIP自体のアップデートが必要な場合もあります。
pip install –upgrade pip
#■初期設定 #ライブラリの読み込み import glob import pandas
リストの準備
次にリストを準備します。
# 読み込んだファイルを入れるリストを準備 lists = []
リストとは、
[1,2,3]
といったもので、このリストにすれば、pandasでマージもできるのです。
この空のリストをまず準備し、listsという名前をつけます。
フォルダ、ファイルの種類、結合後のファイル名を指定
結合したいファイルを1つのフォルダに入れ、そのフォルダを指定しましょう。
folderという名前をつけています。
さらに、結合後のファイル名をつけましょう。
merge.Xlsxというファイル名で、excel_file_nameという名前をつけました。
☆フォルダ、ファイルの種類を指定 folder='/Users/yoichiinoue/Dropbox/data/*.xlsx' #結合後のExcelファイル名を指定 excel_file_name='merge.xlsx'
こういったフォルダ名を書くには、Windowsならエクスプローラーで選択して[パスのコピー]
MacならFinderで選択して[〜のパス名をコピー]を使いましょう。
フォルダにあるファイル一覧を読み込み
次にライブラリglobの機能を使い、フォルダにあるファイル一覧を読み込みます。
Excelファイルだけ読み込みたいので、.xlsxと、指定しました。
CSVファイルなら、.csvです。
その一覧にfile_listという名前をつけました。
#1 フォルダ内のファイル一覧を読み込み file_list=glob.glob(folder)
glob.glob(フォルダ名)で、そのフォルダにあるファイル一覧を読み込めます。
試しに、
print(file_list)
で出力してみました。
こんな感じです。
間違いなく読み込まれています。
そのファイル一覧をExcelで読み込み、リストへ
次に、pandasの機能、read_excel(ファイル名)で、Excelファイルの中を読み取り、それを空のリストへ追加していきます。
#2 ファイル一覧をExcelでリストへ追加 for i in file_list: lists.append(pandas.read_excel(i))
forは繰り返しという意味で、for i in file_list:で、file_list(ファイル一覧)のファイルに繰り返し処理をします。
どんな処理をするかは、インデント(字下げ)をつけて書いたlists.append(pandas.read_excel(i))です。
lists.appned(○)で、リストに○を追加できます。
lists=[1,2,3]
で、
lists.append(4)
を書けば、
list=[1,2,3,4]
となるのです。
pandas.read_excel(○)
で、○というファイル名のExcelを読み込めます。
lists.append(pandas.read_excel(‘/Users/yoichiinoue/Dropbox/data/大崎支店.xlsx’))
print(lists)
lists.append(pandas.read_excel(‘/Users/yoichiinoue/Dropbox/data/東京支店.xlsx’))
print(lists)
これをフォルダにある12個のファイルで繰り返すのです。
毎回○を入れていたら大変ですので、iとして、iに1、2、3、4……といれて12まで繰り返しています。
for i in file_list:
lists.append(pandas.read_excel(i))
print(lists)
リスト内のExcelをマージ
リストにしたExcelファイルは、pandasの機能でマージできます。
#3 リスト内のExcelをマージ merge_data = pandas.concat(lists)
pandas.concat(○)
で、○というリストをマージできるのです。
merge_dataという名前をつけました。
マージしたデータをExcelへ
最後は、そのマージしたデータをExcelに書き込みます。
#4 マージしたデータをExcelへ書き込み merge_data.to_excel(excel_file_name,index=0)
これもpandasの機能で、
○.to.excel(△)
で、○を△というファイルに書き込みます。
△は、冒頭で指定したmerge.xlsxです。
そのあとの、index=0は、番号を表示させないという指定。
これがないと、こうなります。
まあ、あってもいいといえばいいんですけど。
ExcelマクロかPythonか
Excelファイル、CSVファイルの結合は、Excelマクロでもできます。
フォルダ内のExcel・CSVを1つにまとめる(結合する、マージする)マクロ | EX-IT
Excelの機能でも。
フォルダ内の複数のExcelファイルを結合する「取得と変換」(Power Query)
Pythonの場合、
・Pythonのインストール
・アップデート
といった手間もかかります。
PythonとEXCELマクロ比較。Pythonの導入・設定【Windows・Mac両対応】
ここをどう考えるかでしょうね。
今回は、pandasのインストールも必要です。
また、フォルダ名の指定も、敷居はやや高いかと。
ExcelマクロだとExcelだけで完結するメリットもあります。
Pythonを使えるようになれば、他の自動化(ブラウザ、異なるソフト間)もしやすいというメリットもあるでしょう。
迷ったら、ExcelマクロもPythonもどっちもやってみる、どっちも使えるようにしておくのがおすすめです。
複数のプログラミング言語を学ぶメリットも大きいので。
そういう意味では、「取得と変換」(Power Query)は、おすすめしません。
知っておいて損はありませんが。
コードを書くことをすっ飛ばすのは、効率化スキルを磨く上ではデメリットがあります。
考え方が古いかもしれませんが。
(マウスのクリックで手軽に操作できるようになったしっぺ返しは、確実にあります)
今回のコードもぜひ書いてみていただければ。
■編集後記
昨日は、セミナーに参加。
Xbox Series Xのエンダーリリィーズを日々プレイしていますが、ボス(ウルヴ)が倒せず……。
くじけそうです。
レベルを上げてもそうそう変わらず、パターンを見極めて、反射神経全開でいかないと。
昔のゲームっぽくて楽しいんですけどね。
■1日1新→Kindle『1日1新』 ・Instagram『1日1新』
LUMIX BASE TOKYO
stand.fmをMacBook Airで収録→配信
■娘(4歳4ヶ月)日記→Kindle『娘日記』
ヨガをやっていると興味深く見に来ます。
つ、つらい……と言いながらやっていると、「飛ばそうか?」と。
早送りしてくれそうでした。
ライブなんでできないんですけど、気遣いはうれしいです。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方