ExcelからPythonへ移行する最短ルート|操作の対応表つき
Excelで集計や分析をしている人にとって、Pythonの学習は「ゼロからプログラミングを学ぶ」ことではありません。 すでに持っている集計の語彙を、pandasの語彙に翻訳する作業です。 この記事では、その翻訳表と、そもそも移行すべきかどうかの判断基準を示します。
先に結論:全部を移行する必要はない
Pythonを学ぶと決めても、Excelを捨てる必要はありません。 筆者も実務では両方を使い分けています。
Excelのままでよい場面
- 数百行程度の一度きりの集計
- 手作業でセルを見ながら整えるような作業
- 相手にExcelファイルで渡す前提の資料
Pythonに移す価値がある場面
- 数万行を超えて動作が重くなってきた
- 毎週・毎月、同じ手順の集計を繰り返している
- 「どう集計したか」の手順を残して再現できるようにしたい
Pythonの利点を一言で言えば、手順がコードとして残ることです。 Excelの手作業は本人の記憶にしか残りませんが、コードは半年後の自分にも他人にも再実行できます。 繰り返し作業と再現性、この2つに心当たりがあるなら移行の価値があります。
Excel→pandasの操作対応表
pandasはPythonで表データを扱うライブラリです。 Excelの主要操作との対応は次のとおりです。
| Excelの操作 | pandasでの書き方 |
|---|---|
| ファイルを開く | pd.read_csv("data.csv") / pd.read_excel("data.xlsx") |
| 列を選ぶ | df["売上"] |
| フィルター | df[df["地域"] == "関東"] |
| 並べ替え | df.sort_values("売上") |
| SUM / AVERAGE | df["売上"].sum() / df["売上"].mean() |
| ピボットテーブル | df.pivot_table(index="地域", values="売上", aggfunc="sum") |
| VLOOKUP | pd.merge(df1, df2, on="商品ID") |
| 重複の削除 | df.drop_duplicates() |
| グラフ作成 | df.plot() |
見てのとおり、Excelの1操作はpandasでもほぼ1行です。 「プログラミング=長いコードを書く」という予想よりずっと短い、というのが移行してみた人の多くが持つ感想だと思います。
移行の3ステップ
対応表を眺めるだけでは身につかないので、順序を決めて進めます。 環境はインストール不要のGoogle Colabを推奨します。
ステップ1:普段のExcelファイルを読み込む
教材のサンプルデータではなく、普段自分が触っているファイルをpd.read_excel()で読み込みます。
最初の1歩を「自分のデータ」にすることで、以降の練習がそのまま実務の予行になります。
ステップ2:いつもの集計を対応表で翻訳する
普段Excelでやっている集計を1つ選び、対応表を見ながらpandasで再現します。 答え(Excelでの集計結果)を自分で持っているので、コードが正しいかを自分で検証できるのがこの練習の利点です。
ステップ3:「毎回やる作業」を1本のコードにまとめる
毎週・毎月繰り返している一連の手順(読み込み→絞り込み→集計→グラフ)を、上から順に実行すれば終わる1本のノートブックにします。 ここまで来ると、翌月からその作業は「実行ボタンを押すだけ」になります。 移行の投資が回収され始めるのはこの段階です。
移行時につまずきやすい2点
Excel経験者ならではのつまずきどころを2つ挙げておきます。
「セルを直接書き換える」感覚が通用しない
Excelでは目についたセルをその場で直せますが、pandasでは「どの条件の行のどの列を、何に変えるか」をコードで指定します。 不便に感じるのは最初だけで、この制約こそが「何をどう変えたか」が記録として残る利点の裏返しです。
日本語の列名や結合セルでエラーが出る
実務のExcelファイルには、結合セル、2行にまたがる見出し、余白の注記などが含まれがちです。 pandasはこうした「人間向けのレイアウト」が苦手なので、読み込みでつまずいたら、まず元ファイルの1行目に列名、2行目以降にデータだけ、という形に整えてから読み込むのが確実です。
まとめ
- 移行の判断基準は「繰り返し作業」と「再現性」。一度きりの小さい集計はExcelのままでよい
- Excelの主要操作はpandasでほぼ1行に対応する。対応表で「翻訳」しながら学ぶのが最短
- 自分のファイルで「読み込み→いつもの集計→定型作業の自動化」の順に進める。学習全体の位置づけはPython独学ロードマップを参照