0

0

使用pandas进行数据处理之 Series篇

coldplay.xixi

coldplay.xixi

发布时间:2020-09-15 16:10:37

|

2583人浏览过

|

来源于juejin

转载

使用pandas进行数据处理之 Series篇

相关学习推荐:python教程

在python中,今天我们开始介绍一个新的常用的计算工具库,它就是大名鼎鼎的Pandas

Pandas的全称是Python Data Analysis Library,是一种基于Numpy的科学计算工具。它最大的特点就是可以像是操作数据库当中的表一样操作结构化的数据,所以它支持许多复杂和高级的操作,可以认为是Numpy的加强版。它可以很方便地从一个csv或者是excel表格当中构建出完整的数据,并支持许多表级别的批量数据计算接口。

安装使用

和几乎所有的Python包一样,pandas也可以通过pip进行安装。如果你装过Anaconda套件的话,那么像是numpy、pandas等库已经自动安装好了,如果没有安装过也没有关系,我们使用一行命令即可完成安装。

pip install pandas复制代码

和Numpy一样,我们在使用pandas的时候通常也会给它起一个别名,pandas的别名是pd。所以使用pandas的惯例都是:

import pandas as pd复制代码

如果你运行这一行没有报错的话,那么说明你的pandas已经安装好了。一般和pandas经常一起使用的还有另外两个包,其中一个也是科学计算包叫做Scipy,另外一个是对数据进行可视化作图的工具包,叫做Matplotlib。我们也可以使用pip将这两个包一起安装了,在之后的文章当中,用到这两个包的时候,也会简单介绍一下它们的用法。

pip install scipy matplotlib复制代码

Series 索引

在pandas当中我们最常用的数据结构有两个,一个是Series另外一个是DataFrame。其中series是一维数据结构,可以简单理解成一维数组或者是一维向量。而DataFrame自然就是二维数据结构了,可以理解成表或者是二维数组。

我们先来看看Series,Series当中存储的数据主要有两个,一个是一组数据构成的数组,另外一个是这组数据的索引或者是标签。我们简单创建一个Series打印出来看一下就明白了。

这里我们随意创建了一个包含四个元素的Series,然后将它打印了出来。可以看到打印的数据一共有两列,第二列是我们刚才创建的时候输入的数据,第一列就是它的索引。由于我们创建的时候没有特意指定索引,所以pandas会自动为我们创建行号索引,我们可以通过Series类型当中的values和index属性查看到Series当中存储的数据和索引:

这里输出的values是一个Numpy的数组,这并不奇怪,因为我们前面说了,pandas是一个基于Numpy开发的科学计算库,Numpy是它的底层。从打印出来的index的信息当中,我们可以看到这是一个Range类型的索引,它的范围以及步长。

索引是Series构建函数当中的一个默认参数,如果我们不填,它默认会为我们生成一个Range索引,其实也就是数据的行号。我们也可以自己指定数据的索引,比如我们在刚才的代码当中加入index这个参数,我们就可以自己指定索引了。

当我们指定了字符类型的索引之后,index返回的结果就不再是RangeIndex而是Index了。说明pandas内部对数值型索引和字符型索引是做了区分的。

有了索引,自然是用来查找元素用的。我们可以直接将索引当做是数组的下标使用,两者的效果是一样的。不仅如此,索引数组也是可以接受的,我们可以直接查询若干个索引的值。

另外在创建Series的时候,重复的索引也是允许的。同样当我们使用索引查询的时候也会得到多个结果。

不仅如此,像是Numpy那样的bool型索引也依然是支持的:

Series计算


Series支持许多类型的计算,我们可以直接使用加减乘除操作对整个Series进行运算

也可以使用Numpy当中的运算函数来进行一些复杂的数学运算,但是这样计算得到的结果会是一个Numpy的array。

因为Series当中有索引,所以我们也可以使用dict的方式判断索引是否在Series当中

Series有索引也有值,其实和dict的存储结构是一样的,所以Seires也支持通过一个dict来初始化:

通过这种方式创建出来的顺序就是dict当中key存储的顺序,我们可以在创建的时候指定index,这样就可以控制它的顺序了。

我们在指定index的时候额外传入了一个没有在dict当中出现过的key,由于在dict当中找不到对应的值,Series会将它记成NAN(Not a number)。可以理解成是非法值或者是空值,在我们处理特征或者是训练数据的时候,经常会遇到存在一些条目的数据的某个特征空缺的情况,我们可以通过pandas当中isnull和notnull函数检查空缺的情况。

当然Series当中也有isnull的函数,我们也可以调用。

最后,Series当中的index也是可以修改的, 我们可以直接给它赋上新值:

总结

从核心本质上来说,pandas当中的Series就是在Numpy一维数组上做的一层封装,加上了索引等一些相关的功能。所以我们可以想见DataFrame其实就是一个Series的数组的封装,加上了更多数据处理相关的功能。我们把核心结构把握住了,再来理解整个pandas的功能要比我们一个一个死记这些api有用得多。

pandas是Python数据处理的一大利器,作为一个合格的算法工程师几乎是必会的内容,也是我们使用Python进行机器学习以及深度学习的基础。根据调查资料显示,算法工程师日常的工作有70%的份额投入在了数据处理当中,真正用来实现模型、训练模型的只有30%不到。因此可见数据处理的重要性,想要在行业当中有所发展,绝不仅仅是学会模型就足够的。

本文使用 mdnice 排版

想了解更多编程学习,敬请关注php培训栏目!

PaperFake
PaperFake

AI写论文

下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 教程
Pandas 教程

共15课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号