【机器学习学习笔记】pandas基础

零基础入门 Pandas:数据处理的 "万能工具"

如果你是刚接触数据分析的小白,一定听过 "Pandas" 这个名字。简单说,Pandas 是 Python 中专门用来处理数据的工具库,就像 Excel 的 "高级版"—— 能更快、更灵活地处理成千上万行数据,是数据分析入门的必备技能。下面用最通俗的语言,带你一步步认识 Pandas 的核心用法。

一、先搞懂:Pandas 最核心的 2 种数据结构

Pandas 之所以好用,是因为它有 2 种专门为数据设计的 "容器",所有数据处理都围绕这两种容器展开。

1. Series:像 "带标签的列表"(一维数据)

可以理解为只有 1 列的表格,比如 "班级学生的数学成绩":

  • 左边是 "标签"(索引,比如学生姓名 / 学号)
  • 右边是 "数据"(比如成绩)
举个例子(代码可直接复制运行):
import pandas as pd  # 先"召唤"Pandas工具# 用字典创建Series(键=标签,值=数据)
成绩 = pd.Series({'小明': 90, '小红': 85, '小刚': 95})
print(成绩)

运行后会看到:

小明    90
小红    85
小刚    95
dtype: int64  # 数据类型是整数

2. DataFrame:像 "Excel 表格"(二维数据)

这是 Pandas 最常用的结构,有行标签(索引)、列标签(列名)和数据,比如 "班级学生的各科成绩":

举个例子:
# 用"字典套列表"创建DataFrame(键=列名,值=该列数据)
各科成绩 = pd.DataFrame({'数学': [90, 85, 95],'语文': [88, 92, 89],'英语': [92, 88, 94]
}, index=['小明', '小红', '小刚'])  # 指定行标签
print(各科成绩)

运行后会看到熟悉的表格:

      数学  语文  英语
小明   90  88  92
小红   85  92  88
小刚   95  89  94

📌 关键区别:Series 只有 1 列,没有 "列名";DataFrame 有多列,必须有 "列名",就像 Excel 的表头。

二、第一步:读取外部数据(比如 CSV/Excel)

实际分析中,数据很少是自己手写的,大多来自外部文件(比如 CSV、Excel)。Pandas 一句话就能读取:

1. 读取 CSV 文件(最常用)

CSV 是纯文本表格,比 Excel 体积小,适合大数据。

# 读取本地CSV(路径写文件在你电脑里的位置,比如"桌面/数据.csv")
df = pd.read_csv("本地文件路径.csv")# 也能直接读取网上的CSV(比如下面这个是洛杉矶人口数据)
df = pd.read_csv("https://labfile.oss.aliyuncs.com/courses/906/los_census.csv")

2. 读取后先 "预览" 数据

如果数据有几万行,直接打印会卡死,用这两个方法看前几行 / 后几行:

df.head()  # 默认看前5行(括号里写数字可改,比如head(10)看前10行)
df.tail()  # 默认看后5行(同理tail(7)看后7行)

3. 快速了解数据 "概况"

describe()能一键看到数据的统计信息(比如最大值、最小值、平均值),帮你快速把握数据特征:

df.describe()  # 只对数字类型的列有效

三、核心操作 1:选择你需要的数据(数据索引)

拿到表格后,经常需要 "只看某几行 / 某几列",Pandas 有两种最常用的选择方式:

方式 1:按 "数字位置" 选(iloc)

就像 Excel 里的 "第 1 行、第 2 列",不管行标签 / 列名是什么,只看位置(从 0 开始数!)。

语法:df.iloc[行位置, 列位置](逗号前是行,逗号后是列)

举个例子(用前面的 "各科成绩" 表格):
行位置行标签数学(列 0)语文(列 1)英语(列 2)
0小明908892
1小红859288
2小刚958994
# 1. 选前2行(行位置0和1)
各科成绩.iloc[:2]  # 冒号表示"到...为止",[:2] = 从0到1(不包含2)# 2. 选第1行(位置0)、第2列(位置1,语文)
各科成绩.iloc[0, 1]  # 结果:88(小明的语文成绩)# 3. 选第0、2行(小明、小刚),第0、2列(数学、英语)
各科成绩.iloc[[0,2], [0,2]]

方式 2:按 "标签名称" 选(loc)

直接用 "行标签(比如小明)" 或 "列名(比如数学)" 选,更直观,不用记位置。

语法:df.loc[行标签, 列名]

举个例子:
# 1. 选"小明"这一行
各科成绩.loc['小明']# 2. 选"数学"这一列
各科成绩.loc[:, '数学']  # 逗号前写":"表示"所有行"# 3. 选"小明、小刚"的"语文、英语"成绩
各科成绩.loc[['小明','小刚'], ['语文','英语']]

📌 小白记住:分不清就优先用loc(按名称选),不容易出错;需要按 "第 N 行第 N 列" 就用iloc

