利用python进行数据分析之Pandas库 2021-11-17 10:02 303阅读 0赞 (一)**概述**:Pandas是Python的第三方库,提供高性能易用数据类型和分析工具。引用该库的方法与numpy库类似,`import pandas as pd`作为一种约定,我们将pandas命名为pd。Pandas是基于numpy实现的,常与numpy和matplotlib一起使用。提供的数据类型:**Series、DataFrame**。前者是一维的数据类型而后者是二维的。围绕着这两个数据类型,Pandas提供了针对数据分析的许多操作;pandas更注重数据的应用表达。pandas支持大部分numpy语言风格的数组计算,尤其是数组函数以及没有for循环的各种数据处理(**向量化:利用数组表达式来代替显示循环的方法**)。两者最大的不同在于:**pandas是用来处理表格型或异质型数据。而numpy则更适合处理同质型的数值类数组数据**。pandas提供两个常用的工具数据结构:Series和DataFrame,下面我们就来介绍这两种数据结构的基本操作。 (二)**Series类型**:由一个值序列(与numpy中的类型相似)及与之相关的数据标签(索引)所组成。 1.基本创建 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70] 我们输出的数据被放置在了第二列,左侧的 0 1 2 3 就是pandas为我们自动增加的索引,也称之为**自动索引**。下边的**dtype类型**,由于pandas是根据numpy编写的,因此他沿用了numpy中的数据类型。我们这里的数据类型是64位整数类型。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 1] 对于这里的自动索引,我们可以通过在生成数组的时候进行修改,将其改为我们的**自定义索引**。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 2] 通过上面的代码,我们可以发现索引已经由原来的 0 1 2 3变成了现在的 a b c d,其中的第二个参数中的 index = 我们可以去掉。 2.创建方法: 我们可以通过一下几种方式进行 Series类型的创建:python列表、标量值、python字典、ndarray、其他函数。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 3] 上图中,我们传入了一个字典来进行数组的创建。我们可以发现,字典中的键被用作为了输出的索引,而字典中的值被用作了输出的值。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 4] 上图中,我们使用了np.array中的函数进行数组的生成,我们生成的是0-5的数组。当然,我们也可以在其后加上 index = 来修改索引列的内容。 3.基本操作: **index获得我们数组的索引;values获得我们的所有数值** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 5] 我们可以看到,我们得到的值与数组中的值相同,索引的起始点、终止点、步长。注意:**尽管我们自定义了索引,但是我们仍然可以使用自动索引来访问该位置上的值**。也就是说,自动索引是一直存在的,如果我们自定义了索引,那么自动索引则不会显示出来。如果我们**将两者同时使用,则会出错**。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 6] 通过上图我们可以发现:当我i们想看具体的数组中值的时候,我们可以直接**输入其下标来进行访问,返回值就是这个数字本身的类型**,如果我们**通过切片的方式进行访问的话,他返回的值会是一个Series类型**。 我们也可以 in 来判断字典中的键是否存在于该字典当中(类似于字典的操作) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 7] 我们可以查看 ‘a’ 是否存在于自定义索引中。但是这个方法**不适用于判断自动索引**。 (三)**DataFrame类型**:他表示的是矩阵的数据表,包含以排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)。他既有行索引也有列索引,可以被视为一个共享相同索引的Series的字典。在DataFrame中,数据被存储为一个以上的二维块,而不是列表、字典或者其他的一维数组集合。但是,尽管他是二维的,但我们仍然可以利用分层索引在DataFrame中展现更高维度的数据。DataFrame是由索引加多列数据组成。纵向的表明不同行之间的索引叫index,轴叫0轴(axis = 0),横向的表明不同列之间的索引叫column, 轴叫 1 轴(axis = 1)。行索引叫index,列索引叫column。 1.基本创建:DataFrame类型可以由以下类型创建:二维的ndarray对象、一维ndarray、列表、字典、元组或者Series构成的字典、Series类型、其他的DataFrame类型。假设我们从二维的ndarray对象创建。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 8] 上图中,我们采用arange()函数创建了一个从 0 到 9 的 5 行 2 列的数组。我们可以看到在我们创建的列表的左侧是默认的行索引, 从 0 开始。上方时默认的列索引,同样是默认从 0 开始。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 9] 上图中,对于第一个数组的创建,我们使用了列表类型的字典进行创建,可以看出我们字典的键被用作了列索引,值被用作了数组的值,数组的行索引由系统自动生成;对于第二个数组的创建,我们采用了字典的方式进行DataFrame类型变量的创建,并引用了Series来进行index的修改。不难发现,第二个创建好的数组的左下角没有数字(他显示的时NaN),这是因为我在创建数组的时候,第一个字典的值有 3 个,而第二个字典的值有 4 个。所以就会缺失一个数据,对于缺失的数据,系统就会给出一个NaN来进行填充。综上,我们说。用户可以自己给出想要的行列索引,也可以由系统来自动生成行列索引,数据如果不全的话,系统会自行进行补全。 为了方便讲述后续的处理操作,我们创建一个成绩单表格如下: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 10] 我们可以查看表格的行、列索引,某一行、列的数据。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 11] 我们使用index()方法查看数组的索引,使用columns查看第一行的索引。注意:因为我们采用字典进行数组生成,由于**字典当中的每一个键值对之间是无序的,因此生成的数组当中列的顺序也可能和你输入的顺序不同**。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 12] 如上图所示,我们可以采用a\[ \](方括号中填想要查看的内容)的方式来查看我们想要看的数据,当我想用.ix()查询某一行的数的时候,我尝试了视频中介绍的这个方法,然后,神奇的事情出现了,请看下图: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 13] 他没有像视频里那样直接显示出该行的数据,而是给我了一些提示,起初小编并不在意(看不到英语)后来定睛一看,我居然看懂了,然后就将代码换成了如下图中代码: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 14] 其实这个算是提示(并没有报错,因为正确的结果已经显示了出来)吧:大致意思就是你要用.loc去替换.ix方法。然后结果就和视频的一样了。 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70]: /images/20211116/a56adf3de83f4326a973d5432b7987c3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 1]: /images/20211116/1f7d9df086b84129abfb85ab14e8b1a0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 2]: /images/20211116/d61fa3459cc14f359c5b6447a909f7d3.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 3]: /images/20211116/d6d09462ed3e46a69011594ad7dd8535.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 4]: /images/20211116/b654df13584c45fd898e48bc549e3cdc.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 5]: /images/20211116/ae695b4f6bfb4f50b1de10d50964c24e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 6]: /images/20211116/a654e2398ca9445f8bf5da8ba0881833.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 7]: /images/20211116/567de8f3fb8c4f5b9bdd205f028bb781.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 8]: /images/20211116/7d48f8058c0f424fb7b7349165a7c1d0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 9]: /images/20211116/59c7dd7c00ad42c99c3808469e128071.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 10]: /images/20211116/0deeae2d252a4b3e80be9e8cf608f2ab.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 11]: /images/20211116/9cac83195e7c4bfba26f4247b2a1df2a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 12]: /images/20211116/abf634576cef4f768790dd09516b3841.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 13]: /images/20211116/76920200b4874060ae2d8c563d2a3074.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjE0NTI0_size_16_color_FFFFFF_t_70 14]: /images/20211116/080ac98df2014e1a8cf2dfb3ec99ee47.png 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 数据分析之Pandas > Pandas的名称来自于面板数据(panel data)和Python数据分析(data analysis)。 > > Pandas是一个强大的分析结构化数据的工具集,基 港控/mmm°/ 2021年09月03日 13:53/ 0 赞/ 261 阅读
相关 《利用python进行数据分析》之文本数据的基本操作 本文参考《利用python进行数据分析》(原书第二版)第六章部分内容 为了方便我们完成本文数据的操作,我们首先需要进行CSV文件的建立,具体方法可以参考本链接: htt 妖狐艹你老母/ 2021年10月29日 19:26/ 0 赞/ 170 阅读
相关 《利用python进行数据分析》之数据清洗 (一)、处理缺失值: 在进行数据分析和建模的过程中,大量的时间会花在数据准备上:加载、清理、转换以及重塑。因此,掌握了正确、高效的完成数据准备的方式会使得我们的工作效率更高 清疚/ 2021年10月30日 08:22/ 0 赞/ 233 阅读
相关 利用python进行数据分析之Pandas库 (一)概述:Pandas是Python的第三方库,提供高性能易用数据类型和分析工具。引用该库的方法与numpy库类似,`import pandas as pd`作为一种约定,我 梦里梦外;/ 2021年11月17日 10:02/ 0 赞/ 304 阅读
相关 利用 Python 进行数据分析(十二)pandas:数据合并 [原文地址][Link 1] pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并; pandas.conc 怼烎@/ 2022年06月15日 17:28/ 0 赞/ 116 阅读
相关 利用python进行数据分析笔记 pandas基础 流处理 流处理,听起来很高大上啊,其实就是分块读取。有这么一些情况,有一个很大的几个G的文件,没办法一次处理,那么就分批次处理,一次处理1百万行, 我不是女神ヾ/ 2022年08月20日 19:17/ 0 赞/ 218 阅读
相关 Python数据分析实战(2)使用Pandas进行数据分析 文章目录 一、Pandas的使用 1.Pandas介绍 2.Pandas基本操作 Series的操作 落日映苍穹つ/ 2022年12月01日 11:57/ 0 赞/ 184 阅读
相关 利用 Python 进行数据分析(Python 数据分析)· 第 2 版 ![format_png][] > 译者:[SeanCheney][] > > 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 [Apache 一时失言乱红尘/ 2022年12月02日 09:19/ 0 赞/ 129 阅读
相关 《利用Python 进行数据分析》第五章:Pandas入门 对《利用Python 进行数据分析》(Wes Mckinney著)一书中的第五章中pandas 入门进行代码实验。原书中采用的是Python2.7,而我采用的Py 逃离我推掉我的手/ 2022年12月07日 20:29/ 0 赞/ 65 阅读
相关 【Python】Python库之数据分析 ![format_png][] ![format_png 1][] ![format_png 2][] ![format_png 3][] ![format_png 4 朱雀/ 2023年03月14日 16:25/ 0 赞/ 74 阅读
还没有评论,来说两句吧...