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.rhkb.cn/news/233657.html

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

相关文章

复试 || 就业day05(2024.01.08)项目一

文章目录 前言代码模拟梯度下降构建函数与导函数函数的可视化求这个方程的最小值(直接求导)求方程最小值(不令方程导为0)【梯度下降】eta0.1eta 0.2eta 50eta 0.01画出eta0.1时的梯度下降x的变化过程 总结 前言 💫你…

Python将Labelme文件的真实框和预测框绘制到图片上

Python将Labelme文件的真实框和预测框绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专…

qt信号和槽

Qt是一个跨平台的C图形用户界面应用框架 91年奇趣科技开发 pro工程文件介绍 .pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件 QT core gui //Qt包含的模块greaterThan(QT_MAJOR_VERSION, 4): QT widgets //大于4版本包含…

2024.1.2 Redis 数据类型 Stream、Geospatial、HyperLogLog、Bitmaps、Bitfields 简介

目录 引言 Stream 类型 Geospatial 类型 HyperLogLog 类型 Bitmaps 类型 Bitfields 类型 引言 Redis 最关键(应用广泛、频繁使用)的五个数据类型 StringListHashSetZSet 下文介绍的数据类型一般适合在特定的场景中使用! Stream 类型 St…

强化学习的数学原理学习笔记 - 基于模型(Model-based)

文章目录 概览:RL方法分类基于模型(Model-Based)值迭代(Value Iteration)🟦策略迭代(Policy Iteration)🟡截断策略迭代(Truncated Policy Iteration&#xff…

EasyRecovery2024永久免费版电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、…

特征工程(一)

特征工程(一) 什么是特征工程 简单来讲将数据转换为能更好地表示潜在问题的特征,从而提高机器学习性能 特征工程包含的内容 转换数据的过程特征更好地表示潜在问题提高机器学习性能 数据和机器学习的基础知识 数据基础 以下为数据的一…

计算机网络(超级详细笔记)

使用教材计算机网络(第8版)(谢希仁) 第一章:概述 第二章:物理层 第三章:数据链路层 第四章:网络层 第五章:运输层 第六章:应用层 目…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 (一)项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统,该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度,市面上的培训机构管理系统收费越来越贵,为了给协会内培…

【陈老板赠书活动 - 21期】- Python树莓派编程从零开始(第3版)

陈老老老板🧙‍♂️ 👮‍♂️本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 🤴本文简述:活就像海洋,只有意志坚强的人,才能到达彼岸。 👳‍♂️上一篇文章&#xff…

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟,基于之前学习的小程序相关的基础内容,我打算在微信小程序中也设计一个翻页时钟功能,J…

ArcGIS小技巧|四种计算图斑面积的方法

ArcGIS中有多种方法可计算出图斑面积,本文总结了四种方法,是否可堪称史上最全? 1、计算几何 这是最适合非专业人士的方法,直接利用ArcGIS中的计算几何功能进行计算。 a、首先添加一double类型字段,用来存储面积数值…

移动通信原理与关键技术学习(2)

1.多径信道滤波器表示,多径信道可以认为是线性时变滤波器,接收信号为发送信号与信道冲激响应的卷积。 2.调制就是对信号源的信息进行处理加到载波上,使其变为适合于信道传输的形式的过程,就是使载波随信号而改变的技术。 3.进行调…

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花,如教育、医疗、司法、金融等。 本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,…

【MIdjourney】图像角度关键词

本篇仅是我个人在使用过程中的一些经验之谈,不代表一定是对的,如有任何问题欢迎在评论区指正,如有补充也欢迎在评论区留言。 1.侧面视角(from side) 侧面视角观察或拍摄的主体通常以其侧面的特征为主要焦点,以便更好地展示其轮廓…

Linux文件系统和日志分析

一、inode表结构 1. inode表 inode号在同一个设备上是唯一的。 inode号是有限资源,它的大小和磁盘大小有关。 访问文件的基本流程 根据文件夹的文件名和inode号的关系找到对应的inode表,再根据inode表(属主 属组)当中的指针找到磁…

Python 全栈体系【四阶】(十一)

第四章 机器学习 机器学习: 传统的机器学习:以算法为核心深度学习:以数据和计算为核心 感知机 perceptron(人工神经元) 可以做简单的分类任务掀起了第一波 AI 浪潮 感知机不能解决线性不可分问题,浪潮…

c# 学习笔记 - 委托(Delegate)

文章目录 1. 委托1.1 委托概述1.2 委托使用1.3 委托的传播 2. 匿名方法2.1 匿名方法概述2.2 匿名方法 1. 委托 1.1 委托概述 委托简介 委托就是对方法的引用,可以理解为例如整型变量的容器可以存储整形数据,委托就是某种方法的容器,可以用来…

解决Android AAPT: error: resource android:attr/lStar not found. 问题

错误信息 /xxx/gjc/.gradle/caches/transforms-2/files-2.1/930c42acd29d295ce5bc495c3b84423e/core-1.9.0/res/values/values.xml:104:5-113:25: AAPT: error: resource android:attr/lStar not found. not found 资源位置 场景 原Android studio中的项目都是在git上面拉的老项…

React Admin 前端脚手架之ant-design-pro

文章目录 一、React Admin 前端脚手架选型二、React Admin 前端脚手架之ant-design-pro三、ant-design-pro使用步骤四、调试主题五、常用总结(持续更新)EditableProTable组件 常用组件EditableProTable组件 编辑某行后,保存时候触发发送请求EditableProTable组件,添加记录提…