首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas切片操作:一个很容易忽视的错误

loc:通过标签选取数据,即通过index和columns的值进行选取。loc方法有两个参数,按顺序控制行列选取,范围包括start和end。...iloc:通过行号选取数据,即通过数据所在的自然行列数为选取数据。iloc方法也有两个参数,按顺序控制行列选取。...这里我们就遇到了所谓的“链接索引”,具体原因是使用了两个索引器,例如:df[][] df[df['x']>3] 导致Pandas创建原始DataFrame的单独副本 df[df['x']>3]['y']...这是因为,当我们从DataFrame中仅选择一列时,Pandas会创建一个视图,而不是副本。关于视图和副本的区别,下图最为形象: ?...实际上有两个要点,可以使我们在使用切片和数据操作时免受任何有害影响: 避免链接索引,始终选择.loc/ .iloc(或.at/ .iat)方法; 使用copy() 创建独立的对象,并保护原始资源免遭不当操纵

2.4K20

pandas | 如何在DataFrame中通过索引高效获取数据?

今天这一篇我们将会深入其中索引相关的应用方法,了解一下DataFrame的索引机制和使用方法。...不仅如此,loc方法也是支持切片的,也就是说虽然我们传进的是一个字符串,但是它在原数据当中是对应了一个位置的。我们使用切片,pandas会自动替我们完成索引对应位置的映射。 ?...说白了我们可以选择我们想要的行中的字段。 ? 列索引也可以切片,并且可以组合在一起切片: ? iloc iloc从名字上来看就知道用法应该和loc不会差太大,实际上也的确如此。...我们在使用当中往往会觉得不方便,因为我们往往是知道我们需要的行号和列名。也就是知道一个索引知道一个位置,而不是两个位置或者是两个索引,所以使用loc也不方便使用iloc也不方便。...先是iloc查询行之后,再对这些行组成的新的DataFrame进行列索引。

13.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python大数据之pandas快速入门(二)

    DataFrame 除了行标签和列标签之外,还具有行列位置编号。...基本格式: 语法 说明 df.loc[起始行标签:结束行标签, 起始列标签:结束列标签] 根据行列标签范围获对应行的对应列的数据,包含起始行列标签和结束行列标签 df.iloc[起始行位置:结束行位置..., 起始列位置:结束列位置] 根据行列标签位置获对应行的对应列的数据,包含起始行列位置,但不包含结束行列位置 演示示例: 示例1:获取 china_df 中前三行的前三列的数据,分别使用上面介绍的loc...和iloc实现 示例实现: 1)示例1:获取 china_df 中前三行的前三列的数据,分别使用上面介绍的loc和iloc实现 # 示例1:获取 china_df 中前三行的前三列的数据,分别使用上面介绍的...数据集 能够区分 DataFrame 的行列标签和行列位置编号 能够获取 DataFrame 指定行列的数据 loc iloc loc和iloc的切片操作 []

    19650

    数据处理利器pandas入门

    是一种表格型数据结构,可以看作是具有行列标签的二维数组。...这里还要注意一点:由于type列对应了不同的空气质量要素,而不同的空气质量要素具有不同的取值范围,因此在使用describe查看统计信息时,应针对不同的要素进行,这样才有具体意义,才能看出每个要素的值分布...Pandas主要有两种数据查询选择操作: 基于标签的查询 基于整数的位置索引查询 Pandas在选择列时,无需使用 date[:, columns] 的形式,先使用 : 选择所有行,再指定 columns...因为 .loc 只能用于行列标签索引,整数位置索引需要使用 .iloc。...data.loc[test(data, 'type', 'AQI')] 基于整数的位置索引查询 .iloc .iloc 主要是基于整数的位置索引,也可以使用逻辑数组的方式。

    3.7K30

    左手用R右手Python系列5——数据切片与索引

    ----- R语言: ------------------ library(ggplot2) 我使用ggplot2内置的mpg数据集来进行案例演示,数据框可以通过方括号传入行列下标的方式筛选各种符合条件的取值范围...还有一种更加高级优雅得方式是使用dplyr包中的select和filter函数进行行列索引与切片。...#位置索引:(只针对行列位置对应的序号) mydata.iloc[[0,2]] 等价于mydata.iloc[[0,2],:] mydata.iloc[1:] 等价于mydata.iloc[...#iloc索引的位置,平时使用是意义不大,只是需要理解其数字和字符串的指定规则,如果只需要提取行的话,列位置可以忽略或者使用“:”占位,如果仅仅是提取列规则,保留所有行的话,则行位置必须提供占位,否则会被当做行索引...位置与标签混合索引(ix函数): #使用ix按索引标签和位置混合提取数据 df_inner.ix[:,:] 指定规则就是可以同时在行列参数指定位置灵活的提供位置参数和标签参数(因本例使用的默认的数字索引字段

    3K50

    pandas中的loc和iloc_pandas loc函数

    目录 pandas中索引的使用 .loc 的使用 .iloc的使用 .ix的使用 ---- pandas中索引的使用 定义一个pandas的DataFrame对像 import pandas as pd...是用行列标签来进行选择数据的。...那么,我们会想,那我们只知道要第几行,第几列的数据呢,这该怎么办,刚好,.iloc就是干这个事的 .iloc的使用 .iloc[]与loc一样,中括号里面也是先行后列,行列标签用逗号分割,与loc不同的之处是...,.iloc 是根据行数与列数来索引的,比如上面提到的得到数字5,那么用iloc来表示就是data.iloc[1,1],因为5是第2行第2列,注意索引从0开始的,同理4就是data.iloc[0,1],...与loc不同的是loc前闭后闭,以及loc是根据行列标签,而.iloc是根据行数与列数 .ix的使用 .ix我发现,上面两种用法他都可以,它既可以根据行列标签又可以根据行列数,比如拿到5 data.ix

    1.2K10

    基于pandas数据预处理基础操作

    df2.dtypes #二、查看数据 #1.查看frame中头部和尾部的行 df1.head() df1.tail() #2.显示索引、列和底层的numpy数据 df1.index df1.columns...中直接修改需加入inplace=True) df1.reset_index(drop=True) #三、选择(通过索引或者位置进行选择) #获取 #1.选择一个单独的列,这将会返回一个Series,等同于...(iloc) df1.iloc[3] df1.iloc[3:5,0:2] df1.iloc[[1,2,4],[0,2]] df1.iloc[1:3,:] df1.iloc[1,1] #布尔索引 #1.使用一个单独列的值来选择数据...使用where操作来选择数据 df1[df1>0] #3....= df1.copy() df4[df4>0] = -df4 #四、缺失值处理 #1.reindex()方法可以对指定轴上的索引进行改变/增加/删除操作,这将返回原始数据的一个拷贝 #仅需改变行列名称的话可以直接使用

    74821

    Pandas 不可不知的功能(一)

    的行列数,(行数,列数) 1....选择指定单元格 类似于 Excel 单元格的选择,Pandas 提供了这样的功能,操作很简单,但是我本人理解起来确实没有操作看上去那么简单。...Pandas 提供了三个方法做类似的操作,loc,iloc,ix,ix 官方已经不建议使用,所以我们下面介绍 loc 和 iloc loc 根据标签选取loc df.loc[行索引开始位置:行索引结束位置...,[列名数组]] iloc 根据索引选取     df.iloc[行索引开始位置:行索引结束位置,列索开始位置:列索引结束位置] 选取行数据 df.loc[[行索引数组]],df.iloc...注意: 索引开始位置:闭区间 索引结束位置:开区间 loc 和 iloc 选取整列数据的时候,看上去与 df[列名数组] 的方式一致,但是其实前者返回的仍然是 DataFrame,后者返回的是

    1.6K60

    Pandas部分应掌握的重要知识点

    索引器中括号内行列下标的位置上都允许使用切片和花式索引,下例中行使用切片,列使用花式索引。 注意:下面的3:5表示下标为3和4的两行,[0,2]表示下标为0和2的两列。...索引器中括号内行列下标的位置上都允许使用切片和花式索引,下例中行使用切片,列使用花式索引。...(3) #按列标签选择多列,使用花式索引的形式 补充说明:使用.iloc或loc索引器的通用写法适用性更广泛,因此掌握通用写法是基本要求,在此基础上最好能掌握基于列标签的简化写法,因为这种写法也比较常见...:") df 2、在尾部增加一行 注意:此处只能使用loc索引器(使用iloc会出现索引越界的提示)。...('team')['Q1'].mean() 方法2:先分组再计算最后选择列 #注意本例中,选择两列时使用了花式索引(如果只有一列,则无需使用花式索引) team.groupby('team').mean

    4700

    数据整合与数据清洗

    每次爬虫获取的数据都是需要处理下的。 所以这一次简单讲一下Pandas的用法,以便以后能更好的使用。 数据整合是对数据进行行列选择、创建、删除等操作。...01 行列操作 选择单列。可以直接用列名选择,也可以通过ix、iloc、loc方法进行选择行、列。 ix方法可以使用数值或者字符作为索引来选择行、列。 iloc则只能使用数值作为索引来选择行、列。...loc方法在选择列时只能使用字符索引。...选择多列。ix、iloc、loc方法都可使用。 只不过ix和loc方法,行索引是前后都包括的,而列索引则是前包后不包(与列表索引一致)。 iloc方法则和列表索引一致,前包后不包。...03 数据分箱 分箱法包括等深分箱(每个分箱样本数量一致)和等宽分箱(每个分箱的取值范围一致)。 其中Pandas的qcut函数提供了分箱的实现方法,默认是实现等宽分箱。

    4.6K30

    pandas库的简单介绍(3)

    数据选择的方法:1、直接选择;2、使用loc选择数据;3、使用iloc选择数据。 直接选择中,frame[[列名,列名]]表示选择列,frame[:3]表示选择行。...']]) #使用loc进行选择 print('使用iloc进行选择:\n', frame.iloc[[1, 3], [1, 3]]) #使用iloc选择数据 print('使用iloc进行选择:\n',...frame.iloc[:, :3][frame.three > 5]) #使用iloc选择数据) 使用loc和iloc选择数据 ---- DataFrame索引选项 类型 描述 df[val] 从..., label_i] 根据行列的标签位置选择单个标量值 df.iat[i, j] 根据行列的整数位置选择单个标量值 reindex方法 通过标签选择行和列 get_value, set_value方法...4.3 对象的相加和使用填充值算法 不同对象(Series和DataFrame)之间的算术行为是pandas提供的一项重要功能。

    1.2K10

    Python使用pandas读取excel表格数据

    格式: 直接print(df)得到的结果: 对比结果和表格,很显然表格中的第一行(黄色高亮部分)被定义为数据块的列下标,而实际视作数据的是后四行(蓝色高亮部分);并且自动在表格第一列之前加了一个行索引...和col为表格行列索引,也就是表格中的行与列名称 #第二种方法:loc df.loc[row,col] # loc只支持使用表格行列索引,不能用内置数字索引 #第三种方法:iloc df.iloc[...i,j] # iloc只支持使用内置数字索引,不能用表格行列索引 由于ix方法对两种索引都支持,所以这里就有一个问题:如果表格行列索引也是数字怎么办?...比如我上述例子中列索引为表格的第一行{1,2,3,4},而行索引为读取时自动添加的。 经过实验这种情况将会优先使用表格行列索引,也就对应了上面代码中得到的结果。...不过为了不在使用时产生混乱,我个人建议还是使用loc或者iloc而不是ix为好。

    3.2K10

    Numpy和pandas的使用技巧

    ndarray,它是一系列同类型数据的集合 1、创建数组,将序列传递给numpy的array()函数即可,从现有的数据创建数组,array(深拷贝),asarray(浅拷贝); 或者使用arange...,元素为0到1之间 np.random.rand(10, 10) 创建指定形状(示例为10行10列)的随机数组(范围在0至1之间) np.random.uniform(0, 100)创建指定范围内的一个数...np.random.randint(0, 100)创建指定范围内的一个整数 np.random.randint(10,size=(3,3))创建指定范围(0,10)指定维度的一个整数...给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3)) 4、索引和查找, # 花式索引举例: A[行索引,列索引] ex: A...[:,:-1] y = df.iloc[:,-1] jupyter notebook 快捷键 #将代码块分割:点到选中的行Ctrl+Shift+- #将代码块合并:使用Shift选中需要合并的框,Shift

    3.5K30

    【项目实战】自监控-07-DataFrame行列操作(中篇)

    今天继续讲讲如何从DataFrame获取需要的行或者列 主要涉及:iloc 今日歌曲: Part 1:构建一个DataFrame 一个DataFrame可以看成一个二维表格,不过这个二维表格有行标题也有列标题...Part 2:行操作 直接使用iloc属性获取,loc可以理解成location,iloc可以理解成integer location iloc依然紧跟一个[行,列],中括号中放入拟需要的行索引和列索引,...但是行列索引只能使用整数,所以表示的是一种位置,起始位为0 若不对列进行筛选,则表示列信息的区域可以省略 若多于1行,可以使用一个列表表示对应的行信息,也可以使用切片操作 切片操作[1:3],表示的是[...Part 3:列操作 使用iloc属性获取 [:,列]其中的行使用:即可,即保持所有行信息,只筛选列信息 若多于1列,可以使用一个列表表示对应的列信息,也可以使用切片操作 df2 = df.iloc[:...Part 4:行列混合操作 就是以上两种的综合,[行,列]对应的行列信息都需要 当多于1行或者1列的时候,可以使用列表及切片操作 df3 = df.iloc[[1, 3], [1, 3]] print(

    31400

    Pandas中高效的选择和替换操作总结

    Pandas是数据操作、分析和可视化的重要工具,有效地使用Pandas可能具有挑战性,从使用向量化操作到利用内置函数,这些最佳实践可以帮助数据科学家使用Pandas快速准确地分析和可视化数据。...使用.iloc[]和.loc[]选择行和列 这里我们将介绍如何使用.iloc[] & .loc[] pandas函数从数据中高效地定位和选择行。...我们将使用iloc[]作为索引号定位器,使用loc[]作为索引名定位器。 在下面的例子中,我们选择扑克数据集的前500行。首先使用.loc[]函数,然后使用.iloc[]函数。...这是因为.iloc[]函数利用了索引的顺序,索引已经排序因此速度更快。 我们还可以使用它们来选择列,而不仅仅是行。在下一个示例中,我们将使用这两种方法选择前三列。...)/ loc_comp_time*100)) 可以看到,使用.iloc[]进行列索引仍然要快80%。

    1.2K30

    pandas库详解一:基础部分

    讲解如下: loc:通过标签选取数据,即通过index和columns的值进行选取。loc方法有两个参数,按顺序控制行列选取。 iloc:通过行号选取数据,即通过数据所在的自然行列数为选取数据。...iloc方法也有两个参数,按顺序控制行列选取。 ix:混合索引,同时通过标签和行号选取数据。ix方法也有两个参数,按顺序控制行列选取。...iloc方法也有两个参数,按顺序控制行列选取。...混合索引,同时通过标签和行号选取数据。...打造层次化索引的方法 reset_index() 将使用set_index()打造的层次化逆向操作 既是取消层次化索引,将索引变回列,并补上最常规的数字索引 详细讲解: 4.1 更新

    1.3K30

    一文介绍Pandas中的9种数据访问方式

    "访问 切片形式访问时按行进行查询,又区分数字切片和标签切片两种情况:当输入数字索引切片时,类似于普通列表切片;当输入标签切片时,执行范围查询(即无需切片首末值存在于标签列中),包含两端标签结果,无匹配行时返回为空...例如,当标签列类型(可通过df.index.dtype查看)为时间类型时,若使用无法隐式转换为时间的字符串作为索引切片,则引发报错 ? 切片形式返回行查询,且为范围查询 ?...切片类型与索引列类型不一致时,引发报错 2. loc/iloc,可能是除[]之外最为常用的两种数据访问方法,其中loc按标签值(列名和行索引取值)访问、iloc按数字索引访问,均支持单值访问或切片查询...3. at/iat,其实是可看分别做为loc和iloc的一种特殊形式,只不过不支持切片访问,仅可用于单值提取,即指定单个标签值或单个索引值进行访问,一般返回标量结果,除非标签值存在重复。...实际上,这里的lookup可看做是loc的一种特殊形式,即分别传入一组行标签和列标签,lookup解析成一组行列坐标,返回相应结果: ?

    3.8K30
    领券