百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Pandas第2课:吃透DataFrame!你就可以拿Pandas耍帅了!

ztj100 2025-02-18 14:23 7 浏览 0 评论

终于开始Pandas的第2课了,本期内容中我将完全围绕着Pandas的核心DataFrame展开,我要做到即使是从来没有使用过Pandas的朋友,也能通过对此文章的阅读理解什么是DataFrame,它有什么作用,我们可以拿着它来做什么,我有这个信心!Let's Go!

形象的比喻

想象一下你在一家大型图书馆里,这里有成千上万的书籍排列在不同的书架上。这个图书馆就像是一个巨大的 Pandas DataFrame。每本书代表 DataFrame 中的一行数据,而书的不同属性(如标题、作者、出版年份、类型等)就像是 DataFrame 中的列。

在这个图书馆(DataFrame)中,每本书(每行数据)都有一个特定的位置,你可以通过它的索引(行号)找到它。同时,每本书都有详细的分类信息,就像每行数据可以有它的列名称(比如“标题”、“作者”等)。

现在,假设你是一位研究者,需要找到所有关于“历史”的书籍,并查看它们的出版年份和作者。在图书馆中,你可能需要走过每个书架,查看每本书的分类,然后记录下符合条件的书籍的信息。在 Pandas DataFrame 中,这个过程就像使用几行代码来筛选“历史”类的书籍,并提取它们的“出版年份”和“作者”列。

而且,如果你想要对找到的历史书籍按出版年份进行排序,或者查找出版年份在特定时间段内的书籍,在图书馆里这可能是一项费时费力的工作。但在 Pandas DataFrame 中,这只需要几个简单的命令。

最后,想象你想要展示你的研究成果,比如统计每个世纪出版的历史书籍数量,或者找出最多产的历史书作者。在图书馆,这可能意味着你需要做大量的手工整理和计数。但在Pandas DataFrame中,你可以快速地进行这些统计和分析,然后以图表的形式展示出来。

总之,Pandas的DataFrame就像是一个信息丰富、功能强大的图书馆,让你能够快速有效地存储、访问和分析大量的数据,无论是进行简单的数据查找、复杂的数据处理,还是数据可视化,都可以轻松应对。

概念及结构:

支持概念:

DataFrame 是 Pandas 库中最核心的数据结构,广泛用于数据科学和数据分析领域,它是一个二维标签化数据结构,你可以将其想象成一个 Excel 电子表格或 SQL 表格,但在 Python 中具有更大的灵活性和功能。它是由多个 Series 组成的,每个 Series 可以被视为 DataFrame 的一列。因此,DataFrame 可以容纳不同类型的数据,每列数据类型可以不同。

逻辑结构:

  • 索引(Index):DataFrame 的行标签。默认情况下,Pandas 会为每行分配一个从 0 开始的索引,但也可以设置为其他值或者数据列。
  • 列(Columns):DataFrame 的列标签。在 DataFrame 中,每列都有一个名称,用于访问该列的数据。
  • 值(Values):DataFrame 中的数据部分,可以是不同类型的数据(整数、浮点数、字符串等)。

内部存储结构:

在内部,Pandas 通常使用 NumPy 数组来存储数据。每一列数据作为一个 NumPy 数组存储,允许进行高效的数值计算。由于这种存储方式,DataFrame 支持向量化操作,这意味着在一个操作中可以同时对多个数据点进行计算,大大提高了数据处理的效率。

特性及操作:

特性:

  1. 异质性:DataFrame 的列可以是不同的数据类型(整型、浮点型、字符串等)。
  2. 可变性:DataFrame 的大小可变,可以插入或删除列。
  3. 标签化轴:行和列都可以有标签。
  4. 自动和显式数据对齐:在计算中,对象之间的数据会自动对齐,也可以显式地重新索引和调整。
  5. 功能丰富的索引:可以通过标签索引和位置索引,支持复杂的切片操作。
  6. 分组功能:支持对数据集进行分组并对每组应用函数(类似于 SQL 的 GROUP BY)。
  7. 缺失数据处理:Pandas 设有专门的功能来处理缺失数据。
  8. 时间序列功能:支持日期范围生成、频率转换、移动窗口统计等时间序列功能。
  9. 合并和连接:支持多种方式合并和连接数据集。

操作:

  1. 数据清洗:如填充缺失值、删除重复行。
  2. 文件操作:支持从 CSV、Excel及数据库等读取数据,也支持将数据写入这些格式。
  3. 数据筛选和选择:支持基于条件的数据筛选,以及通过标签或位置的数据选择。
  4. 数据转换:如列和行的增加、删除、排序。
  5. 统计分析:提供描述性统计、相关性分析等统计功能。
  6. 数据合并:如数据库风格的连接(join)和拼接(concatenate)。
  7. 可视化:可以直接通过 DataFrame 和 Series 绘制图表。

