0
emp_attrited = pd.DataFrame(df[df['Attrition'] == 'Yes'])
emp_not_attrited = pd.DataFrame(df[df['Attrition'] == 'No'])
print(emp_attrited.shape)
print(emp_not_attrited.shape)


att_dep = emp_attrited['Department'].value_counts()
percentage_att_dep = (att_dep/237)*100
print("Attrited")
print(percentage_att_dep)
not_att_dep = emp_not_attrited['Department'].value_counts()
percentage_not_att_dep = (not_att_dep/1233)*100
print("\nNot Attrited")
print(percentage_not_att_dep)

fig = plt.figure(figsize=(20,10))
ax1 = fig.add_subplot(221)
index = np.arange(att_dep.count())
bar_width = 0.15
rect1 = ax1.bar(index, percentage_att_dep, bar_width, color = 'black', label = 'Attrited')
rect2 = ax1.bar(index + bar_width, percentage_not_att_dep, bar_width, color = 'green', label = 'Not Attrited')
ax1.set_ylabel('Percenatage')
ax1.set_title('Comparison')
xTickMarks = att_dep.index.values.tolist()
ax1.set_xticks(index + bar_width)
xTickNames = ax1.set_xticklabels(xTickMarks)
plt.legend()
plt.tight_layout()
plt.show()
  1. The first block represents how the dataset is split into 2 based upon Attrition
  2. The second block represents the calculation of percentage of Employees in each Department who are attrited and not attrited.
  3. The third block is to plot the given as a grouped chart.

enter image description here

Quang Hoang
  • 146,074
  • 10
  • 56
  • 74

1 Answers1

0

You can do:

(df.groupby(['Department'])
   ['Attrited'].value_counts(normalize=True)
   .unstack('Attrited')
   .plot.bar()
)
Quang Hoang
  • 146,074
  • 10
  • 56
  • 74