KDEプロットを使った人事データの可視化例です。KDEプロットは量的変数の分布を曲線で近似して可視化することができ、分布形状の比較を簡単に行えます。また、複数のカテゴリーで分割し俯瞰的に捉えるのに適しています。
人事データ可視化の例

人事データ可視化の狙い
- 男女別の年齢構成の違いを比較し、人的資本経営の課題を発見する。
人事データ可視化アプローチ
利用するグラフ
- KDEプロット: 量的変数の分布を滑らかな曲線で近似して確認する。
アプローチ
- KDEプロットを使って男女別の年齢分布を確認する。
- 構成の違いを見るために、男女の人数差に影響されないように男女独立で密度を推定する。(common_norm=Flase を指定)
- 組織などの属性でグラフを分割し、傾向の違いを把握する。
グラフの作り方
- Pythonのseaborn.kdeplotによる可視化例。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import japanize_matplotlib
import seaborn as sns
sns.set_theme(style="ticks")
plt.rcParams["figure.figsize"] = (6, 6)
japanize_matplotlib.japanize()
# データの読み込み
df_hr = pd.read_csv('./HR-toydata/HRトイデータ_人事情報_拡張版.csv')
# データ加工
df_hr['性別'] = pd.Categorical(df_hr['性別'], categories=['男', '女'])
list_of_div = df_hr['部'].unique() # 部のリスト
# 2 x 3 のグリッドでグラフを描く
fig, ax = plt.subplots(2,3, figsize=(11,7))
fig.set_tight_layout(True)
for idx, div in zip(range(len(list_of_div)), list_of_div):
ax1 = idx // 3
ax2 = idx % 3
sns.kdeplot(data=df_hr.query('部 == @div'),
x='年齢', hue='性別', common_norm=False, ax=ax[ax1, ax2])
ax[ax1, ax2].set_title(f'部 = {div}')
ax[1,2].set_visible(False) # 不要なグラフを削除
fig.suptitle('男女別年齢分布')
