本記事では、PythonでできるExcel操作のまとめ一覧を紹介します。
想定読者
・PythonでExcel操作を行い、会社の仕事を効率化したい。
・Excel操作とPythonでのやり方を一覧で確認したい。
本記事について
・Excel操作に対応するPythonでの処理方法を一覧で紹介します。
・本記事は、「openpyxl」でExcel 操作を自動するものではなく、データをPandasで読み込み、Python/Pandasでのデータの処理方法を記載しています。
・本記事のリンク先では、実務に近いデータを用いて、書き方の詳細を解説しています。
・本記事(リンク先含む)は次の実行環境の内容を記載しています。
Python 3.7.6、Jupyterlab 1.2.6、Pandas:1.1.2
PythonでできるExcel操作のまとめ一覧
PythonでできるExcel操作の一覧は、次の通りとなります。
※DataFrame名をdfとしています。
Excel操作 | Pythonでの処理 | リンク |
Excelファイルを開く | pd.read_excel(‘ファイル名.xlsx', sheet_name=‘シート名') | [詳細] |
行数・列数を確認 | df.shape | [詳細] |
列項目を確認 | df.columns | [詳細] |
ある列の一意の"値"を確認 | df['列名'].unique() | [詳細] |
ある列の一意の値の"数"を確認 | df['列名'].nunique() | [詳細] |
ある列の値の個数を確認(COUNTIF関数) | df['列名'].value_counts() | [詳細] |
列のデータ型の確認 | df.dtypes | [詳細] |
列のデータ型の変換 | df.astype({'列名': 'str'}) ※文字列への変換 | [詳細] |
列の追加 | df['追加する列名'] = 値 or リスト | [詳細] |
行の追加 | df.loc['追加する行名'] = 値 or リスト | [詳細] |
列の削除 | df = df.drop(['削除する列名1', '削除する列名2'], axis=1) | [詳細] |
行の削除 | df = df.drop(['削除する行名1', '削除する行名2']) | [詳細] |
列・行の項目名の変更 | df = df.rename(columns={変更前:変更後}, index={変更前:変更後}, ) | [詳細] |
空白セル(欠損値)の確認 | df.isnull().sum() | [詳細] |
空白セル(欠損値)の除外 | df.dropna(how='any') など | [詳細] |
空白セル(欠損値)の補完 | df['列名'].fillna('補完内容') | [詳細] |
空白セル(欠損値)の符号化 | df['列名'].isnull().apply(lambda x : '1' if x else '0') | [詳細] |
数値列の統計量を確認 | df.describe() | [詳細] |
特定の列だけを表示 | df[['列名1', '列名2', '列名3']] | [詳細] |
フィルター(完全一致) | df[df['列名'] == '値'] | [詳細] |
フィルター(部分一致) | df[df['列名'].str.contains('文字')] | [詳細] |
フィルター(数値の大小関係) | df[df['数値列名'] >= 値] | [詳細] |
フィルター(複数条件) | フィルターを&, |で結合 | [詳細] |
ソート(1列) | df.sort_values('列名') | [詳細] |
ソート(複数列) | df.sort_values(['列名1', '列名2']) | [詳細] |
置換(完全一致) | df.replace('置換前の値', '置換後の値') | [詳細] |
置換(部分一致) | df['列名'].apply(lambda x: x.replace('置換前の値', '置換後の値')) | [詳細] |
置換(条件分岐あり) | df['列名'].where(条件式, 置換後の値) | [詳細] |
MID、LEFT、RIGHT関数 | df['列名'].str[2:] ※数値は例 | [詳細] |
IF関数(条件分岐で値設定-2分類) | df['列名'].apply(lambda x : '値1' if 条件 else '値2') | [詳細] |
IF関数(条件分岐で値設定-多値分類) | df['列名'].map(条件分岐の自作関数) | [詳細] |
VLOOKUP関数 | df1.merge(df2, on='キー', how='left') | [詳細] |
SUMIF関数(グループ集計) | df.groupby('列名').sum() | [詳細] |
ピボットテーブル | df.pivot_table([ 略 ]) | [詳細] |
3桁区切りカンマ | applymap('{:,.0f}'.format) | [詳細] |
Excelファイル作成・出力 | df.to_excel('ファイル名.xlsx') | [詳細] |
Excelファイル作成・出力(複数シート) | pd.ExcelWriter('ファイル名.xlsx', engine = 'xlsxwriter') | [詳細] |
内容は、定期的にアップデートしていきます。
「PythonでできるExcel操作のまとめ一覧」の作成目的と使い方
僕が本業のExcel作業をPythonを使って効率化したいと思い、Python/Pandasの基本文法、Excelと対応したPythonの書き方などを調べるのに「100時間」ほど要していました。
これだけ時間を要した理由は大きく2つあります。
・基本文法の細かい部分まで頭で理解しようとして、インプットに時間をかけすぎていた。
・情報元がバラバラで、その都度Google検索し、参考になりそうなサイトを探していた。
この2つを解決するために、
・実務のExcel作業の代替としてすぐ使えるコードで、情報を最小限にする。
・Excelの操作内容と対応させて一覧化する。
を実現できるように本記事を作成しました。
本記事で、他の方が僕みたいに多くの時間・労力をかけず、PythonでExcel作業の効率化ができることを願っています。
本記事は、ブックマークやお気に入りにいれて、いつでも使える早見表として使ってもらえればと思います。
【参考】Python / PandasでExcel操作を行うメリット
参考として、Python / PandasでExcel操作(おもにデータ集計作業)を行うメリットを紹介します。
メリットというとたくさんあるかもしれませんが、ここでは僕自身が助かっている5つをピックアップします。
・インプットデータが変わっても同じ操作が簡単にできる。
・画面上でのセルの操作でないため、処理が速い。
・Excelの関数では複雑になる処理でも、シンプルに分かりやすく処理内容を書ける。
・処理内容をメモ・記録できることで、他の人に共有・引継ぎできる。
・スケジューラーやバッチファイルを使えば、処理の自動化に応用できる。
いかがでしたがでしたか。
最初はPythonに慣れる必要があるといえど、メリットは非常に多いですよね。
それでは、どんどんExcel作業をPythonでやって、業務を効率化・高度化していきましょう〜
以上となります。
最後まで読んで頂き、ありがとうございました。
<<2021年3月21日追記>>
Pythonでのスクレイピング、ブラウザ自動化の活用例(インスタグラム)
PythonでExcel操作が自動化できるようになってきたら、次は、スクレイピングやブラウザ自動化にチャレンジするのをお勧めします。
これができるようになると、SNSでの情報収集や運用の自動化が可能となります。
インスタグラムだと、Pythonを使えば、下のように自動化ができます。