信息获取函数

我们先声明一个DataFrame,以便后序在此基础之上进行相关的操作:

1. head() 和 tail()

快速查看 DataFrame 中的前几行或后几行数据,有助于初步了解数据集的结构和内容。

2. describe()

提供数据集的统计摘要,包括均值、标准差、最小值、最大值等。对于数值型数据特别有用。

count: 
显示每列(非空)值的数量。这可以帮助识别缺失值的情况。
mean: 
计算每列的平均值。这反映了数值数据的中心趋势。
std (Standard Deviation): 
每列值的标准差。这表示数据的分散程度,即数据与其平均值的偏差大小。
min: 
每列的最小值。这显示了数据范围的下限。
25% (25th percentile): 
每列的第一四分位数,即在排序后位于25%标记处的值。这意味着数据中有25%的值是小于或等于这个值。
50% (50th percentile, also known as the median): 
每列的中位数。这是将数据集分成两等分的值,其中一半的数据项低于中位数,另一半高于中位数。与平均值相比,中位数对极端值的影响较小。
75% (75th percentile): 
每列的第三四分位数,即在排序后位于75%标记处的值。这表示数据中有75%的值是小于或等于这个值。
max: 
每列的最大值。这显示了数据范围的上限。

3. info()

获取 DataFrame 的基本信息,如每列的数据类型、非空值数量等,有助于数据清洗和预处理。

数据追加函数

直接赋值追加列

assign() 方法可以在不改变原始 DataFrame 的情况下添加新列。

insert() 方法可以在 DataFrame 中的指定位置插入一列。

如果你有多行数据(例如另一个 DataFrame),你可以使用 concat() 方法将它们合并到原始 DataFrame。

也可以直接在指定索引处增加新行。如果使用的索引不存在,则会添加新行。

填充缺失值,可以用特定值、前一个值、后一个值等填充。

数据删除函数

drop() 方法可以用来删除指定的行或列。

指定轴向,按列删除。

也可以原地删除。

删除包含缺失值的行或列,用于数据清洗。

pop() 方法用于删除 DataFrame 的一列,并返回被删除的列。

使用布尔索引进行行删除

数据修改函数

修改特定的单元格:

通过标签直接修改整个列:

使用replace替换 DataFrame 中的某些值:

apply() 方法可以对 DataFrame 的行或列应用一个函数:

map() 用于修改 Series,applymap() 用于修改整个 DataFrame:

使用 astype()更改列的数据类型:

使用 rename()重命名列标签或行标签:

使用 set_index()更改 DataFrame 的索引:

数据定位查询函数

loc[] 用于基于标签的索引,可以用来选择特定的行和列。

iloc[] 用于基于整数位置的索引,可以用来选择特定的行和列。

at[] 和 iat[] 分别用于基于标签和整数位置的快速访问单个元素,比 loc[] 和 iloc[] 更快。

query() 方法允许使用表达式字符串来查询数据。

通过布尔条件进行索引,可以用来选择满足特定条件的行。

filter() 方法可以用来按列名选择特定的列。

isin() 方法用于筛选数据框中的值是否包含在给定的集合中。

where() 方法用于替换不满足条件的行。

其它常用函数

groupby()对数据进行分组,并对每组应用聚合函数,如求和、平均、最大、最小等。

merge()将两个 DataFrame 根据某些键合并,类似于 SQL 中的 JOIN 操作。

sort_values()按照一列或多列的值对数据进行排序。

to_csv()将 DataFrame 导出为 CSV 文件、Excel 文件或写入 SQL 数据库。

通过标签(loc[])或整数位置(iloc[])来访问 DataFrame 的行或列,适用于数据选择和子集切片。

duplicated() 和 drop_duplicates()检测和删除重复的行,用于数据清洗。

isnull() 和 notnull()检测 DataFrame 中的缺失值,用于数据清洗和预处理。

在 Pandas 中,isnull() 和 isna() 函数是等价的,同样 notnull() 和 notna() 也是等价的。这些函数用于检测缺失值,其中:

  • isnull() 和 isna() 用于检测缺失值,它们会返回与原始数据结构相同的布尔值结构,其中缺失值位置为 True,非缺失值位置为 False。
  • notnull() 和 notna() 用于检测非缺失值,同样返回一个布尔值结构,其中非缺失值位置为 True,缺失值位置为 False。

