7 Пандов Спланированных Функций для Быстрой Визуализации Данных

7 Полезных функций осуществленного спланирования для быстрой визуализации данных

При анализе данных с помощью pandas вы будете использовать функции pandas для фильтрации и преобразования столбцов, объединения данных из нескольких таблиц и тому подобное.

Но часто бывает полезно создавать графики – визуализировать данные в таблице – вместо простого просмотра чисел.

У pandas есть несколько функций построения графиков, которые можно использовать для быстрой и простой визуализации данных. И мы рассмотрим их в этом учебнике.

🔗 Ссылка на блокнот Google Colab (если вы хотите писать код)

Создание пандас датафрейма

Давайте создадим образец датафрейма для анализа. Мы создадим датафрейм с именем df_employees, содержащий записи о сотрудниках.

Мы будем использовать Faker и модуль random из NumPy для заполнения датафрейма 200 записями.

Примечание: Если у вас нет установленного пакета Faker в вашей среде разработки, вы можете установить его с помощью pip: pip install Faker.

Запустите следующий код для создания и заполнения df_employees записями:

import pandas as pdfrom faker import Fakerimport numpy as np# Создаем объект Fakerfake = Faker()Faker.seed(27)# Создаем датафрейм для сотрудниковnum_employees = 200departments = ['Инжиниринг', 'Финансы', 'HR', 'Маркетинг', 'Продажи', 'IT']years_with_company = np.random.randint(1, 10, size=num_employees)salary = 40000 + 2000 * years_with_company * np.random.randn()employee_data = {   'EmployeeID': np.arange(1, num_employees + 1),  'FirstName': [fake.first_name() for _ in range(num_employees)], 'LastName': [fake.last_name() for _ in range(num_employees)],   'Age': np.random.randint(22, 60, size=num_employees),   'Department': [fake.random_element(departments) for _ in range(num_employees)], 'Salary': np.round(salary), 'YearsWithCompany': years_with_company}df_employees = pd.DataFrame(employee_data)# Отображаем первые 10 записей датафреймаdf_employees.head(10)

Мы задали сид для воспроизводимости. Каждый раз, когда вы запускаете этот код, вы получаете те же записи.

Вот первые несколько записей датафрейма:

1. График рассеивания

Графики рассеивания обычно используются для понимания взаимосвязи между двумя переменными в наборе данных.

Для датафрейма df_employees давайте создадим график рассеивания, чтобы визуализировать связь между возрастом сотрудника и заработной платой. Это поможет нам понять, есть ли какая-либо корреляция между возрастом сотрудников и их заработной платой.

Чтобы создать график рассеивания, мы можем использовать plot.scatter(), например:

# График рассеивания: Возраст vs Зарплатadf_employees.plot.scatter(x='Age', y='Salary', title='График рассеивания: Возраст vs Зарплата', xlabel='Возраст', ylabel='Зарплата', grid=True)

В этом примере датафрейма мы не видим никакой корреляции между возрастом сотрудников и их зарплатой.

2. График линии

График линии подходит для определения тенденций и закономерностей по непрерывной переменной, как правило, времени или подобному масштабу.

При создании датафрейма df_employees мы определили линейную зависимость между количеством лет работы сотрудника в компании и его зарплатой. Поэтому давайте посмотрим на график линии, показывающий, как средние зарплаты меняются в зависимости от количества лет.

Мы находим среднюю зарплату, сгруппированную по количеству лет работы в компании, а затем создаем линейную диаграмму с помощью plot.line():

# Диаграмма линий: средний тренд заработной платы по годам опытаaverage_salary_by_experience = df_employees.groupby('YearsWithCompany')['Salary'].mean()df_employees['AverageSalaryByExperience'] = df_employees['YearsWithCompany'].map(average_salary_by_experience)df_employees.plot.line(x='YearsWithCompany', y='AverageSalaryByExperience', marker='o', linestyle='-', title='Средний тренд заработной платы по годам опыта', xlabel='Годы работы в компании', ylabel='Средняя зарплата', legend=False, grid=True)

 

 

Так как мы выбрали линейную зависимость поля зарплаты от числа лет работы сотрудника в компании, видно, что линейная диаграмма отражает это.

 