四、核心操作 2:删除不需要的数据

拿到数据后,经常要删冗余的行 / 列、重复数据或空白数据。

1. 删除指定行 / 列(drop)

比如表格里有 "学号" 列用不上,直接删掉:

# 删除"学号"列(axis=1表示删列,axis=0表示删行)
df.drop(labels='学号', axis=1)# 删除第0行(行标签为0)
df.drop(labels=0, axis=0)

2. 删除重复数据(drop_duplicates)

比如表格里有完全一样的两行(重复录入),一键去重:

df.drop_duplicates()  # 默认删除所有列都重复的行

3. 删除空白数据(dropna)

数据里经常有 "空白格"(Pandas 里叫 NaN),比如某个人的英语成绩没填,直接删掉这一行:

df.dropna()  # 默认删除包含任何空白的行

五、核心操作 3:填充空白数据(fillna)

如果空白数据不多,直接删除太可惜,就用合理的数值填充(比如用平均值)。

1. 用固定值填充(比如 0)

# 所有空白都填0
df.fillna(0)

2. 用前后值填充

比如某个人的英语成绩空白,用他前一个人的成绩填(或后一个人):

df.fillna(method='pad')  # pad=用前面的值填充(向前填充)
df.fillna(method='bfill')  # bfill=用后面的值填充(向后填充)

3. 用平均值填充(最常用)

比如数学成绩有空白,用全班数学的平均值填,更合理:

# 用"数学"列的平均值,填充该列的空白
df['数学'].fillna(df['数学'].mean())

4. 插值填充(更智能)

如果数据有趋势(比如温度随时间上升),用 "插值" 能更贴合数据规律。比如:

# 生成一个有空白的温度数据
温度数据 = pd.DataFrame({'温度': [20, np.nan, 25, np.nan, 30]})# 线性插值(按中间值填,比如20和25之间的空白填22.5)
温度数据.interpolate()

运行后空白会被智能填充:

    温度
0  20.0
1  22.5  # 插值结果
2  25.0
3  27.5  # 插值结果
4  30.0

六、快速绘图:让数据变直观

Pandas 能直接调用绘图工具,一句话画出折线图、柱状图等,不用学复杂的绘图库。

比如用前面的 "各科成绩" 画柱状图:

# 画柱状图(kind='bar'表示柱状图,默认是折线图)
各科成绩.plot(kind='bar')

运行后会自动弹出图表,能清晰看到每个人各科成绩的对比。

七、小白入门总结

  1. 核心结构:先记住 Series(1 列)和 DataFrame(表格),90% 的操作都用这两个。
  2. 数据读取:用pd.read_csv()读文件,head()预览,describe()看概况。
  3. 数据选择:按名称用loc(简单),按位置用iloc(灵活)。
  4. 数据清理:删数据用drop/drop_duplicates/dropna,填数据用fillna/interpolate
  5. 快速绘图:用df.plot(kind='xxx')看数据趋势。

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

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

相关文章

(Mysql)MVCC、Redo Log 与 Undo Log

1. MVCC(多版本并发控制)概念 MVCC(Multi-Version Concurrency Control)是一种数据库并发控制机制,用于解决 读写冲突,提高数据库并发性能。MySQL InnoDB 存储引擎使用 MVCC 来实现 非阻塞读(即…

OpenCV-Python Tutorial : A Candy from Official Main Page(五)

4.5FAST Algorithm for Corner Detection 4.5.1FAST算法 我们已了解多种特征检测器,其中许多效果出色。但从实时应用的角度来看,它们的速度仍不够快。一个典型例子是计算资源有限的SLAM(同步定位与建图)移动机器人。 为解决此问…

LINUX 91 SHELL:删除空文件夹 计数

问题 [rootweb ~]# find -type f -exec echo "file:{}" $path; find: 遗漏“-exec”的参数 您在 /var/spool/mail/root 中有邮件[rootweb ~]# $path/root -bash: /root: 没有那个文件或目录 您在 /var/spool/mail/root 中有新邮件 [rootweb ~]# path/root [rootweb ~…

视频软解码技术详解:原理、应用与未来发展

视频软解码的基本原理 概念解析:CPU主导的通用解码方式 视频软解码是一种完全依赖通用CPU执行解码算法的视频还原技术,其核心特征在于不依赖任何专用硬件模块,而是通过软件程序调用CPU的通用计算能力完成压缩视频数据的解码过程[1][2]。与硬…

线性回归中梯度下降与正规方程以及拟合问题与正则化

线性回归实战指南:从理论到实践 目录 线性回归理论基础机器学习项目开发流程波士顿房价预测实战梯度下降与正规方程模型评估指标拟合问题与正则化总结与展望 1. 线性回归理论基础 1.1 什么是线性回归? 线性回归是一种监督学习算法,用于预…

为什么46.1k程序员都在用这个AI绘画神器?我体验一周后终于明白了

大家好,我是顾北,一名AI应用探索者,也是GitHub开源项目收集者。说起AI绘画这事儿,我之前真的是又爱又恨。上个月想给朋友搞张生日贺图,结果在Stable Diffusion WebUI里折腾了大半天。采样步数?CFG比例&…

Java基础第8天总结(map遍历、Stream流)

选中一部分代码,然后CTRLALTT,可以在外面套上while循环,try..catch之类的小案例:电影信息管理模块:用户可以上架、查询、下架、下架某个主演参演的电影package Demo;import lombok.AllArgsConstructor; import lombok.Data; impor…

总线矩阵的原理

总线矩阵(Bus Matrix)是多主设备共享多从设备的智能连接与仲裁核心,本质是一个“灵活的交叉开关阵列”,用于解决多个主设备(如CPU、DMA、GPU)同时访问多个从设备(如内存、外设、存储芯片&#x…

硬件开发_基于Zigee组网的果园养殖监控系统

一.系统概述 果园环境监控系统功能如下: 核心控制器:以STM32为核心控制器,承担整体的数据采集、处理及控制任务。环境参数监测:集成温度传感器、CO₂传感器、光照传感器和土壤湿度传感器,可实时采集果园内的温度、二氧…

K8s调度核心:从Pod分配到节点优化

在 Kubernetes(K8s)中,Pod 调度是指 K8s 系统根据特定规则和策略,将 Pod 合理分配到集群中的某个节点(Node)上运行的过程。其核心目标是确保 Pod 在合适的节点上高效、稳定地运行,充分利用集群资…

Tomcat 企业级运维实战系列(四):Tomcat 企业级监控

Tomcat 企业级运维实战系列(四):Tomcat 企业级监控一:监控工具1)概述2)流程3)部署二:监控命令1)jps2)jstack3)jmap4)MAT 工具分析三&a…

