Pandas中ix和iloc有什么区别

Pandas中ix和iloc有什么区别,第1张

“loc”在index的标签上进行索引,范围包括start和end

“ix”先在index的标签上索引,索引不到就在index的位置上索引(如果index非全整数),不包括end

ix / loc 可以通过行号和行标签进行索引,比如 dfloc['a'] , dfloc[1], dfix['a'] , dfix[1]。

而iloc只能通过行号索引 , dfiloc[0] 是对的,  而dfiloc['a'] 是错误的。

loc 和 ix  大部分时候行为都差不多, 但是当假如某个行的索引标签就是一个 INT。

参考资料

知乎:>

出现打不开了,如下出现两个报错:

csv文件默认的是以逗号为分隔符,但是中文中逗号的使用率很高,爬取中文数据时就容易造成混淆,所以使用pandas写入csv时可以设置参数 sep=’\t’ ,即以tab为分隔符写入。毕竟tab在中文习惯里用的很少嘛。

那这样在后面读取csv进行数据处理时,一定记得加上一个参数delimiter:

不然你把dataframe打印出来看看就是挤在一团,没有分列的,后面对csv进行处理的时候还可能会出现标题那样的错误

此时报错2解决

参考: >

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包,可以快速地处理大规模数据。pandas主要有三种数据结构,所有的 *** 作也都是基于这三种结构而来的。

这里,最常用的是二维的DataFrame表格型结构,其次是一维的Series序列型结构,至于三维的Panel实际使用情况较少,我们暂不讨论。在使用之前,别忘了导入包。

Series 是一种一维的数组结构,主要由索引(标签)和数据值组成,能够保存任何数据类型(整型,浮点型,字符串或其他Python对象类型)。其中,索引类似于数组的下标,只不过series的索引不仅可以是数字,还可以是字符串,日期等类型。而数据值部分,不要求所有元素的类型完全相同,可以是任意类型。下图所示的就是典型的Series结构,左边是字符索引,右边是对应的值,看起来好像竖起来的数组。

DataFrame是一个二维索引的数据结构,类似于表格型结构,它的列可以存在不同的类型。你可以把它简单的想成Excel表格或SQL Table,它的每个列都是一个Series结构。它是最常用的Pandas对象,没有之一。DataFrame主要由行索引,列索引和数据值三部分构成。与Series一样,DataFrame的索引类型是多样的,数据值的类型也不做限制。

Panel是一个三维结构,由DataFrame组成,使用较少,暂不讨论。

在进行下面的题目 *** 作时,一定要先导入上面的两个数据分析包 pandas、numpy

1 如何用Python的列表创建一个series

输出:

一个series是一个一维的标记数组,可以容纳任何数据类型(整数、字符串、浮点数、Python对象等)。必须记住,与Python列表不同,一个series总是包含相同类型的数据。

2如何使用列表创建一个DataFrame

输出:

3如何使用Series 字典对象生成 DataFrame

输出:

4如何在pandas中创建一个空的DataFrame?

要创建一个完全空的pandas dataframe,我们使用以下 *** 作:

输出:

已知有这样的数据,如何进行查看

输出:

2如何查看尾部数据

3如何快速查看数据的统计摘要

4如何查询索引和列名

1简述Pandas Index

在panda中建立索引意味着简单地从DataFrame中选择特定的数据行和列。

pandas支持四种类型的多轴索引,它们是:

它们统称为索引器。这些是迄今为止索引数据最常见的方法。这四个函数有助于从DataFrame获取元素、行和列。

2Pandas 定义重新索引(Reindexing)

重新索引会更改DataFrame的行标签和列标签。重新索引意味着使数据符合特定轴上给定的一组标签。

多个 *** 作可以通过像这样的索引来完成:

输出:

3如何设置索引?

panda set_index() 是一种将列表、序列或dataframe设置为dataframe索引的方法。

语法:

DataFrameset_index(keys, inplace=False)

参数:

改变索引列

在本例中,名称列被用作DataFrame的索引列

输出:

如输出图像所示,以前索引列是一系列数字

Before Operation

After Operation

4如何重置索引

Pandas Seriesreset_index()

函数的作用是:生成一个新的DataFrame或带有重置索引的Series。

例1: 使用 Seriesreset_index() 函数重置给定Series对象的索引

输出:

现在,我们将使用Seriesreset_index()函数来重置给定的series对象的索引

输出 :

从输出中可以看到,该 Seriesreset_index() 函数已将给定Series对象的索引重置为默认值。它保留了索引,并将其转换为列。

11先创建数据:

12选择单列,产生 Series

