Измерение роста числа сотрудников с Python
Python для управления бизнесом? Бьюсь об заклад, это не то, что приходит вам в голову очень часто, учитывая тонны программного обеспечения и инструментов для управления бизнесом и человеческими ресурсами, представленных на рынке (например, Wrike, Jira, Trello, Microsoft Azure DevOps, Tableau, Power BI, Gusto, Calendly, Skedulo, ADP, SalesForce и т.д.).. Хотя Python не является наиболее подходящим инструментом для этих целей, его все же можно использовать для решения простых задач, которые могут принести организации ценные идеи и выводы.
Большинство программ и инструментов для управления бизнесом и человеческими ресурсами не требуют никакого или очень небольшого программирования по сравнению с Python, который сам по себе является языком программирования. Это означает, что даже аудитория нетехнических специалистов может легко использовать их, не проходя через значительную кривую обучения. С другой стороны, пользователь должен был бы заранее знать язык программирования Python, чтобы выполнить с его помощью задачу.
Python, как язык программирования с открытым исходным кодом, содержит множество библиотек и модулей для упрощения манипулирования данными и визуализации, таких как pandas, matplotlib, seaborn, pyviz, plotly и hvplot, и это лишь некоторые из них. С помощью таких библиотек мы можем проявить творческий подход и написать сценарии для решения простых, но ценных задач для бизнеса.
Практический пример
Давайте используем Python для написания простого скрипта, который будет генерировать фрейм данных с общим количеством активных сотрудников в месяц на основе дат приема их на работу и ухода. Кроме того, давайте построим линейную диаграмму, которая поможет нам определить любые тенденции найма или ухода (если таковые имеются) с течением времени. Для этого примера я создал csv-файл со случайными датами приема на работу и отъезда для 50 сотрудников. Наша цель будет заключаться в том, чтобы измерить рост компании с течением времени и определить ее лучший и худший год на данный момент.
Давайте взглянем на код Python.
# Import libraries and dependencies
import pandas as pd
import datetime
import matplotlib.pyplot as plt
%matplotlib inline
# Read employees csv file
df = pd.read_csv("employees.csv")
# Display top rows
df.head()
# Replace null values with string "no" (i.e., meaning that employee has not left the company)
df['Departure Date'] = df['Departure Date'].fillna("no")
# Get a list of all months from the hiring date of the first employee until current month
all_months = pd.date_range(df["Hiring Date"].unique()[0], datetime.datetime.today().strftime('%m/%d/%Y'), freq='MS').strftime("%Y-%b").tolist()
# Initialize list for cummulative employees
cummulative_employees = []
# Loop through all the months in list
for past_month in all_months:
# Initialize counter of active employees for given month
current_employees_in_month = 0
# Loop through all the employees
for i in range(0,len(df)):
# If employee was hired on or before current month and has not departed
if pd.to_datetime(df["Hiring Date"][i]) <= pd.to_datetime(past_month) and (df["Departure Date"][i] == "no"):
current_employees_in_month += 1
# If employee has departed and was hired on or before current month and their departure date is greater than current month
if df["Departure Date"][i] != "no" and pd.to_datetime(df["Hiring Date"][i]) <= pd.to_datetime(past_month) and pd.to_datetime(df["Departure Date"][i]) > pd.to_datetime(past_month):
current_employees_in_month += 1
# Append total cummulative employees for given month
cummulative_employees.append(current_employees_in_month)
# Create dataframe with active employees count per month
employees_df = pd.DataFrame({"Date":all_months, "Count Active Employees":cummulative_employees})
# Parse Date column as datetime and set it as index
employees_df["Date"] = pd.to_datetime(employees_df["Date"])
employees_df.set_index("Date", inplace=True)
# Display bottom rows
employees_df.tail()
Теперь, когда мы получили наш фрейм данных с количеством активных сотрудников в месяц, давайте построим линейную диаграмму, которая поможет нам визуализировать результаты.
# Set matplotlib style
plt.style.use('ggplot')
# Plot linechart
plt.figure(figsize=(20,7))
plt.plot(employees_df, "--o", c= "grey")
plt.xlabel("Date")
plt.ylabel("Count of Active Employees")
plt.title("Employees Growth Over Time")
plt.xticks(employees_df.index, rotation=90)
for a,b in zip(employees_df.index, employees_df["Count Active Employees"]):
plt.text(a, b, str(b))
view raw
Основываясь на приведенном выше линейном графике, можно заметить, что компания имела медленный, но устойчивый рост с момента своего создания до мая 2022 года. Начиная со второй половины июня 2022 года и вплоть до декабря 2021 года компания продемонстрировала значительный рост, увеличившись с 7 сотрудников до 38. Наконец, можно заметить, что компания не роста в течение 2022 года.
В идеале этот скрипт на Python должен быть автоматизирован и выполняться на регулярной основе, чтобы поддерживать актуальность информации. Таким образом, компания могла бы лучше отслеживать рост своей рабочей силы с течением времени.
Вывод
Этот практический пример продемонстрировал, как Python можно использовать для решения простых задач, связанных с управлением бизнесом и человеческими ресурсами с помощью нескольких строк кода. Как было предложено ранее, если в вашей организации имеются другие менее технические инструменты и программное обеспечение для управления бизнесом и человеческими ресурсами, не обязательно использовать Python для решения задач такого типа. Каждая организация должна оценить и сравнить различные доступные варианты инструментов на основе бюджета, актуальности, сложности, полноты и других факторов. На данный момент это была просто творческая идея, о том как предоставить ценную информацию и тенденции вашему отделу кадров всего с помощью нескольких строк кода.