技术干货丨HyperMesh 新界面功能与技术升级解析

全文内容选自 Altair 区域技术交流会华东站Altair 高级技术经理 张晨《HyperWorks 2025:下一代建模可视化和二次开发平台》演讲1、引言今天我为大家介绍 HyperMesh——这个大家既熟悉又陌生的工具。说熟悉,是因为它一直是工程仿真领域的主流建模软件&…

《IC验证必看|随机稳定性 / 再现性》

同一用例 A 机 pass、B 机 fail?——SystemVerilog 随机稳定性 / 可复现性全攻略(含代码与排查清单)你该到什么水平?(对标 20k / 25k / 30k) 20k(入门会用) 会 randomize()、$urando…

字符编码的本质

目的 最近做一个加密方面的研究,加密之后的二进制,通过转码之后,再也找不回之前的二进制了。 怎么试都不行,真是非常得奇怪!!!!先说说字符编码基础知识 在信息技术的海洋中&#xff…

网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量

网格图–Day03–网格图DFS–2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量 今天要训练的题目类型是:【网格图DFS】,题单来自灵艾山茶府。 适用于需要计算连通块个数、大小的题目。 部分题目做法不止一种&#xff0…

新能源车焊接中发那科机器人保护气省气方法

在新能源汽车制造领域,焊接工艺是保障车身结构强度与安全性的关键环节,发那科焊接机器人凭借高精度与稳定性成为产线主力设备。保护气体消耗在焊接成本中占比显著,寻找高效省气方法成为行业降本增效的核心需求。WGFACS节气装置以智能化控制技…

CornerNet2025再研究---将目标检测问题视作关键点检测与配对

CornerNet于2019年3月份提出,CW近期回顾了下这个在当时引起不少关注的目标检测模型,它的亮点在于提出了一套新的方法论——将目标检测转化为对物体成对关键点(角点)的检测。通过将目标物体视作成对的关键点,其不需要在图像上铺设先验锚框(anc…

【C++】vector(2)

目录 1. insert的实现 2. 迭代器失效 2.1 迭代器失效的两种情况 指向已释放的内存(物理失效) 元素移动导致迭代器指向错误(逻辑失效) 2.2 修改代码 3. erase的实现 ​编辑修改代码 4. resize的实现 5. 构造函数 5.1 默认…

机器翻译:python库translatepy的详细使用(集成了多种翻译服务)

更多内容请见: 机器翻译修炼-专栏介绍和目录 文章目录 一、translatepy概述 1.1 translatepy介绍 1.1 安装 二、基本使用 2.1 初始化 `Translator` 2.2 文本翻译 2.3 语言检测 2.4 获取翻译备选方案 2.5 单词音标获取 2.6 语音合成 2.7 例句查询 2.8 拼写检查 三、高级功能 3.…

Spring Bean生命周期的完全指南

简介:超越Bean——揭开Spring Bean的隐秘生活 想象一场复杂宏大的舞台剧。作为观众,我们看到的是最终的演出——一个流畅运行的应用程序。但在这光鲜的幕后,隐藏着一套严谨细致的流程:选角(实例化Bean)、试…