在 Pandas 中,"NA" 代表 "Not Available",用于标识缺失或不存在的数据。"Null" 通常用作 "NA" 的同义词,在数据分析的上下文中,两者都指的是缺失值或空值。Pandas 引入了 isna() 和 notna() 函数作为 isnull() 和 notnull() 的别名,以使语义更清晰,因为 "NA" 在统计和数据分析中是一个更常见的术语。然而,这两组函数的功能完全相同,没有任何差别,你可以根据个人偏好选择使用哪一组。

场景实战

关于DataFrame上面提及了一堆方法,但即使是这么多,也只是DataFrame方法集中的一部分而已,由此可见DataFrame的强大与便捷性,光说不练假把式,下面我们列举一个经典的DataFrame操作案例。

上面的示例场景中涉及到了DataFrame的增删改查以及排序、过滤、去重、清洗等相关操作,是一个经典的结构化数据处理场景!

小结

好啦,本期内容着实有点多,但有时候,对待特别重要的东西,就要本着一次性搞定它的心态,免得夜长梦多!而要掌握DataFrame,我建议第一步先将上面的方法与案例自己亲自敲一遍代码,并对照输出的结果进行理解,然后自己再构思一个二维数据的处理与加工场景,全部让DataFrame来搞定,如此搞一遍之后,你基本上可以自信地宣称你已上手了DataFrame!

相关推荐

告别手动操作:一键多工作表合并的实用方法

通常情况下,我们需要将同一工作簿内不同工作表中的数据进行合并处理。如何快速有效地完成这些数据的整合呢?这主要取决于需要合并的源数据的结构。...

【MySQL技术专题】「优化技术系列」常用SQL的优化方案和技术思路

概述前面我们介绍了MySQL中怎么样通过索引来优化查询。日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如INSERT、GROUPBY等。对于这些SQL语句,我们该怎么样进行优化呢...

9.7寸视网膜屏原道M9i双系统安装教程

泡泡网平板电脑频道4月17日原道M9i采用Win8安卓双系统,对于喜欢折腾的朋友来说,刷机成了一件难事,那么原道M9i如何刷机呢?下面通过详细地图文,介绍原道M9i的刷机操作过程,在刷机的过程中,要...

如何做好分布式任务调度——Scheduler 的一些探索

作者:张宇轩,章逸,曾丹初识Scheduler找准定位:分布式任务调度平台...

mysqldump备份操作大全及相关参数详解

mysqldump简介mysqldump是用于转储MySQL数据库的实用程序,通常我们用来迁移和备份数据库;它自带的功能参数非常多,文中列举出几乎所有常用的导出操作方法,在文章末尾将所有的参数详细说明...

大厂面试冲刺,Java“实战”问题三连,你碰到了哪个?

推荐学习...

亿级分库分表,如何丝滑扩容、如何双写灰度

以下是基于亿级分库分表丝滑扩容与双写灰度设计方案,结合架构图与核心流程说明:一、总体设计目标...

MYSQL表设计规范(mysql表设计原则)

日常工作总结,不是通用规范一、表设计库名、表名、字段名必须使用小写字母,“_”分割。...

怎么解决MySQL中的Duplicate entry错误?

在使用MySQL数据库时,我们经常会遇到Duplicateentry错误,这是由于插入或更新数据时出现了重复的唯一键值。这种错误可能会导致数据的不一致性和完整性问题。为了解决这个问题,我们可以采取以...

高并发下如何防重?(高并发如何防止重复)

前言最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。...

性能压测数据告诉你MySQL和MariaDB该怎么选

1.压测环境为了尽可能的客观公正,本次选择同一物理机上的两台虚拟机,一台用作数据库服务器,一台用作运行压测工具mysqlslap,操作系统均为UbuntuServer22.04LTS。...

屠龙之技 --sql注入 不值得浪费超过十天 实战中sqlmap--lv 3通杀全国

MySQL小结发表于2020-09-21分类于知识整理阅读次数:本文字数:67k阅读时长≈1:01...

破防了,谁懂啊家人们:记一次 mysql 问题排查

作者:温粥一、前言谁懂啊家人们,作为一名java开发,原来以为mysql这东西,写写CRUD,不是有手就行吗;你说DDL啊,不就是设计个表结构,搞几个索引吗。...

SpringBoot系列Mybatis之批量插入的几种姿势

...

MySQL 之 Performance Schema(mysql安装及配置超详细教程)

MySQL之PerformanceSchema介绍PerformanceSchema提供了在数据库运行时实时检查MySQL服务器的内部执行情况的方法,通过监视MySQL服务器的事件来实现监视内...

取消回复欢迎 发表评论: