#はじめに
vbaで処理を回していて、「遅い」「応答待ちになる」で、実行完了はいつになるんだろ~とか思い、いっそpythonで処理すればよくね?となった皆様に、自分がpythonでエクセルデータを扱った方法と注意点を紹介します。
#1.エクセルデータの取り込み
Pandasのread_excelを使って、エクセルデータの読み込みを行います!
import pandas as pd
sheet_D=pd.read_excel(r'読み込みたいエクセルファイルまでのPATH',sheet_index=読み込みたいシート番号)
sheet_indexの代わりに、sheet_nameでシート名も指定できます。
注意点:read_excel内のr
これを設定しないと、PATHに日本語等が含まれている場合、文字コードエラーが発生する(以下の感じ)。
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
#2.型変換
これはどんな処理をしたいかに依存しますが、エクセルシート上のセルを個別に処理する必要がある場合は行うことをお勧めします。
pd.read_excelで読み込んだ場合、変数の型がDataFrame型となります。自分がちょっと触ってみた感じ、この型は列や行に対して何か処理をしたいときに適した型(列毎の平均や行毎の分散とか)で、個別の値について処理する場合はlist型の方が扱いやすそうという印象を持ちました。
DataFrame型→list型の変換を行う。
sheet_L=sheet_D.values.tolist()
#3.処理
1と2の手順を踏まえることでsheet_Lにエクセルシートのデータをn×mの配列として読み込むことが出来る。
sheet_L[x][y]=エクセルシート上でx行のy列に対応
あとは行いたい処理を行う!(nanの取り扱いには注意必要。)
#4.エクセルに書き出し
処理を終えた後、エクセルに書き出すという作業が必要な場合が多い?と思うので、参考までに。
<フロー>
ワークブックを作成 → シートを作成 → セルに値書き込み → 保存
from xlwt import Workbook #エクセルに出力するのに必要なモジュール
wb=Workbook() #ワークブックの作成
ws=wb.add_sheet("シート名") #ワークブックにシートを追加
ws.write("行数","列数","値") #ワークシートに指定されたセルに値を書き込む
wb.save("ワークブック名") #ワークブック名を指定してエクセルファイルとして保存する。
#5.おわり
最後まで読んで頂きありがとうございました。
Pythonでエクセルデータの抽出 → 加工 → 出力の流れを紹介しましたが、いかがだったでしょうか?
自分は「思ったより手間なくできるんだな~」と思いました!
処理に関しても、エクセルのような不安定さは無いので、エクセルで膨大なデータを処理しないといけない場合は、処理落ちの可能性を排除するためにも、pythonで処理してしまう方が良さそうですね!