大家好,今天我用图解的方式讲解pandas的用法,内容较长建议收藏,梳理不易,点赞支持。
学习 Python 编程,给我的经验就是:技术要学会分享、交流,不建议闭门造车。一个人可能走的很快、但一堆人可以走的更远。如果你希望技术交流,可以关注我
关注公众号:Python技术训练营
解锁 《python百万字教程,手把手助你从零进阶拿高薪》,让学习更贴近未来实战。
内容包含:
python百万字教程,手把手助你从零进阶拿高薪(十一模块)
1.hello,初识python
2.python大数据技术体系
3.AI研发,快人一步
4.全栈开发体系,你不能错过的内容
5.掌握核心,python核心编程
6.python并发编程
7.python数据库编程
8.爬虫入门必学
9.python框架源码分析
10.爬虫必备JS逆向
11.多学一点,加薪更稳定Android逆向
整理不易,关注一下吧ღ( ´・ᴗ・` )比心🤔
第一部分:数据分析核⼼–pandas
前⾔Python作为⼀门数据可视化很好的语⾔,可以使⽤像matplotlib等库画出图形,处理数据主要使⽤pandas这⾥主要讨论Pandas
1.初识pandas
⼤多数⼈只要提及pandas,基本都知道,只要是学习python的⼈Pandas 是 Python 语⾔的⼀个扩展程序库,⽤于数据分析。Pandas 是⼀个开放源码、BSD 许可的库,提供⾼性能、易于使⽤的数据结构和数据分析⼯具。Pandas 名字衍⽣⾃术语 “panel data”(⾯板数据)和 “Python data analysis”(Python 数据分析)。Pandas ⼀个强⼤的分析结构化数据的⼯具集,基础是 Numpy(提供⾼性能的矩阵运算),其次数series,还有⼀个DataFrame,这三个⽐较常⽤。Pandas 可以从各种⽂件格式⽐如 CSV、JSON、SQL、Microsoft Excel 导⼊数据。Pandas 可以对各种数据进⾏运算操作,⽐如归并、再成形、选择,还有数据清洗和数据加⼯特征。Pandas ⼴泛应⽤在学术、⾦融、统计学等各个数据分析领域。
2.Pandas的主体
Pandas 的主要数据结构是 Series (⼀维数据)与 DataFrame(⼆维数据),这两种数据结构⾜以处理⾦融、统计、社会科学、⼯程等领域⾥的⼤多数典型⽤例。Series:带标签的⼀维同构数组,⼀种类似于⼀维数组的对象,它由⼀组数据(各种Numpy数据类型)以及⼀组与之相关的数据标签(即索引)组成。DataFrame:带标签,⼤⼩可变,⼆维异构表格。⼀个表格型的数据结构,它含有⼀组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有⾏索引也有列索引,它可以被看做由 Series 组成的字典(共同⽤⼀个索引)。
3.Pandas的安装
⼀般情况下只要电脑上安装Python后,并将python环境布置⼊path之中,pandas安装可以在CMD中或者在Anaconda终端进⾏安装安装命令
pip install pandas
4.Pandas的应⽤
1. 导⼊pandas库
# 导⼊pandas库
import pandas as pd
2. pandas之seriesPandas Series类似表格中的⼀个列(column),类似于⼀堆数组,可以保存为任何数据类型Series由索引(index)和列组成,函数如下
pandas.Series(data, index, dtype, name, copy)
参数说明:
data:⼀组数据(ndarray 类型)。
index:数据索引标签,如果不指定,默认从 0 开始。
dtype:数据类型,默认会⾃⼰判断。
name:设置名称
第二部分:Pandas 展示
如图:
它描述了一个在线商店的不同产品线,共有四种不同的产品。与前面的例子不同,它可以用NumPy数组或Pandas DataFrame表示。但让我们看一下它的一些常见操作。
1.排序
使用Pandas按列排序更具可读性,如下所示:
这里argsort(a:,1)计算使a的第二列按升序排序的排列,然后a相应地对a的行重新排序。Pandas可以一步完成。
2.按多列排序
如果我们需要使用weight列来对价格列进行排序,情况会变得更糟。这里有几个例子来说明我们的观点:
在NumPy中,我们先按重量排序,然后再按价格排序。稳定排序算法保证第一次排序的结果不会在第二次排序期间丢失。NumPy还有其他实现方法,但没有一种方法像Pandas那样简单优雅。
3. 添加一列
使用Pandas添加列在语法和架构上要好得多。下面的例子展示了如何操作:
Pandas不需要像NumPy那样为整个数组重新分配内存;它只是添加了对新列的引用,并更新了列名的registry
。
4. 快速元素搜索
在NumPy数组中,即使你查找的是第一个元素,你仍然需要与数组大小成正比的时间来查找它。使用Pandas,你可以索引你期望被查询最多的列,并将搜索时间减少到一个常量
index列有以下限制。
- 它需要内存和时间来构建。
- 它是只读的(需要在每次追加或删除操作后重新构建)。
- 这些值不需要是唯一的,但是只有当元素是唯一的时候加速才会发生。
- 它需要预热:第一次查询比NumPy稍慢,但后续查询明显快得多
5. 按列连接(join)
如果你想从另一张表中获取基于同一列的信息,NumPy几乎没有任何帮助。Pandas更好,特别是对于1:n的关系。
Pandas join具有所有熟悉的“内”、“左”、“右”和“全外部”连接模式。
6.按列分组
数据分析中的另一个常见操作是按列分组。例如,要获得每种产品的总销量,你可以这样做:
除了sum之外,Pandas还支持各种聚合函数:mean、max、min、count等。
7. 数据透视表
Pandas最强大的功能之一是“枢轴”表。这有点像将多维空间投影到二维平面上。
虽然用NumPy当然可以实现它,但这个功能没有开箱即用,尽管它存在于所有主要的关系数据库和电子表格应用程序(Excel,WPS)中。
Pandas用df.pivot_table将分组和旋转结合在一个工具中。
简而言之,NumPy和Pandas的两个主要区别如下:
现在,让我们看看这些功能是否以性能损失为代价
8、Pandas速度
我在Pandas的典型工作负载上对NumPy和Pandas进行了基准测试:5-100列,10³- 10⁸行,整数和浮点数。下面是1行和1亿行的结果:
看起来在每一次操作中,Pandas都比NumPy慢!
当列数增加时,情况不会改变(可以预见)。至于行数,依赖关系(在对数尺度下)如下所示:
对于小数组(少于100行),Pandas似乎比NumPy慢30倍,对于大数组(超过100万行)则慢3倍。
怎么可能呢?也许是时候提交一个功能请求,建议Pandas通过df.column.values.sum()重新实现df.column.sum()了?这里的values属性提供了访问底层NumPy数组的方法,性能提升了3 ~ 30倍。
答案是否定的。Pandas在这些基本操作方面非常缓慢,因为它正确地处理了缺失值。Pandas需要NaNs (not-a-number)来实现所有这些类似数据库的