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_group

df_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.mfbz.cn/a/303352.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象综合练习(拼图小游戏),用java图形化界面实现拼图小游戏

1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面,写一个项目,知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello,各位同学大家好。今天,我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…

【机器学习】循环神经网络(三)

四、序列预测问题 循环神经网络实现的序列到序列的映射(Recurrent Neural Network based Sequence-to-Sequence Mapping)是一种使用循环神经网络来将一个序列数据映射到另一个序列数据的方法,它可以用于机器翻译、文本摘要、对话生成等任务。…

多国管理中心多语言区块链源码一元夺宝程序仿趣步奕跑/原生计步器/原生人脸识别

前后台分开的,后台是TP3.2的框架了,应该是比较老的程序了。 目前把整体UI 改版黄色系风格,集成了一元夺宝程序,用户数据同步趣步,效果看起来很棒,另外加入股票走势图(K线图)&#xf…

使用即时设计绘制原型设计方便吗?和Axure RP相比怎么样?

对于原型设计,APP 和 Web 都是一样的,因为产品原型是用来确定需求的工具。我们使用这种工具的目的是为了快速迭代,从而深入挖掘和筛选产品的需求。 绘制原型,最重要的原则是:快速、清晰! Axure 工具的优缺…

“单项突出”的赢双科技IPO加速,比亚迪是最强助力?

近日,新能源汽车核心部件供应商赢双科技首次递表科创板,其凭借旋转变压器产品就坐稳了新能源车企主要供应商的地位,从核心业务及业绩情况来看,赢双科技不愧为“单项冠军”。 据悉,赢双科技本次IPO拟募资8.47亿元&…

css中有哪些方式可以隐藏页面元素?区别?

面试官:css中,有哪些方式可以隐藏页面元素?区别? 一、前言 在平常的样式排版中,我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的 但实际上每一种方法都有一丝轻微的…

短视频矩阵系统+无人直播源码+视频批量分发----开发实践

核心技术 1. AI自动直播: 智能系统通过丰富可定制的文案库, 拥有有料有趣的灵魂。不仅能自动语音讲解内容,还可以在直播中和用户灵活互动。直播中可将团购商品同话术自动上下架。 2. AI剪辑 可一键智能批量成片,也可跟着模板剪…

XDOJ78.机器人

标题 机器人 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 机器人按照给定的指令在网格中移动,指令有以下四种: N 向北(上)移动 S 向南(下)移动 E 向东(右)移动 W 向西&…

国标GB28181视频监控EasyCVR平台:视频集中录制存储/云端录像功能及操作介绍

安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时还具备权限管理、设…

linux centos 账户管理命令

在CentOS或其他基于Linux的系统上,账户管理涉及到用户的创建、修改、删除以及密码的管理等任务。 linux Centos账户管理命令 1 创建用户: useradd username 这将创建一个新用户,但默认不会创建家目录。如果想要创建家目录,可以…

19、Kubernetes核心技术 - 资源限制

目录 一、概述 二、Kubernetes 中的资源单位 2.1、CPU资源单位 2.2、内存资源单位 三、Pod资源限制 四、namespace资源限制 4.1、为命名空间配置内存和 CPU 配额 4.2、为命名空间配置默认的内存请求和限制 4.3、为命名空间配置默认的CPU请求和限制 五、超过容器限制的…

FreeRTOS概述

什么是FreeRTOSFreeRTOS官网地址 FreeRTOS 是市场领先的面向微控制器和小型微处理器的实时操作系统 (RTOS),与世界领先的芯片公司合作开发,现在每 170 秒下载一次。MIT 通过 FreeRTOS 开源许可免费分发,包括一个内核和一组不断丰富的 IoT 库&…

muduo网络库剖析——日志Log类

muduo网络库剖析——日志Log类 前情从muduo到my_muduo 概要日志日志级别 框架与细节成员函数 源码 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否可以高效满足;而作为学习者,我们需要抽取其中的精华…

【Leetcode】240. 搜索二维矩阵 II

一、题目 1、题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1: 输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21…

新火种AI|小冰摊牌了!大模型已获国内备案,克隆人发布箭在弦上...

作者:小岩 编辑:彩云 2024年国内AI圈的第一个重磅消息已然来袭。 1月4日,小冰公司宣布,已于去年12月成功获得“小冰大模型”的国内备案。结合此前公司在日本研发的Rinna大模型,小冰方面称,公司已实现不同…

视频会员付费系统源码 影视视频模版源码 模板PC+WAP苹果CMS影视模板源码

快猫视频会员付费视频系统/x站视频模板/苹果CMS影视模板/可打包成双端APP 适用程序:苹果cmsv10 兼容性和面向场景: 1、Windows 平台: IIS/Apache PHP(5.6) MySQL(5.5) 2、Linux/Unix 平台…

深度学习|4.7 参数和超参数

4.7 参数和超参数 超参数是指需要用户提前设置好的参数,这些超参数最终会影响到参数的数值(相当于参数是动态调整得到的) 学习率的选取 最优学习率应该能使得代价函数趋于一个较低的常数。

SpringBoot Import提示Cannot resolve symbol

背景 项目开发过程中经常在IDEA中出现Cannot resolve symbol,但是依赖确定已经通过maven或者gradle依赖了 常见原因 IDEA 存在缓存 File -> Invalidate Caches/Restart jar包的scope不正常,如果只是runtime则无法import,需要调整为com…

ssm使用web工程的相关知识

不使用框架创建web的两种方式(这里是idea2022.3.2版) 第一种:项目右键点击:add Framwork support选择框架进行创建。 操作步骤: 使用这种方式创建可能会存在的问题: 如果你创建web框架前:在…

软测如果这么学,培训班都得倒闭,直接省去上万元的学费!

俗话说外行看热闹,内行看门道。 写这篇文章,是希望把我的一些我认为是非常有价值的经验总结出来,能够帮助刚做测试不久的新同学,或者是测试经验丰富的老同学以共享。 希望我们可爱的新同学,准备要在测试领域耕耘的伙…