详见 按标签选择 。

21用标签提取一行数据:

详见 按位置选择 。

31用整数位置选择:

41用单列的值选择数据:

51用索引自动对齐新增列的数据:

1如何得到一个数列的最小值、第25百分位、中值、第75位和最大值

输出:

Pandas dataframemean(axis=None) 函数返回所请求轴(axis=0代表对列进行求平均值,axis=1代表对行进行求平均值)的值的平均值。

示例: 使用 mean() 函数查找索引轴上所有观测值的平均值。

输出:

让我们使用datafame mean()函数来查找索引轴上的平均值。

3如何将函数应用到DataFrame中的每个数据元素

可以使用 apply() 函数以便将函数应用于给定dataframe中的每一行。让我们来看看我们完成这项任务的方式。

实例:

输出:

4如何在panda中获得一个DataFrame的行数和列数

输出:

获取df的行和列计数

输出:

5如何在panda DataFrame中获得列值的总和

Pandas dataframesum() 函数返回所请求轴的值的和

语法: DataFramesum(axis=None, skipna=None, )

参数:

示例1: 使用 sum() 函数查找索引轴上所有值的总和

现在求出沿索引轴的所有值的和。我们将跳过计算和时的NaN值。

输出:

如何将新行追加到pandas DataFrame?

Pandas dataframeappend() 函数的作用是:将其他dataframe的行追加到给定的dataframe的末尾,返回一个新的dataframe对象。

语法:

DataFrameappend( ignore_index=False,)

参数:

示例1: 创建两个数据框,然后将第二个附加到第一个。

现在将df2附加到df1的末尾

输出:

请注意,第二个DataFrame的索引值保留在附加的DataFrame中。如果我们不希望发生这种情况,则可以设置ignore_index = True。

输出 :

“group by” 指的是涵盖下列一项或多项步骤的处理流程:

详见 分组 。

输出:

1先分组,再用 sum() 函数计算每组的汇总数据:

输出:

2多列分组后,生成多层索引,也可以应用 sum 函数:

输出:

如何将numpy数组转换为给定形状的DataFrame

输出:

输出:

透视表是一种可以对数据动态排布并且分类汇总的表格格式,在pandas中它被称作pivot_table。

pivot_table(data, values=None, index=None, columns=None)

参数:

详见: 数据透视表

打印输出:

用上述数据生成数据透视表非常简单:

返回结果:

1如何将列添加到pandas DataFrame?

源数据:

输出:

输出:

2如何向panda DataFrame添加索引、行或列

向DataFrame添加索引

如果您创建了一个DataFrame, panda允许将输入添加到索引参数中。它将确保您拥有所需的索引。否则,在默认情况下,DataFrame包含一个数值索引,该索引从0开始,在DataFrame的最后一行结束。

向DataFrame添加行、列

我们可以使用loc、iloc和ix将行、列插入到DataFrame中。

添加具有特定索引名的行:

输出:

3如何在panda DataFrame上进行迭代

您可以通过结合使用for循环和对DataFrame的iterrows()调用来遍历DataFrame的行。

输出:

4我们如何排序DataFrame?

我们可以通过以下几种有效地在DataFrame中执行排序:

(1)按标签

可以使用sort_index()方法对数据dataframe进行排序。可以通过传递axis参数和排序顺序来实现。默认情况下,按升序对行标签进行排序。

一维数组情况:

二维数组情况:

3参数情况:

2参数情况:

1参数情况:

一维情况:

二维情况:

一维情况:

二维情况:

一维情况:

二维情况:第三个参数指定维度

只查看行数、或者列数

逗号隔开两个索引

某些行

某些列

可以看出append()函数在二维数组中添加元素,结果转为了一维数组。

那怎么保持二维数组呢?可以设置axis参数按行或者按列添加

可以看出先把二维数组降成了一维数组,再在索引为1的位置添加元素。

那么怎么保持在二维添加元素呢? 同样设置axis参数

也分按行和按列删除

标记缺失值: isnan()函数

补充缺失值:

同样axis参数可以指定拼接按行还是按列

2 hstack()函数:以水平堆叠的方式拼接数组

3 vstack()函数:以垂直堆叠的方式拼接数组

第二个参数还可以是数组,指定拆分的位置

hsplit()函数:横向拆成几个数组

vsplit()函数:纵向拆成几个数组

数组与数组之间的运算

数组与数值的运算

可以指定整个数组求和,还是按行或者按列

axis=0:每一列的元素求和

axis=1:每一行的元素求和

axis=0:每一列求均值

axis=1:每一行求均值

