数据框是用于存储数据的二维结构,分为行和列,一行和一列的交叉位置是一个cell,该cell的位置是由行索引和列索引共同确定的。可以通过at/iat,或loc/iloc属性来访问数据框的元素,该属性后跟一个中括号:[row,col],中括号内 row表示行索引或行标签,col表示列索引或列标签。如果省略row, 那么row维度使用“:”代替,格式是 [ :, col] ,表示访问所有行的特定列;如果省略col ,格式是[row],表示访问特定行的所有列。

有以下数据框对象df,其数据和索引如下:

       year   state  pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9

一,索引单个cell

通过元素的行和列索引对来访问单个cell,at 和 iat 属性只能访问当个cell,区别是at可以使用字符串和整数,而iat只能使用整数。

at 和 iat 的格式是:[row, column], 第一个维度是行索引,第二个维度是列索引。

通过iat属性(设置下标)来访问单个cell:

>>> df.iat[1,2]
1.7

通过at属性(设置标签)来访问单个cell:

>>> df.at['two','pop']
1.7

二,通过位置来访问多个元素

loc 和 iloc 属性可以访问多个cell,区别是loc可以使用标签和布尔(掩码)数组,不能使用整数位置(整数代表元素的位置),而iloc只能使用整数位置。

loc 和 iloc的格式是:

  • [row] 访问单行,包括所有列
  • [row, column]  访问有row 和 column 确定的元素

.loc[] 主要基于标签,但也可以与布尔数组一起使用。在格式 .loc[row,col] 中,row和col允许的输入有:

  • label:单个标签,表示行标签,索引的数据是一行
  • [label]:标签数组,表示行标签数组,索引的数据是多行
  • ['a':'f'] 或 ['a':'f']:索引切片
  • [True, False, True]:和axis等长的布尔数组

举个例子,分别使用iloc 和loc来访问数组的多个元素:

>>> df.iloc[[0,1],[0,2]]
year pop
one 2000 1.5
two 2001 1.7
>>> df.loc[['one','two'],['year','pop']]
year pop
one 2000 1.5
two 2001 1.7

三,访问整列的数据

直接通过列名来访问DataFrame的数据,选择特定列的所有数据行,有两种格式是:

  • df['col']    单列索引方式
  • df.col     属性方式
  • df[['col1','col2']]  列索引数组方式

1,属性方式 和单列索引方式

对于属性方式和单列索引方式,只能用于访问单列,返回的是Series对象:

df['state']
df.state

属性方式是指:列名作为DataFrame对象的属性,通过 .  号引用列名来访问一列的值

单列索引方式是指:列名作为DataFrame对象的索引,通过[] 号索引列来访问一列的值

2,列索引数组方式

对于列索引数组方式,一次访问多列,返回的对象是DataFrame类型

df[['year','state']]

3,对序列进行查询

对于单列索引和属性方式,返回的结果是一个序列,因此,可以通过[idx]来访问序列中的元素,[]中的索引idx是行索引,也就是说,使用 .col[row] 或 [col][row] 来访问单个cell,举个列子:

>>> df.year['one']
2000
>>> df['year']['one']
2000

四,索引数组

索引数组是指DataFrame使用数组作为索引,索引数组可以是行标签、列标签,或者行索引、列索引,也可以是布尔(掩码)索引数组。

1,列标签构成的索引数组

数据框对象可以使用loc和列标签来访问数据,例如,省略row维度,选择state和pop列的所有数据行:

>>> df.loc[:,['state','pop']]
state pop
one Ohio 1.5
two Ohio 1.7
three Ohio 3.6
four Nevada 2.4
five Nevada 2.9

2,掩码索引数组

掩码索引数组是由True和False构成的数组,在特定的轴(维度)上,维度的长度和掩码索引的长度相同,选择True对应的索引,忽略False对应的索引。

举个例子,省略row维度的索引,由于该数据框由三列,可以把year和state列对应的掩码设置为True,把pop列对应的掩码设置为False。

>>> df.columns
Index(['year', 'state', 'pop'], dtype='object')
>>> df.loc[:,[True,True,False]]
year state
one 2000 Ohio
two 2001 Ohio
three 2002 Ohio
four 2001 Nevada
five 2002 Nevada

序列具有矢量化操作的特性,当选择某一列时,可以通过逻辑运算得出掩码索引数组:

>>> df['pop']>=2
one False
two False
three True
four True
five True
Name: pop, dtype: bool
>>> df.loc[df['pop']>=2]
year state pop
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9

五,遍历DataFrame

使用iterrows() 遍历数据框,iterrows()返回值为元组(index,row) ,每次迭代返回一行数据:

for index,row in df.iterrows():
print(index,row)

使用itertuples()遍历数据框,返回的是命名元组:

DataFrame.itertuples(self, index=True, name='Pandas')

使用items()或 iteritems()遍历数据框,返回值为元组(column,Series),每次迭代返回一列数据:

>>> for col_name,col in df.items():
... print(col_name,col)

参考文档:

pandas DataFrame

pandas 学习 第5篇:DataFrame - 访问数据框的更多相关文章

  1. 【转】Pandas学习笔记(二)选择数据

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  2. Pandas 学习 第9篇:DataFrame - 数据的输入输出

    常用的数据存储介质是数据库和csv文件,pandas模块包含了相应的API对数据进行输入和输出: 对于格式化的平面文件:read_table() 对于csv文件:read_csv().to_csv() ...

  3. pandas 学习 第7篇:DataFrame - 数据处理(应用、操作索引、重命名、合并)

    DataFrame的这些操作和Series很相似,这里简单介绍一下. 一,应用和应用映射 apply()函数对每个轴应用一个函数,applymap()函数对每个元素应用一个函数: DataFrame. ...

  4. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

  5. (数据科学学习手札06)Python在数据框操作上的总结(初级篇)

    数据框(Dataframe)作为一种十分标准的数据结构,是数据分析中最常用的数据结构,在Python和R中各有对数据框的不同定义和操作. Python 本文涉及Python数据框,为了更好的视觉效果, ...

  6. pandas.DataFrame——pd数据框的简单认识、存csv文件

    接着前天的豆瓣书单信息爬取,这一篇文章看一下利用pandas完成对数据的存储. 回想一下我们当时在最后得到了六个列表:img_urls, titles, ratings, authors, detai ...

  7. pandas 学习 第3篇:Series - 数据处理(应用、分组、滚动、扩展、指数加权移动平均)

    序列内置一些函数,用于循环对序列的元素执行操作. 一,应用和转换函数 应用apply 对序列的各个元素应用函数: Series.apply(self, func, convert_dtype=True ...

  8. pandas 学习 第1篇:pandas基础 - 数据结构和数据类型

    pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一.pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引 ...

  9. (数据科学学习手札07)R在数据框操作上方法的总结(初级篇)

    上篇我们了解了Python中pandas内封装的关于数据框的常用操作方法,而作为专为数据科学而生的一门语言,R在数据框的操作上则更为丰富精彩,本篇就R处理数据框的常用方法进行总结: 1.数据框的生成 ...

随机推荐

  1. 【Postman】举例实战——天气查询

    准备工作: 1.下载postman(搜索官网下载即可) 2.接口文档(以聚合上去免费API:天气查询接口) 打开postman: 1.输入url 2.请求方式 3.请求参数 4.在postman中运行 ...

  2. Educational Codeforces Round 77 (Rated for Div. 2)

    A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...

  3. 【linux命令】chgrp改变文件或目录的属组

    在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理.可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以.Chgrp命令就是change group的 ...

  4. 【Unity游戏开发】性能优化之在真机上开启DeepProfile与踩坑

    一.引子 最近马三入职了新公司,平时除了负责编辑器开发之外还要做一些游戏性能优化方面的工作.在这里首先给大家安利一下Unity官方的性能测试分析工具URP ,这个工具目前是免费,测试的过程中也不需要接 ...

  5. 基于 Swoole 的微信扫码登录

    随着微信的普及,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...

  6. mysql的repeat()函数

    用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数 mysql> select repeat('ab',2); +----------------+ | repeat('ab',2 ...

  7. PlayJava Day013

    今日所学: /* 2019.08.19开始学习,此为补档. */ 1.BufferedImage:是Image的一个子类,两者的主要作用就是将一副图片加载到内存中,即图像缓冲区. 对于本地图片: Fi ...

  8. linux-VMtools安装

    一.解决的问题 1.剪切板无法共享 2.共享文件夹的设置 3.窗口无法自适应 二. 安装 1.进入centos 2.点击VMware菜单--->install VMware tools 3.打开 ...

  9. Cobalt Strike系列教程第二章:Beacon详解

    上周更新了Cobalt Strike系列教程第一章:简介与安装,文章发布后,深受大家的喜爱,遂将该系列教程的其他章节与大家分享,提升更多实用技能! 第二章:Beacon详解 一.Beacon命令 大家 ...

  10. 一些有用的Function或Class Method,持续更新

    一些有用的Function 或 Class Method Function/Class Method 类型 作用 模块 备注 co_cost_show_order_costs Func 显示生产订单. ...