数据处理与可视化:pandas 和 matplotlib 初体验(9/10)
数据处理与可视化:pandas 和 matplotlib 初体验(9/10)
介绍
在如今的数据驱动时代,掌握数据处理与可视化是每个开发者和数据科学家不可或缺的技能。Python 拥有强大的数据处理库 pandas 和数据可视化库 matplotlib,它们可以帮助我们轻松地处理复杂的数据,并以直观的方式展示结果。在本篇文章中,我们将深入学习如何使用 pandas 和 matplotlib 进行数据处理和可视化,从而更好地理解和分析数据。
pandas 库简介
pandas 是一个用于数据处理和分析的强大库,提供了数据结构 Series 和 DataFrame,它们可以用来处理各种表格数据和时间序列数据。
创建 Series 和 DataFrame
-  Series 是一维的、带有索引的数组。 
-  DataFrame 是二维的、类似于电子表格的结构,包含行和列。 
import pandas as pd# 创建一个 Series
data = [10, 20, 30, 40, 50]
series = pd.Series(data, index=["a", "b", "c", "d", "e"])
print("Series:\n", series)# 创建一个 DataFrame
data = {"姓名": ["Alice", "Bob", "Charlie"],"年龄": [25, 30, 35],"成绩": [88, 92, 79]
}
df = pd.DataFrame(data)
print("DataFrame:\n", df)输出:
Series:
a    10
b    20
c    30
d    40
e    50
dtype: int64DataFrame:姓名  年龄  成绩
0    Alice  25  88
1      Bob  30  92
2  Charlie  35  79读取和写入数据
pandas 可以读取和写入多种文件格式,例如 CSV、Excel、SQL 数据库等。
读取 CSV 文件
df = pd.read_csv("data.csv")
print("CSV 文件内容:\n", df)写入 CSV 文件
df.to_csv("output.csv", index=False)| 方法 | 描述 | 示例 | 
|---|---|---|
| pd.read_csv() | 读取 CSV 文件 | df = pd.read_csv("data.csv") | 
| df.to_csv() | 将 DataFrame 写入 CSV 文件 | df.to_csv("output.csv") | 
| pd.read_excel() | 读取 Excel 文件 | df = pd.read_excel("data.xlsx") | 
| df.to_excel() | 将 DataFrame 写入 Excel 文件 | df.to_excel("output.xlsx") | 
数据处理与分析
数据处理是数据分析的关键步骤,pandas 提供了丰富的操作来处理数据,例如筛选、排序、分组等。
数据筛选与过滤
我们可以根据特定的条件筛选 DataFrame 中的行。
# 创建一个 DataFrame
data = {"姓名": ["Alice", "Bob", "Charlie", "David", "Eva"],"年龄": [25, 22, 23, 24, 21],"成绩": [85, 78, 92, 88, 76]
}
df = pd.DataFrame(data)# 筛选成绩大于 80 的行
filtered_df = df[df["成绩"] > 80]
print("成绩大于 80 的学生:\n", filtered_df)输出:
成绩大于 80 的学生:姓名  年龄  成绩
0    Alice  25  85
2  Charlie  23  92
3    David  24  88数据分组与聚合
通过 groupby() 方法,我们可以对数据进行分组并进行聚合操作,例如计算平均值、最大值等。
# 按年龄进行分组,计算每个年龄的平均成绩
grouped = df.groupby("年龄")["成绩"].mean()
print("按年龄分组后的平均成绩:\n", grouped)数据清洗
数据清洗是确保数据质量的关键步骤,例如处理缺失值、去除重复行等。
# 处理缺失值
# 创建带有缺失值的 DataFrame
data = {"姓名": ["Alice", "Bob", "Charlie", None],"年龄": [25, None, 35, 28],"成绩": [88, 92, None, 85]
}
df = pd.DataFrame(data)# 填充缺失值
filled_df = df.fillna({"姓名": "未知", "年龄": df["年龄"].mean(), "成绩": 0})
print("填充缺失值后的 DataFrame:\n", filled_df)输出:
填充缺失值后的 DataFrame:姓名        年龄   成绩
0    Alice  25.000000  88.0
1      Bob  29.333333  92.0
2  Charlie  35.000000   0.0
3       未知  28.000000  85.0| 数据操作 | 描述 | 示例 | 
| 数据筛选 | 根据条件筛选行 | df[df["成绩"] > 80] | 
| 数据分组与聚合 | 按某列分组并计算统计量 | df.groupby("年龄")["成绩"].mean() | 
| 缺失值处理 | 填充或去除缺失值 | df.fillna(value) | 
数据可视化入门:matplotlib
matplotlib 是 Python 最流行的数据可视化库之一,它允许我们绘制折线图、柱状图、散点图等,以直观地展示数据分析的结果。
绘制折线图
折线图通常用于展示数据的变化趋势。
import matplotlib.pyplot as plt# 数据
months = ["一月", "二月", "三月", "四月", "五月"]
sales = [3000, 3200, 3500, 4000, 4200]# 绘制折线图
plt.plot(months, sales, marker="o")
plt.xlabel("月份")
plt.ylabel("销售额 (元)")
plt.title("月销售额趋势")
plt.grid()
plt.show()绘制柱状图
柱状图用于比较不同类别的数据。
# 数据
names = ["Alice", "Bob", "Charlie", "David", "Eva"]
scores = [85, 78, 92, 88, 76]# 绘制柱状图
plt.bar(names, scores, color="skyblue")
plt.xlabel("姓名")
plt.ylabel("成绩")
plt.title("学生成绩对比图")
plt.show()绘制散点图
散点图用于展示两组数据之间的关系。
# 数据
age = [22, 25, 30, 35, 40, 45, 50]
salary = [2500, 2700, 3000, 3400, 3700, 4000, 4300]# 绘制散点图
plt.scatter(age, salary, color="green")
plt.xlabel("年龄")
plt.ylabel("工资 (元)")
plt.title("年龄与工资的关系")
plt.show()| 图表类型 | 描述 | 示例 | 
| 折线图 | 展示数据的变化趋势 | plt.plot() | 
| 柱状图 | 比较不同类别的数据 | plt.bar() | 
| 散点图 | 展示两组数据之间的关系 | plt.scatter() | 
综合示例:学生成绩分析与可视化
在这个综合示例中,我们将结合 pandas 和 matplotlib,对学生成绩进行分析并将结果进行可视化展示。
示例:分析并可视化学生成绩
-  创建一个包含学生姓名、年龄和成绩的数据表。 
-  计算平均成绩并筛选成绩高于平均值的学生。 
-  使用柱状图可视化每位学生的成绩。 
import pandas as pd
import matplotlib.pyplot as plt# 创建 DataFrame
data = {"姓名": ["Alice", "Bob", "Charlie", "David", "Eva"],"年龄": [25, 22, 23, 24, 21],"成绩": [85, 78, 92, 88, 76]
}
df = pd.DataFrame(data)# 计算平均成绩
average_score = df["成绩"].mean()
print(f"平均成绩: {average_score:.2f}")# 筛选成绩高于平均值的学生
above_average_df = df[df["成绩"] > average_score]
print("成绩高于平均值的学生:\n", above_average_df)# 可视化学生成绩
plt.bar(df["姓名"], df["成绩"], color="orange")
plt.xlabel("姓名")
plt.ylabel("成绩")
plt.title("学生成绩柱状图")
plt.axhline(y=average_score, color='r', linestyle='--', label=f"平均成绩: {average_score:.2f}")
plt.legend()
plt.show()输出:
平均成绩: 83.80
成绩高于平均值的学生:姓名  年龄  成绩
0    Alice  25  85
2  Charlie  23  92
3    David  24  88此图展示了每位学生的成绩,红色虚线表示平均成绩,可以直观地看到哪些学生的成绩高于平均值。
总结
在本篇文章中,我们学习了如何使用 pandas 进行数据处理和分析,包括数据的读取、清洗、筛选和分组等操作。随后,我们学习了如何使用 matplotlib 进行数据可视化,绘制了折线图、柱状图和散点图。最后,通过一个综合示例,我们结合 pandas 和 matplotlib 对学生成绩进行了分析与可视化展示。通过掌握这些工具和技巧,你将能够更好地处理数据并从中提取有用的信息。
在下一篇文章中,我们将完成一个综合的小项目,把之前学习的所有知识整合在一起,进一步加深对 Python 编程的理解。敬请期待!