axis=0:每一列求最大值

axis=1:每一行求最大值

pandas有两个重要的数据结构对象:Series和DataFrame。

Series是创建一个一维数组对象,会自动生成行标签。

会自动生成行列标签

也可以用字典形式生成数据

在用字典生成数据的基础上,同时指定行标签

例如对下表的数据进行读取

4月是第四个表,我们应把sheet_name参数指定为3;因为索引是从0开始的。

可以看出read_excel()函数自动创建了一个DataFrame对象,同时自动把第一行数据当做列标签。

可以看出不给出header参数时,该参数默认为0。

header=1时结果如下:

header=None时结果如下:

index_col=0时,第0列为列标签

index_col=0时

usecols=[2]:指定第二列

指定多列

数据如下:

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-j1SHxY8y-1637655972909)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211114192949607png)]

nrows=3时

head()函数中参数为空默认前5行

指定head(3)时如下

numpy模块也是shape

查看特定列的书库类型

特定列数据类型转换

先查看一下所有数据

与单行相比,结果显示的格式不一样了

iloc()挑选:

或者给出区间

挑选数据要么标签,要么索引挑选

或者

或者写成区间

标签挑选

或者索引挑选

先查看一下数据

或者用字典一对一修改

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-a6QKIoie-1637655972912)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123110431201png)]

isin()函数查看表中是否有该值

查看特定列是否有该值

可以看出上述代码并没有替换,那怎么替换呢?

末尾插入一列

指定插入到哪列

axis参数可以指定删除行还是删除列

指定标签删除

指定索引删除

方法三

指定行标签删除

指定索引删除

方法三:

先查看所有数据

info()函数查看数据类型,还可以查看是否有缺失值

isnull()函数查看是否有缺失值

在numpy模块中用isnan()函数

删除有缺失值的行

删除整行都为缺失值的行: 需要指定how参数

不同列的缺失值设置不同的填充值

默认保留第一个重复值所在的行,删除其他重复值所在的行

保留第一个重复值所在的行

保留最后一个重复值所在的行

是重复的就删除

降序如下

参数指定first时,表示在数据有重复值时,越先出现的数据排名越靠前

获取产品为单肩包的行数据

获取数量>60的行数据

获取产品为单肩包 且 数量>60 的行数据

获取产品为单肩包 或 数量>60 的行数据

stack()函数转换成树形结构

how参数指定外连接

on参数指定按哪一列合并

concat()函数采用 全连接 的方式,没有的数设置为缺失值

重置行标签

效果与concat()一样

末尾添加行元素

指定列求和

指定列求均值

指定列求最值

获取单列的

corr()函数获取相关系数

获取指定列与其他列的相关系数

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-46g9qgQw-1637655972913)(C:Users14051AppDataRoamingTypora ypora-user-imagesimage-20211123135643804png)]

groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。

分组后获取指定列的汇总情况

获取多列的汇总情况

获取多列的情况

ta = pdread_excel(‘相关性分析xlsx’)

print(data)

corr()函数获取相关系数

获取指定列与其他列的相关系数

[外链转存中…(img-46g9qgQw-1637655972913)]

groupby()函数返回的是一个DataFrameBy对象,该对象包含分组后的数据,但是不能直观地显示出来。

分组后获取指定列的汇总情况

获取多列的汇总情况

获取多列的情况

注意:显示索引选择时,包括最后一个索引。隐式索引则不包括。

索引器包括:loc、iloc、ix

[Out]:

[Out]:

技能提升:ix 索引器,可以将显示索引和隐式索引混合使用。但是 ix不被新版本支持了,所以作为了解就好。

任何处于处理Numpy形式数据的方法 ,都可以用于这些索引器。比如:掩码、花式索引;

:任何一种取值方法,都可以用于调整数据。

解释:

[Out]:

解释:

注释:

Pandas 采用标签法来表示缺失值,有两种方式:

注意:

pandas 将None与NaN看成是可等价交换的,在适当的时候,会将两者进行替换,除此之外,Pandas 会将没有标签值的数据,自动转换成NaN。实例如下:

andas:对不同类型的缺失值的转换规则

注意:Pandas 中,字符串使用object类型存储。

关于 thresh:通过thresh 设置非缺失值的最小数量(thresh=n:表没有缺失值)

方法优化:

将Series | DataFrame 的index参数设置为至少二维的索引数组

以上就是关于Pandas中ix和iloc有什么区别全部的内容,包括:Pandas中ix和iloc有什么区别、pandas数据整理、pandas读取csv文件时报错:ParserError: Error tokenizing data. C error等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9495831.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存