7个Pandas绘图函数助力数据可视化

大家好,在使用Pandas分析数据时,会使用Pandas函数来过滤和转换列,连接多个数据帧中的数据等操作。但是,生成图表将数据在数据帧中可视化通常比仅仅查看数字更有帮助。

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

一、创建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)

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

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

图片

df_employees.head(10)的输出结果

二、Pandas绘图函数

1. 散点图

散点图通常用于了解数据集中任意两个变量之间的关系。对于df_employees数据帧,让我们创建一个散点图来可视化员工年龄和工资之间的关系。这将帮助大家了解员工年龄和工资之间是否存在一定的相关性。

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

# 散点图:年龄与工资
df_employees.plot.scatter(x='Age', y='Salary', title='Scatter Plot: Age vs Salary', xlabel='Age', ylabel='Salary', 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='Average Salary Trend Over Years of Experience', xlabel='Years With Company', ylabel='Average Salary', legend=False, grid=True)

图片

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

3. 直方图

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

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

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

图片

4. 箱形图

箱形图有助于了解变量的分布、扩散情况,并用于识别异常值。创建一个箱形图,比较不同部门间的工资分布情况,从而对组织部的工资分布情况进行高层次的比较。

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

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

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

图片

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

5. 条形图

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

使用plot.bar()绘制一个条形图来可视化员工数量:

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

图片

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='Cumulative Salary Distribution Over Age Groups', xlabel='Age Group', ylabel='Cumulative Salary', legend=False, grid=True)

图片

7. 饼图

饼图有助于可视化各个部门在整体组织中的薪资分布比例。

对于我们的示例,创建一个饼图来显示组织中各个部门的薪资分布是很有意义的。

通过部门对员工的薪资进行分组,然后使用plot.pie()来绘制饼图:

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

图片

三、总结

以上就是本文介绍的7个用于快速数据可视化的Pandas绘图函数,也可以尝试使用matplotlibseaborn生成更漂亮的图表。对于快速数据可视化,上述这些函数非常方便,实现过程较为轻松。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁相关问题(三)

Redis实战精讲-13小时彻底学会Redis 一、什么是分布式锁? 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。 l 线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该…

传统图像处理学习笔记更新中

文章目录 传统图像处理颜色空间高斯滤波腐蚀和膨胀开运算和闭运算如何求一张图片的均值?线性插值双线性插值仿射变换透视变换常见的边缘检测算子Sobel 算法Canny 算法Hough 变换原理(直线和圆检测)找轮廓(findCountours)单应性(homography)原理

软件测试|Linux基础教程:ln命令与软链接和硬链接

简介 在Linux系统中,ln命令是一个非常有用的工具,用于创建链接(link),将一个文件或目录链接到另一个位置。链接允许一个文件或目录可以同时存在于多个位置,而不会占用额外的磁盘空间。ln命令支持创建硬链接…

TS内置的Readonly<T>

不要使用内置的Readonly<T>&#xff0c;自己实现一个。 泛型 Readonly<T> 会接收一个 泛型参数&#xff0c;并返回一个完全一样的类型&#xff0c;只是所有属性都会是只读 (readonly) 的。 也就是不可以再对该对象的属性赋值。 例如&#xff1a; interface Tod…

202312 青少年软件编程等级考试Scratch一级真题(电子学会)

2023年12月 青少年软件编程等级考试Scratch一级真题&#xff08;电子学会&#xff09; 试卷总分数&#xff1a;100分 试卷及格分&#xff1a;60 分 考试时长&#xff1a;60 分钟 第 1 题 单选题 观察下列每个圆形中的四个数&#xff0c;找出规律&#xff0c;在括…

用通俗易懂的方式讲解:2024 检索增强生成技术(RAG)研究进展

本篇内容1w字左右&#xff0c;稍微有点长&#xff0c;相对不容易理解&#xff0c;喜欢可以收藏、关注、点赞。 一、前言 在过去的一两年里&#xff0c;人工智能领域目睹了检索增强生成技术&#xff08;RAG&#xff09;的迅猛发展&#xff0c;这种技术结合了强大的语言模型与信…

程序员副业之AI情侣头像(手把手超详细完整全流程)

项目介绍 小黑今天给咱们分享个轻松简单的项目&#xff0c;每天不会超过半小时&#xff0c;就是用AI制作情侣头像&#xff0c;在抖音上变现。听起来是不是很科幻&#xff1f;但实际上效果杠杠的&#xff01; 最关键的是&#xff0c;收入方面&#xff0c;一单9块9&#xff0c;…

深入了解性能测试工具:优化应用性能的关键步骤

在当今数字化时代&#xff0c;应用程序性能是保持用户满意度和业务成功的关键因素之一。性能测试工具是开发和测试团队的宝贵资源&#xff0c;可以帮助识别和解决潜在的性能瓶颈&#xff0c;确保应用程序在各种负载条件下都能表现出色。本文将介绍性能测试工具的重要性、及它们…

计算机缺失vcomp120.dll文件怎么办?总结多种解决方法分享

在使用电脑过程中&#xff0c;难免会遇到各种问题&#xff0c;其中vcomp120.dll丢失问题就是其中之一。这个问题可能会给用户带来诸多不便&#xff0c;导致某些应用程序无法正常运行。在这篇文章中&#xff0c;我们将详细介绍vcomp120.dll文件的重要性&#xff0c;以及遇到丢失…

MySQL8.0更新的内容

官网地址&#xff1a;MySQL :: MySQL 8.0 Reference Manual :: 1.3 What Is New in MySQL 8.0 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Mysql8.0参考手册 / 一般信息 /什么是在mysql8.0的新内容 1.3如何…

点灯大师的第一步 -imx6ull

实验目的 编写linux 的驱动程序&#xff0c;并移植到IMX6ULL -MINI开发板上&#xff0c;实现将 LED灯点亮&#xff0c;并周期性闪烁&#xff0c;周期间隔可调节的功能。出现的问题 2.1 点灯 2.1.1 设备加入到设备树中 设置pin 功能与 GPIO功能 PIN功能(PAD功能)又分为电气特性(…

vue2导出excel,合并单元格的表格

1.先引入一个js文件&#xff0c;作为主要导出函数 /* eslint-disable */ import fileSaver from file-saver // import Blob from /vendor/Blob import xlsxDist from script-loader!xlsx/dist/xlsx.core.min require(script-loader!file-saver); import XLSX from xlsx-style…

MySQL8快速安装以及配置小技巧

安装 首先去官网下载&#xff0c;地址是这个 我选择的是Windows (x86, 64-bit), ZIP Archive。解压到一个目录&#xff0c;然后按照下面的命令执行 cd /d/mysql-8.2.0-winx64/bin ./mysqld --initialize --console # 上面这个命令执行完成之后控制台会输出临时密码&#xff0…

TS 36.211 V12.0.0-下行(6)-同步信号

本文的内容主要涉及TS 36.211&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

腾讯云服务器(免费1个月)申请流程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

数据结构与算法Python版:计数排序

简介&#xff1a;计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。当然这是一种…

如何利用ssh将手机连接电脑

首先我们需要下载ssh&#xff0c;因为我们没有安装 sshd 命令意思是开启ssh 下载完以后要设置密码&#xff0c;我设置得是 123456 开启服务&#xff0c;查看ip 电脑连接 ssh 刚刚得ip -p 8022 后面就连接上了 我可以在这里启动我手机上的vnc

UG装配-爆炸图

当我们将零件装配成总成的时候&#xff0c;通常需要绘制爆炸图来说明总成零件组成&#xff0c;需要用到爆炸图命令&#xff0c;首先点击新建爆炸&#xff0c;然后为爆炸图命名 然后我们可以选择编辑爆炸或者自动爆炸&#xff1a; 编辑爆炸是通过手动的方式选择部件&#xff0c…

计算机网络学习笔记(四)

文章目录 1.介绍一下HTTPS的流程。2.介绍一下HTTP的失败码。3.说一说你知道的http状态码。4. 301和302有什么区别&#xff1f;5.302和304有什么区别&#xff1f;6. 请描述一次完整的HTTP请求的过程。7.什么是重定向&#xff1f;8. 重定向和请求转发有什么区别&#xff1f;9.介绍…

Java研学-Servlet3.0文件上传下载

一 文件上传 1 介绍 用户选择本地文件资源保存到服务器上&#xff0c;Servlet需要将二进制数据以文件保存到服务器磁盘中&#xff0c;再将磁盘路径保存到数据库中 2 项目搭建 创建web项目&#xff0c;并添加对应jar包(JSTL) 3 API HttpServletRequest 方法–从请求中解析上…