相关文章:
 
数据处理与可视化:pandas 和 matplotlib 初体验(9/10)
数据处理与可视化:pandas 和 matplotlib 初体验(9/10) 介绍 在如今的数据驱动时代,掌握数据处理与可视化是每个开发者和数据科学家不可或缺的技能。Python 拥有强大的数据处理库 pandas 和数据可视化库 matplotlib,它…...
 
鸿蒙学习总结
鸿蒙(HarmonyOS),做为国产自主研发设计的第一个操作系统,从开放测试以来一直备受关注。其纯血鸿蒙版(HarmonyOS NEXT)也于进日发布。过去的一段时间里,我站在一个移动开发者的角度对HarmonyOS进…...
 
如何修改文件创建时间?六个超简单修改方法介绍
怎么修改文件创建时间?在信息安全与隐私保护的领域里,每一个细节都可能成为泄露敏感信息的突破口。文件的创建时间,这个看似微不足道的数据点,实则可能蕴含着重要的时间线索,对于不希望被外界窥探其内容或来源的个人及…...
 
【MySQL 保姆级教学】内置函数(9)
内置函数 1. 日期函数1.1 日期函数的种类1.2 示例1.3 日期的转换 2. 字符串函数2.1 种类2.2 示例 3. 数学函数3.1 种类3.2 向上取整和向下取整3.3 示例 4. 其他函数4.1 查询当前用户/数据库4.2 ifnull(val1,val2)4.3 md5()函数4.4 password()函数 1. 日期函数 1.1 日期函数的种…...
 