3. Гистограмма

 

Гистограммы используются для визуализации распределения непрерывных переменных – путем разделения значений на интервалы или корзины и отображения количества данных в каждой корзине.

Давайте изучим распределение возрастов сотрудников с помощью гистограммы, используя plot.hist():

# Гистограмма: распределение возрастовdf_employees['Age'].plot.hist(title='Распределение возрастов', bins=15)

 

 

4. Диаграмма “ящик с усами”

 

Диаграмма “ящик с усами” помогает понять распределение переменной, ее разброс и выявить выбросы.

Создадим диаграмму “ящик с усами”, чтобы сравнить распределение зарплат в разных отделах – провести общее сравнение распределения зарплат в организации.

Для этого мы используем boxplot для столбца “Salary”, сгруппированного по “Department”:

# Диаграмма "ящик с усами": распределение зарплат по отделамdf_employees.boxplot(column='Salary', by='Department', grid=True, vert=False)

 

 

Из диаграммы “ящик с усами” видно, что в некоторых отделах зарплата имеет больший разброс, чем в других.

 

5. Столбчатая диаграмма

 

Когда вам нужно понять распределение переменных в терминах частоты их встречаемости, можно использовать столбчатую диаграмму.

Теперь создадим столбчатую диаграмму, используя plot.bar(), чтобы визуализировать количество сотрудников: 

# Столбчатая диаграмма: количество сотрудников по отделамdf_employees['Department'].value_counts().plot.bar(title='Количество сотрудников по отделам')

 

 

6. Областная диаграмма

 

Областные диаграммы обычно используются для визуализации кумулятивного распределения переменной по непрерывной или категориальной оси.

Для фрейма данных сотрудников мы можем построить кумулятивное распределение заработной платы в разных возрастных группах. Для отображения сотрудников в корзинах в зависимости от возрастной группы мы используем pd.cut().

Затем мы находим кумулятивную сумму зарплат, группируем зарплату по ‘AgeGroup’. Для создания областной диаграммы мы используем plot.area():

# Областная диаграмма: кумулятивное распределение заработной платы по возрастным группамdf_employees['AgeGroup'] = pd.cut(df_employees['Age'], bins=[20, 30, 40, 50, 60], labels=['20-29', '30-39', '40-49', '50-59'])cumulative_salary_by_age_group = df_employees.groupby('AgeGroup')['Salary'].cumsum()df_employees['CumulativeSalaryByAgeGroup'] = cumulative_salary_by_age_groupdf_employees.plot.area(x='AgeGroup', y='CumulativeSalaryByAgeGroup', title='Кумулятивное распределение заработной платы по возрастным группам', xlabel='Возрастная группа', ylabel='Кумулятивная зарплата', legend=False, grid=True)

 

 

7. Круговая диаграмма

 

Круговые диаграммы полезны, когда вы хотите визуализировать пропорцию каждой категории в рамках целого.

В нашем примере имеет смысл создать круговую диаграмму, отображающую распределение зарплат по отделам в организации.

Мы находим общую зарплату сотрудников, сгруппированных по отделам. Затем используем plot.pie() для построения круговой диаграммы:

# Круговая диаграмма: Распределение зарплат по отделамdf_employees.groupby('Department')['Salary'].sum().plot.pie(title='Распределение зарплат по отделам', autopct='%1.1f%%')

 

 

Заключение

 

Надеюсь, вам пригодятся несколько полезных функций построения графиков в pandas.

Да, с помощью matplotlib и seaborn можно создавать намного более красивые графики. Но для быстрой визуализации данных эти функции могут быть очень полезными.

Какие другие функции построения графиков в pandas вы часто используете? Дайте нам знать в комментариях.

[Bala Priya C](https://twitter.com/balawc27) – разработчик и технический писатель из Индии. Она любит работать в области математики, программирования, науки о данных и создания контента. Ее интересы и специализация включают DevOps, науку о данных и обработку естественного языка. Она любит читать, писать, кодировать и пить кофе! В настоящее время она учится и делится своими знаниями с разработческим сообществом, пиша учебники, руководства, мнения и многое другое.