Excelの手作業ってどうにかならないかな?
ビジネスシーンで一番無駄に時間を浪費するのは、Excelを使った生産性のない作業ではないでしょうか?
そんな悩みを解決するために、今回は記事を書きます!
こんな作業経験に身に覚えがある方は、ぜひ最後まで読んでみてください。
よくあるケース
業務でExcelでフィルターを複数かけながら、新しいファイルを作る作業をひたすら繰り返している。
コピペ作業中に話しかけられて、どこまでやったか分からなくなりやり直し。
ファイル名を付け間違えたことに気づき、すべてのファイルの中身と名前を再確認。
本記事で身につくスキル
- Excel/CSVデータをPython環境に取り込む
- 取り込んだデータを自由に整形処理する力
- Pythonで加工したデータをローカルにExcel/CSVデータ出力する
それではさっそく、本題を解説していきます!
この記事を書いた人
Excelのカテゴリー分割プログラム(pandas)
Python環境を準備する(スキップ可)
すでにPythonの実行環境がある人は、ここは飛ばして実践に移ってください。
Pythonで有名な開発環境は、Google Clabolatory / Anacondaです。
ビジネスで利用する場合、ネット上にデータのアップロードはできないのでAnacondaの利用をオススメします。
以下の記事を参考にpythonプログラムを開発·実行する環境を準備ください。
-
Anaconda Navigatorのインストールに関する究極のガイド
AnacondaでPython実行環境を準備したいからやり方教えてほしい 今回は、Pythonプログラムをビジネス目的で利用したい方向けにAnaconda Navigatorのインストール~プログラム ...
続きを見る
pandasとは
Pandasはデータ解析のための高水準Pythonライブラリです。
Excel,csvをはじめとしたデータから大規模なデータベースまで、簡単に情報を処理しフィルタリングし抽出することができます。
他のライブラリとは異なり、Pandasはデータ処理全体を効率化するため、巨大なデータセットを迅速かつ正確に管理・操作することが可能です。
要するに、pandasを利用することで高速かつ正確にデータ処理を自動化することが可能です!
百聞は一見に如かず!
今回のシナリオとデータ
今回の作業シナリオは、
シナリオ
タイタニック号の乗客データをfemale/male/生存者/死亡者とその組み合わせで8つのファイルに分割してください。
です。
データ構成
定義:生死「0=死亡、1=生存」、性別「female:女性、male:男性」
利用するデータは、以下のボタンを押下するとダウンロードできます。
回答プログラミングコードのご紹介
今回紹介するコードで得られるアウトプットは以下の通りです。
得られるアウトプット
プログラム実行後、数秒で生成が完了します。
- ①.csv:生存者に絞ったCSVファイル
- ②.csv:死亡者に絞ったCSVファイル
- ④.csv:女性に絞ったCSVファイル
- ③.csv:男性に絞ったCSVファイル
- ⑤.csv:女性^生存者に絞ったCSVファイル
- ⑥.csv:女性^死亡者に絞ったCSVファイル
- ⑦.csv:男性^生存者に絞ったCSVファイル
- ⑧.csv:男性^死亡者に絞ったCSVファイル
上記の出力を得るうえで、利用したコードはこちらです。
import pandas as pd
#データの読み込み
df = pd.read_csv('【練習用】タイタニック号データセット.csv',encoding='shift-jis')
#データの整形処理
df_alive = df[df["生死"]==1] #①
df_dead = df[df["生死"]==0] #②
df_female = df[df["性別"]=="female"] #③
df_male = df[df["性別"]=="male"] #④
df_female_alive = df_female[df_female["生死"]==1] #⑤
df_female_dead = df_female[df_female["生死"]==0] #⑥
df_male_alive = df_male[df_male["生死"]==1] #⑦
df_male_dead = df_male[df_male["生死"]==0] #⑧
#整形データのCSV出力
df_alive.to_csv('①.csv',encoding='shift-jis',index=False)
df_dead.to_csv('②.csv',encoding='shift-jis',index=False)
df_female.to_csv('③.csv',encoding='shift-jis',index=False)
df_male.to_csv('④.csv',encoding='shift-jis',index=False)
df_female_alive.to_csv('⑤.csv',encoding='shift-jis',index=False)
df_female_dead.to_csv('⑥.csv',encoding='shift-jis',index=False)
df_male_alive.to_csv('⑦.csv',encoding='shift-jis',index=False)
df_male_dead.to_csv('⑧.csv',encoding='shift-jis',index=False)
for文を利用することで、短いコードで記載することが可能ですが、今回はデータの動きを把握するためにあえて繰り返しでは記載していません。
さっそく実行して、想定通りのアウトプットを得ることができるか試してみましょう!
コード解説とポイント
今回のコードは、割りと直感的で理解しやすいコードだったかと思います。
特定の値でデータを絞り込む操作を複数回実行しシナリオを解決しましたが、実業務での利用で他に考えられるパターンのコードも紹介します。
業務データに応じて使い分けてください。
・数値の範囲でデータを絞る
df_hanni = df[(df['年齢']>=20) & (30>df['年齢'])]
・特定の文字列を含むでデータを絞る
df_moji = df[df['性別'].str.contains("female")]
#df_moji = df[df['#抽出列#'].str.contains("#文字列1#|#文字列2#")]で複数指定可
・否定(含まない)でデータを絞る
df_moji = df[~df['性別'].str.contains("female")]
#~で条件の否定を設定することができます。
上記で、ビジネスシーンで出てくる集計処理パターンは大筋すべて網羅できたかと思います。
さっそく、今日からビジネスで活用してくださいね!
動くプログラムのストックを自分のPCに貯める。
そして、組み合わせでより高度なプログラムを作成していく。
こうして、仕事でPythonを導入するのがプログラマーへの最短距離です。
ポイント
データを整形するコードはいろんな種類があります。
「やりたいこと + python」でGoogle検索すれば、もっと効率的なコードでますのでいろいろ試してください!
エラーがでた時の対処法(Try & Error)
さて、エラーがでた人はPythonの理解を深めるチャンスです!
おそらく2パターンのいずれか、または両方のエラーが出たと思います。
①pandasが見つからない。 ②データが見つからない。
ぜひ、エラーの最後にある英語のテキスト部分をGoogleで検索して、ご自身で解消してみてください!
「エラーが出たらググって調べる。」これができれば、事前知識なしでどんなプログラムでも書くことができます。
ヒント
①pipコマンドでpandasをAnaconda環境にインストールする。
②データは絶対パスで場所を記載する。(Pythonファイルと同じフォルダに配置した場合不要)
(例:'C:\Users\●●●\△△△\【練習用】タイタニック号データセット.csv')
まとめ(次の学習ステップ)
今回は「Pandadを活用し、1つのExcelファイルをカテゴリー別に分類する方法」について解説しました。
Excel/csvでの手作業が、Pythonを使うことで一瞬で解決ができたことがお分かりいただけたかと思います。
本記事で身につけたスキル
- Excel/CSVデータをPython環境に取り込む
- 取り込んだデータを自由に整形処理する力
- Pythonで加工したデータをローカルにExcel/CSVデータ出力する
今日から自分の仕事で実践活用してみてくださいね(^^)/
当サイトは、データサイエンティストを目指しPythonプログラミングを活用していきたい!
という人に最短距離でPythonビジネスデータ分析スキルを伝授することを目的に記事を書いています。
データサイエンティストとして、キャリア形成を考えている人は、以下記事も参考になりますので読んでみてください。
-
【完全版】Python習得のロードマップ|初心者プログラミング知識0から年収800万円へ
年収上げたいけど、プログラマって稼げるの? プログラマって知識0からでもなれるの? という質問をもらいますが、「Python」と「データ分析」を武器にすれば6ヶ月で年収800万円以上を狙うことは十分可 ...
それでは、また次の記事でお会いしましょう。
最近のコメント