华为大咖说丨如何通过反馈机制来不断优化大模型应用?
本文分享自时习知 作者:袁泉(华为AI数据工程专家)全文约3015字,阅读约需8分钟 大模型应用正式投入使用后,存在一个较为普遍的情况:在利用“大模型提升业务运营效率”的过程中,业务部门和IT团队…...
 
上海亚商投顾:沪指缩量震荡 风电、传媒股集体走强
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天缩量震荡,三大指数集体收涨,北证50则跌超7%,超80只北交所个股跌逾…...
 
三磺酸-Cy3.5-羧酸在水相环境中表现良好,能够提高成像的清晰度和准确性
一、基本信息 中文名称:三磺酸-Cy3.5-羧酸,水溶性Cy3.5 羧基 英文名称:trisulfo-Cy3.5-carboxylic acid,trisulfo-Cy3.5-COOH,trisulfo-Cyanine3.5-COOH 分子式:C41H44N2NaO11S3- 分子量:85…...
 
国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播
在当今社会,视频监控已经成为公共安全、企业管理、智能城市建设等领域不可或缺的一部分。然而,由于不同厂家和平台之间的兼容性问题,视频监控系统的联网和整合面临巨大挑战。为了解决这个问题,国家制定了《公共安全视频监控联网系…...
 
mac nwjs程序签名公证(其他mac程序也一样适用)
为什么需要公证 mac os14.5之后的系统,如果不对应用进行公证,安装,打开,权限使用上都会存在问题,而且有些问题你强制开启(sudo spctl --master-disable)使用后可能会有另外的问题, …...
 
网络应用技术 实验一:路由器实现不同网络间通信(华为ensp)
目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验任务及要求 1、任务 1:完成网络部署 2、任务 2:设计全网IP 地址 3、任务 3:实现全网主机互通 六、实验步骤 1、在ensp中部署网络 2、配置各主机 IP地址、子网掩…...
 
使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南
使用 Qt GRPC 构建高效的 Trojan-Go 客户端:详细指南 初识 Qt 和 gRPC 什么是 Qt?什么是 gRPC? 项目结构概述创建 proto 文件定义 API 下载 api.proto 文件解析 proto 文件 1. package 与 option 语句2. 消息类型定义 TrafficSpeedUserUserSt…...
 
【mysql进阶】5-事务和锁
mysql 事务基础 1 什么是事务 事务是把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失败,这组SQL语句可以是⼀条也可以是多条。再来看⼀下转账的例⼦,如图: 在这个例⼦中&a…...
 
指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
定义一些关键字代表的意义 STRUCT: 代表需要输入的格式化的信息IMPORT: 代表需要输入的外部信息, 这些信息通常是客观的SEARCH: 需要从某地比如数据库检索搜集信息SUM: 一种宏观的加和操作, 比如两个股票户ABAB,微观上实际还是有差异GROUP: …...
 
【论文分享】居住开放空间如何影响老年人的情感:使用可穿戴传感器的现场实验
本研究首次通过跟踪实时、高分辨率的环境暴露和情绪反应来研究和比较不同质量住宅社区中的居住开放空间(ROS)与老年人情绪之间关联;并采用混合方法,包括可穿戴传感器和问卷调查,收集了中国广州老年居民的客观和主观住宅…...
 
入门 | Prometheus+Grafana 普罗米修斯
#1024程序员节|征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 (1)、数据来源 数据来源,也就是需要监控的数据…...
制作Ubuntu根文件系统
制作Ubuntu根文件系统: gunzip ubuntu-base-22.04.5-base-arm64.tar.gz mkdir ubuntu tar xvpf ubuntu-base-22.04.5-base-arm64.tar -C ubuntu 挂载目录、复制dns、执行chroot cd /userdisk/ubuntu cp /etc/resolv.conf ./etc/resolv.conf mount --bind /dev ./d…...
 
16个最佳测试管理工具(2024)
1、前言 测试管理解决方案能够帮助你捕捉测试需求、设计测试用例、生成测试执行报告、管理资源等。软件质量的疏忽可能导致公司遭受巨大的经济损失、声誉损害或面临诉讼风险。一个优秀的测试管理工具是防止缺陷和故障进入生产环节的关键。 2、PractiTest  功能特点&#x…...
 
基于知识图谱的猕猴桃种植技术问答系统
猕猴桃怎么种植更高效、病虫害怎么防治、最适宜的气候条件有哪些?作为一名科技研发迷,这些问题是不是听起来很有挑战性?咱们今天就来聊聊一个特别的研发项目——基于知识图谱的猕猴桃种植技术问答系统。这不仅仅是一个农业项目,它…...
 
Swift雨燕蜂窝无线通信系统介绍
本文博客链接:jdh99-CSDN博客,作者:jdh,转载请注明. 1. 概述 物联网小无线通信技术众多,其中大多是小范围小规模的无线通信技术,而行业难点是如何做到广覆盖、大容量、低功耗。 针对以上难点,宏讯物联研发了Swift雨燕蜂窝无线通信技术&…...
 
【ZZULI】数据库第二次实验
【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
 
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
 
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
 
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
