7只熊猫的绘图函数,用于快速数据可视化

用于快速数据可视化的7种熊猫绘图函数

 

当你使用pandas分析数据时,你会使用pandas函数来过滤和转换列,将数据从多个数据框连接在一起,等等。

但是,与其只看数字,生成图表以可视化数据往往更有帮助。

pandas有几个可以用于快速和简单数据可视化的绘图函数。我们将在本教程中讨论它们。

🔗 链接到Google Colab笔记本(如果你想跟着编码的话)。

 

创建一个Pandas数据框架

 

让我们创建一个用于分析的示例数据框架。我们将创建一个名为df_employees的数据框架,其中包含员工记录。

我们将使用Faker和NumPy的random模块填充包含200个记录的数据框架。

注意:如果你的开发环境中没有安装Faker,你可以使用pip进行安装:pip install Faker

运行以下代码片段以创建并填充带有记录的df_employees

import pandas as pdfrom faker import Fakerimport numpy as np# 实例化Faker对象fake = Faker()Faker.seed(27)# 为员工创建一个数据框架num_employees = 200departments = ['工程', '财务', '人力资源', '市场营销', '销售', 'IT']years_with_company = np.random.randint(1, 10, size=num_employees)salary = 40000 + 2000 * years_with_company * np.random.randn()employee_data = {   '员工编号': np.arange(1, num_employees + 1),  '名字': [fake.first_name() for _ in range(num_employees)], '姓氏': [fake.last_name() for _ in range(num_employees)],   '年龄': np.random.randint(22, 60, size=num_employees),   '部门': [fake.random_element(departments) for _ in range(num_employees)], '薪水': np.round(salary), '入职年限': years_with_company}df_employees = pd.DataFrame(employee_data)# 显示数据框架的头部df_employees.head(10)

 

我们设置了种子以便重现。因此每次运行这段代码,你都会获得相同的记录。

以下是数据框架的前几条记录:

 

1. 散点图

 

散点图通常用于理解数据集中任意两个变量之间的关系。

对于df_employees数据框架,让我们创建一个散点图来可视化员工的年龄和薪水之间的关系。这将帮助我们理解员工年龄和薪水之间是否存在任何相关性。

要创建散点图,我们可以使用plot.scatter()如下:

# 散点图:年龄 vs 薪水df_employees.plot.scatter(x='年龄', y='薪水', 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. 箱线图

 

箱线图有助于了解变量的分布、离散程度,并识别异常值。

让我们创建一个箱线图,比较不同部门的工资分布,以高层次比较组织内的工资分布。

在这里,我们使用按“部门”分组的‘Salary’列的 boxplot 函数:

# 箱线图:按部门分布的工资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、数据科学和自然语言处理。她喜欢阅读、写作、编程和咖啡!目前,她正在通过撰写教程、指南、观点文章等向开发者社区学习和分享自己的知识。