折れ線グラフを使った人事データの可視化例です。量的変数の経時的な変化を観察するために利用します。グレードや職種などの人事属性で平均をとって可視化すると、層別折れ線グラフをとなります。

人事データ可視化の例

人事データ可視化の狙い

  • 人事属性別の時間外時間数の推移を確認し、労務管理の課題を探る。

人事データ可視化アプローチ

利用するグラフ

  • 折れ線グラフ: 量的変数の経時的な変化を観察する。

アプローチ

  • 月別に独立した形で時間外が記録される横持ちデータから、縦持ちデータへ変換する。
  • グレード別の時間外時間数の平均的な推移を折れ線グラフを用いて可視化する。
  • 長時間労働の傾向のあるグレードを把握するとともに、季節変動や分散が大きいグレードがないか確認する。

グラフの作り方

  • Pythonのseaborn.lineplotを使った可視化例。
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='darkgrid')
japanize_matplotlib.japanize()

# データの読み込み
df_ot = pd.read_csv('./hr-toydata-overtime-600.csv')
df_hr = pd.read_csv('./hr-toydata-basic-600.csv')

# 縦持ちへ変換
df_long = pd.DataFrame(df_ot.set_index(['従業員ID','年度']).stack()).reset_index()
df_long.columns = ['従業員ID','年度','月','時間外時間数']

# 日付型の年月を追加
df_long['月'] = df_long['月'].str.replace('月', '').astype(int)
df_long['年'] = df_long['年度'].mask(df_long['月'] <= 3, df_long['年度'] + 1)
df_long['年月'] = pd.to_datetime(df_long['年'].astype(str) + '-' + df_long['月'].astype(str))

# 人事情報との結合
df = pd.merge(df_long, df_hr, on='従業員ID')

# グラフ
fig, ax = plt.subplots(figsize=(9,6))
sns.lineplot(data=df, x='年月', y='時間外時間数', hue='グレード', err_style=None, ax=ax)
ax.set_title('グレード別 時間外時間数の推移')

この記事で使ったデータ

以下のページでデータを配布しています。

人事トイデータの公開
こちらのページでは、クニラボで作成した人事トイデータを公開しています。 トイデータとは? トイデータ(Toy Data)とは、演習用に使えるリアルでないデータのことをいいます。データ分析や機械学習のライブラリに附属する場合もあり、手元にデータがなくてもそのライブラリをすぐに試せるのが利点です。 人事データ分析の演習にご活用ください ピープルアナリティクスを学んでみたいが手元に良いデータがない、という方も多いのではないでしょうか。人事データは個人情報を含むため、ピープルアナリティクスプロジェクトの正式なメンバーでないと触ることができません。 そこで、演習用にデータを自作しGoogleドライブより公開しています。これまでも代表のnote記事の中でリンクを張っていたのですが、複数の記事で利用するためこのページを作りました。 * 2023/11/29追記 「HRトイデータ_人事情報_拡張版.csv 」を追加しました。 * 2024/3/23追記 「HRトイデータ_月別時間外.csv 」を追加しました。 * 2024/11/18追記 「HRトイデータ_エンゲージメントスコア