【Python】パレート図の作り方を紹介【サンプルコードあり】【Pandas+Plotly】【すぐに使える】

3 min

本ブログは、これからデータ分析を学ぼうとしている方向けに、最短で動かす方法をシェアすることを目的としています。従って、動くコードに主眼をおいています。

今回のテーマは、重要なモノを浮き彫りにする方法です。

パレート図の出力イメージ

本記事では、Pandas の DataFrame をインプット情報として plotly でイケてるパレート図を出力する方法を紹介します。

本記事を最後まで読むと1行でパレート図を出力する方法が解ります。

広告_零号機

パレート図を出力するサンプルコード(Colab で利用可能)

コード

下記コードを Google Colaboratory のセルにコピペして実行することで直ぐに使えます。

import pandas as pd
from plotly.subplots import make_subplots
import plotly.graph_objects as go

def pyPareto(_df:pd.core.frame.DataFrame, _colNm):
  df_temp = pd.concat(
      [
      _df.rename(columns={_colNm: _colNm + "_counts"})[_colNm + "_counts"].value_counts(ascending=False), 
       _df.rename(columns={_colNm: _colNm + "_normalize"})[_colNm + "_normalize"].value_counts(ascending=False, normalize=True), 
      _df.rename(columns={_colNm: _colNm + "_cumsum"})[_colNm + "_cumsum"].value_counts(ascending=False, normalize=True).cumsum()
      ], axis=1)
  df_temp[_colNm] = df_temp.index
  df_temp[_colNm] = '"' + df_temp[_colNm].astype('str') + '"'
  df_temp["text"] = "normalize:" + (df_temp[_colNm + "_normalize"]*100).astype(str).str[:5] + "%" + " ,cumsum:" + (df_temp[_colNm + "_cumsum"]*100).astype(str).str[:5] + "%"

  fig=make_subplots(specs=[[{"secondary_y":True}]])

  fig.add_trace(
      go.Bar(
      x=df_temp[_colNm],
      y=df_temp[_colNm + "_counts"],
      name="counts"
      ),
      secondary_y=False)

  fig.add_trace(
      go.Scatter(
      x=df_temp[_colNm],
      y=df_temp[_colNm + "_cumsum"],
      name="cumsum",
      mode='lines',
      text=df_temp["text"],
      hoverinfo='text'
      ),
      secondary_y=True)
  fig.update_yaxes(range=[0, 1], secondary_y=True)
  fig.update_layout(
      title_text=_colNm + " pareto chart",
      hovermode='x unified'
      )
  fig.show()

  return 

使用例

社会科学のためのデータ分析入門」で用いられているオープンデータセットでの使用例を紹介します。

オープンデータセットの特徴の確認方法については下記をご参考ください。

使用例①:最低賃金と失業率の調査のデータセット

取得したデータの「location」カラムのパレート図を出力します。

df_minwage = pd.read_csv('https://raw.githubusercontent.com/kosukeimai/qss/master/CAUSALITY/minwage.csv')
pyPareto(df_minwage, "location")

使用例②:労働市場における人種差別の調査のデータセット

取得したデータの「firstname」カラムのパレート図を出力します。

df_resume = pd.read_csv('https://raw.githubusercontent.com/kosukeimai/qss/master/CAUSALITY/resume.csv')
pyPareto(df_resume, "firstname")

【参考】Plotly によるデータ可視化

Plotly を活用したデータ可視化についてご興味のある方は下記記事をご参考ください。

【参考】Pandasによるデータ確認

Pandas を活用したデータ確認についてご興味のある方は下記記事をご参考ください。

【参考】sklearn+numpy によるモデルの評価

まとめ

本記事では、Pandas の DataFrame をインプット情報として plotly でイケてるパレート図を出力するメソッドを紹介しました。

データ分析に関して、一つ一つ丁寧に確認したい方は下記記事をご覧ください。

ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。

広告_零号機-エリア2
kewton

kewton

大学院卒業後、某大手SIerで10年以上SEとして従事。
社会人3年目までに基本情報・応用情報技術者、データベーススペシャリスト、簿記3級・2級を取得。
基幹系システム・IoTシステム開発のプロジェクト経験多数。AI活用システムの企画・プロト開発経験あり。
強みは、プロマネだけでなく自身で開発も実施してきたこと。
【扱える言語】
C#、java、python、javascript、Excel VBA
【扱えるDB】
oracle、sql server、postgreSQL、mongoDB

FOLLOW

関連記事

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA