DataFrame的loc,iloc访问方式

  1. 准备数据

准备数据meal_order_detail1.csv,并将meal_order_detail1.csv放到Linux本地/course/DataAnalyze/data目录。

  1. DataFrame的loc,iloc访问方式
  1. 使用loc方法和iloc分别实现单列切片如代码 410所示。

代码 410 loc和iloc单列切

In[14]:

dishes_name1 = detail.loc[:,'dishes_name']

print('使用loc提取dishes_name列的size为:', dishes_name1.size)

Out[14]:

使用loc提取dishes_name列的size为: 2779

In[15]:

dishes_name2 = detail.iloc[:,3]

print('使用iloc提取第3列的size为:', dishes_name2.size)

Out[15]:

使用iloc提取第3列的size为: 2779

  1. 使用loc方法和iloc实现多列切片,其原理的通俗解释就是将多列的列名或者位置作为一个列表或者数据传入,如代码 411所示。

代码 411 loc,iloc多列切

In[16]:

orderDish1 = detail.loc[:,['order_id','dishes_name']]

print('使用loc提取order_id和dishes_name列的size为:', orderDish1.size)

Out[16]:

使用loc提取order_id和dishes_name列的size为: 5558

In[17]:

orderDish2 = detail.iloc[:,[1,3]]

print('使用iloc提取第1和第3列的size为:', orderDish1.size)

Out[17]:

使用iloc提取第1和第3列的size为: 5558

  1. 使用loc,iloc方法可以取出DataFrame中的任意数据,如代码 412所示。

代码 412 loc,iloc花式切片

In[18]:

print('列名为order_id和dishes_name的行名为3的数据为:\n',

detail.loc[3,['order_id','dishes_name']])

Out[18]:

列名为order_id和dishes_name的行名为3的数据为:

order_id         417

dishes_name芝麻烤紫菜

Name: 3, dtype: object

In[19]:

print('列名为order_id和dishes_name行名为2,3,4,5,6的数据为:\n',

detail.loc[2:6,['order_id','dishes_name']])

Out[19]:

列名为order_id和dishes_name行名为2,3,4,5,6的数据为:

order_iddishes_name

2      417        大蒜苋菜

3      417       芝麻烤紫菜

4      417        蒜香包

5      301        白斩鸡

6      301    香烤牛排

In[20]:

print('列位置为1和3行位置为3的数据为:\n',detail.iloc[3,[1,3]])

Out[20]:

列位置为1和3行位置为3的数据为:

order_id         417

dishes_name     NA

Name: 3, dtype: object

In[21]

print('列位置为1和3行位置为2,3,4,5,6的数据为:\n',detail.iloc[2:7,[1,3]])

Out[21]

列位置为1和3行位置为2,3,4,5,6的数据为:

order_idlogicprn_name

2      417            NA

3      417            NA

4      417            NA

5      301            NA

6      301            NA

  1. 从代码 412运行结果中可以看出在loc使用的时候内部传入的行索引名称如果为一个区间,则前后均为闭区间;iloc方法使用时内部传入的行索引位置或列索引位置为区间时,则为前闭后开区间。
  2. loc内部还可以传入表达式,结果会返回满足表达式的所有值,如代码 413所示。

代码 413 loc和iloc条件切片

In[22]:

print('detail中order_id为458的dishes_name为:\n',

detail.loc[detail['order_id']==458,['order_id','dishes_name']])

Out[22]:

detail中order_id为458的dishes_name为:

order_iddishes_name

145      458              蒜香辣花甲

146      458               剁椒鱼头

147      458            凉拌蒜蓉西兰花

148      458               木须豌豆

149      458               辣炒鱿鱼

150      458               酸辣藕丁

151      458              炝炒大白菜

152      458              香菇鸡肉粥

153      458               干锅田鸡

154      458            桂圆枸杞鸽子汤

155      458  五香酱驴肉

156      458           路易拉菲红酒干红

157      458              避风塘炒蟹

158      458              白饭/大碗

In[23]:

print('detail中order_id为458的第1,5列数据为:\n',

detail.iloc[detail['order_id']==458,[1,5]])

Out[23]:

NotImplementedError: iLocation based boolean indexing on an integer type is not available

  1. 在此处iloc方法则不能接收表达式,原因在于此处条件返回的为一个布尔值Series,而iloc可以接收的数据类型并不包括Series。根据Series的构成只要取出该Series的values就可以了,如代码 414所示。

代码 414 iloc条件切片

In[24]:

print('detail中order_id为458的第1,5列数据为:\n',

detail.iloc[(detail['order_id']==458).values,[1,5]])

Out[24]:

detail中order_id为458的第1,5列数据为:

order_iddishes_name

145      458              蒜香辣花甲

146      458               剁椒鱼头

147      458            凉拌蒜蓉西兰花

148      458               木须豌豆

149      458               辣炒鱿鱼

150      458               酸辣藕丁

151      458              炝炒大白菜

152      458              香菇鸡肉粥

153      458               干锅田鸡

154      458            桂圆枸杞鸽子汤

155      458  五香酱驴肉

156      458           路易拉菲红酒干红

157      458              避风塘炒蟹

158      458              白饭/大碗

  1. 总体来说,loc更加灵活多变,代码 的可读性更高,iloc的代码 简洁,但可读性不高。具体在数据分析工作中使用哪一种方法,根据情况而定,大多数时候建议使用loc方法。
  2. 切片方法之ix:使用ix方法时有个注意事项,第一条,当索引名称和位置存在部分重叠时,ix默认优先识别名称,如代码 415所示。

代码 415 loc,iloc,ix切片比较

In[25]:

print('列名为dishes_name行名为2,3,4,5,6的数据为:\n',detail.loc[2:6,'dishes_name'])

Out[25]:

列名为dishes_name行名为2,3,4,5,6的数据为:

2        大蒜苋菜

3       芝麻烤紫菜

4        蒜香包

5        白斩鸡

6    香烤牛排

Name: dishes_name, dtype: object

In[26]:

print('列位置为5,行位置为2至6的数据为:\n',detail.iloc[2:6,5])

Out[26]:

列位置为5,行位置为2至6的数据为:

2     大蒜苋菜

3   芝麻烤紫菜

4      蒜香包

5      白斩鸡

Name: dishes_name, dtype: object

In[27]:

print('列位置为5行名为2至6的数据为:', '\n',detail.ix[2:6,5])

Out[27]:

列位置为5行名为2至6的数据为:

2        大蒜苋菜

3       芝麻烤紫菜

4        蒜香包

5        白斩鸡

6    香烤牛排

Name: dishes_name, dtype: object

DataFrame的loc,iloc访问方式相关推荐

  1. pandas中DataFrame的ix,loc,iloc索引方式的异同

    pandas中DataFrame的ix,loc,iloc索引方式的异同 1.loc: 按照标签索引,范围包括start和end 2.iloc: 在位置上进行索引,不包括end 3.ix: 先在inde ...

  2. 2017.06.15-2016.06.18回顾 loc/iloc/ix dataframe相关 oracle无自增去重 correl

    上周最后阶段比较忙,主要是忙jd的数据测试的事情还有就是各种新产品的事情,下面回顾一下这段时间的工作. 1.上周四快下班的时候开了一个新产品的会,初步确定了风控策略,但是接近下班的时候又告诉我另外一个 ...

  3. python iloc用法_pandas-03 DataFrame()中的iloc和loc用法

    pandas-03 DataFrame()中的iloc和loc用法 简单的说: iloc,即index locate 用index索引进行定位,所以参数是整型,如:df.iloc[10:20, 3:5 ...

  4. pandas loc iloc ix用法详解

    1.什么是label pandas处理数据时,我们会经常看到dataframe结构使用loc, iloc, ix等方法.那么这些方法到底有啥区别,下面我们来进行详细分析. 首先我们先明确一点,这几个方 ...

  5. php 访问类成员,PHP类成员的访问方式和权限_PHP教程

    PHP5的访问方式允许限制对类成员的访问. 这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在. 有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库. 像C++和 ...

  6. 浅谈企业IT应用的访问方式之:乱想

        近来手上的几大块事情,算是大头朝下了.后面可能更多是跟公司的最终用户打交道,一套完整的应用服务体系,不光只是服务器平台的搭建.更重要的是如何让用户觉得确实给他们带来了帮助.     在非洲的一 ...

  7. SSM-SpringMVC-16:SpringMVC中小论注解式开发之访问方式篇

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 访问方式可以指定,打个比方,你通过get方式进入登陆页面,通过post发送ajax数据库校验或者post提交 ...

  8. 理解Kubernetes(2): 应用的各种访问方式

    理解Kubernetes系列文章: 手工搭建环境 应用的各种访问方式 1. 通过 Pod 的 IP 地址访问应用 1.1 Pod 的IP地址 每个Pod 都会被分配一个IP地址,比如下面这儿pod的I ...

  9. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

最新文章

  1. Nginx-1.12.2编译安装
  2. 谈谈java的bio、nio、aio模型
  3. 你会怎样衡量你的产品? —— 一点产品数据分析的经验分享
  4. SQLServer获取最后插入生成的ID 不同方法
  5. 内网监控利器——Nagios
  6. Cocos2d-x schedulers 定时器
  7. 实时系统动态内存算法分析dsa(二)——TLSF代码分析
  8. 阿里菜鸟JAVA实习生一面面试题
  9. 统计数字会撒谎-读书笔记
  10. Photoshop CC(2018)安装教程
  11. 基于java的密码字典生成
  12. 你别不信,安卓机用户才是苹果机涨价的最大受害者
  13. 微信公众号两种匹配模式(全匹配和半匹配)的区别。
  14. 如何打赢一场 DevOps 阻击战
  15. 【JAVA字符串最详细讲解】
  16. 如何在 VS Code 中编写、运行C语言程序 教程
  17. oracle rman备份spfile,利用RMAN自动备份转储Spfile
  18. day07 pyecharts制图
  19. python创建_python 创建txt并写入Python基础1 Hello World!
  20. 全球及中国熔融碳酸盐燃料电池行业前景展望及市场全景调研报告2022-2028年版

热门文章

  1. 全能计算机怎么玩游戏,新买的电脑配置很好 ,测验玩游戏全能玩 。但是进入游戏后fps很低 不是很高 有点卡 是不是...
  2. ionic js input光标重新定位
  3. 谁选谁尴尬的IB课程介绍
  4. 硬盘写保护怎么去掉--亲测有效
  5. 数据压缩(三)——AVI文件分析WAV文件分析
  6. 报表系统应该如何设计?--开源软件诞生15
  7. [矩阵论]正规矩阵可酉相似对角化
  8. 用JS制作《飞机大作战》游戏_第1讲(素材查找和界面框架搭建)-陈远波
  9. “行业寒冬”,给在座的测试人一些涨薪建议
  10. mysql根据id删除数据库,MYSQL删除表中的指定ID数据