脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 极速数据可视化!七个Pandas绘图函数助你事半功倍

极速数据可视化!七个Pandas绘图函数助你事半功倍

2024-01-04 13:27Python学研大本营 Python

7个用于快速数据可视化的Pandas绘图函数。也可以尝试使用matplotlib和seaborn生成更漂亮的图表。但是对于快速数据可视化,上述这些函数非常方便。

一、简介

在使用Pandas分析数据时,会使用Pandas函数来过滤和转换列,连接多个数据帧中的数据等操作。

但是,生成图表——将数据在数据帧中可视化——通常比仅仅查看数字更有帮助。

Pandas具有几个绘图函数,可以使用它们快速轻松地实现数据可视化。我们将在本教程中介绍这些函数。

【示例代码】:https://github.com/balapriyac/python-data-analysis/blob/main/pandas-plotting-fns/pandas_plotting_functions.ipynb

二、创建Pandas数据帧

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

我们将使用Faker和NumPy的随机模块来填充数据帧,生成200条记录。

注意:如果你的开发环境中没有安装Faker,请使用pip安装:pip install Faker。

运行以下代码片段来创建df_employees,并向其中填充记录:

import pandas as pd
from faker import Faker
import numpy as np

# 实例化Faker对象
fake = Faker()
Faker.seed(27)

# 为员工创建一个数据帧
num_employees = 200
departments = ['Engineering', 'Finance', 'HR', 'Marketing', 'Sales', '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)

# 显示数据帧的头部
df_employees.head(10)

我们设置了种子以便重现结果。所以每次运行此代码,都会得到相同的记录。

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

极速数据可视化!七个Pandas绘图函数助你事半功倍图片

df_employees.head(10)的输出结果

三、Pandas绘图函数

1. 散点图

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

对于df_employees数据帧,让我们创建一个散点图来可视化员工年龄和工资之间的关系。这将帮助我们了解员工年龄和工资之间是否存在一定的相关性。

要绘制散点图,我们可以使用plot.scatter(),如下所示:

# 散点图:年龄与工资
df_employees.plot.scatter(x='Age', y='Salary', src="/uploads/allimg/240104/132J5A92-1.png"   data-type="inline">

对于此示例数据帧,我们并未看到员工年龄和工资之间的任何相关性。

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='-', >极速数据可视化!七个Pandas绘图函数助你事半功倍图片

由于我们选择使用员工在公司工作年限的线性关系来填充薪资字段,因此可以清晰地看到折线图反映了这一点。

3. 直方图

可以使用直方图来可视化连续变量的分布情况,方法是将数值划分成区间或分段,并显示每个分段中的数据点数量。

让我们使用plot.hist()绘制直方图来了解员工年龄的分布情况,如下所示:

# 直方图:年龄分布
df_employees['Age'].plot.hist(title='Age Distribution', bins=15)

极速数据可视化!七个Pandas绘图函数助你事半功倍图片

4. 箱形图

箱形图有助于了解变量的分布、扩散情况,并用于识别异常值。

让我们创建一个箱形图,比较不同部门间的工资分布情况,从而对组织部的工资分布情况进行高层次的比较。

箱形图还有助于确定薪资范围以及每个部门的有用信息,如中位数薪资和潜在的异常值等。

在这里,我们使用根据“部门(Department)”分组的“薪资(Salary)”列来绘制箱形图:

# 箱形图:按部门分列的薪金分布情况
df_employees.boxplot(column='Salary', by='Department', grid=True, vert=False)

极速数据可视化!七个Pandas绘图函数助你事半功倍图片

从箱线图中,我们可以看到某些部门的薪资分布比其他部门更广泛。

5. 条形图

如果想要了解变量在出现频率方面的分布情况,可以使用条形图。

现在,让我们使用plot.bar()绘制一个条形图来可视化员工数量:

# 条形图:按部门的员工数量
df_employees['Department'].value_counts().plot.bar(title='Employee Count by Department')

极速数据可视化!七个Pandas绘图函数助你事半功倍图片

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_group

df_employees.plot.area(x='AgeGroup', y='CumulativeSalaryByAgeGroup', ># 饼图:按部门划分的薪资分布
df_employees.groupby('Department')['Salary'].sum().plot.pie(title='Department-wise Salary Distribution', autopct='%1.1f%%')

四、总结

以上就是7个用于快速数据可视化的Pandas绘图函数。也可以尝试使用matplotlib和seaborn生成更漂亮的图表。但是对于快速数据可视化,上述这些函数非常方便。

原文地址:https://mp.weixin.qq.com/s/fGCwIJqRZ4VPh41oZEP1uQ

延伸 · 阅读

精彩推荐
  • Pythonpython+pandas+时间、日期以及时间序列处理方法

    python+pandas+时间、日期以及时间序列处理方法

    今天小编就为大家分享一篇python+pandas+时间、日期以及时间序列处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    LY_ysys62916292021-03-15
  • PythonPython Map 函数的使用

    Python Map 函数的使用

    这篇文章主要介绍了Python Map 函数的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下...

    雪梦科技9992020-08-29
  • Pythonpython asyncio 协程库的使用

    python asyncio 协程库的使用

    这篇文章主要介绍了python asyncio 协程库的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...

    Kevin Wang12462021-08-27
  • Pythondjango2 快速安装指南分享

    django2 快速安装指南分享

    下面小编就为大家分享一篇django2 快速安装指南分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    入沐三分5322021-01-01
  • Pythonpython图像和办公文档处理总结

    python图像和办公文档处理总结

    在本文里我们给大家整理了关于python图像和办公文档处理的相关知识点内容以及重点内容总结,有需要的朋友们跟着学习下。...

    脚本之家6212021-06-30
  • Pythontensorflow实现简单的卷积网络

    tensorflow实现简单的卷积网络

    这篇文章主要为大家详细介绍了tensorflow实现简单的卷积网络,使用的数据集是MNIST,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    shashakang12342021-02-24
  • PythonPython实现上课点名器系统

    Python实现上课点名器系统

    今天给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,对Python上课点名器实现过程感兴趣的朋友,一起来看看是如何实现的吧...

    Dragon少年8812022-01-20
  • PythonPython实现将Excel转换成为image的方法

    Python实现将Excel转换成为image的方法

    今天小编就为大家分享一篇Python实现将Excel转换成为image的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    杨鑫newlfe11682021-04-12