DataFrame查询2 - 专用查询:索引和切片

DataFrame查询2 - 专用查询:索引和切片


Pandas专用查询方式

经过优化,推荐

三种查询方式:

  • 索引
  • 切片
  • 过滤

索引和切片查询,两种查询方式:

  • a.loc[行,列],标签索引,自定义索引
  • a.iloc[行,列],位置索引,默认索引

参数书写顺序都是都是先行后列

import numpy as np
import pandas as pd
a_values = [
    ['小明','male',18,170.1,60,'北京海淀',61],
    ['小华','female',28,160,50,'上海静安',74],
    ['小红','female',22,175,64,'广州天河',59],
    ['小靑','male',31,182,80,'深圳南山',82],
    ['小兰','female',25,165,55,'杭州西湖',98],
]

a = pd.DataFrame(
    a_values,
    index=[1,2,3,4,5],
    columns=['name','sex','age','heigh','weight','address','grade']
)

a
image.png

索引查询

用于不连续(行列有间隔)行列区块查询

查询单行

# 自定义索引查询
a.loc[3]  # 简写
a.loc[3, :]  # 完整写法

# 默认索引
a.iloc[2]
a.iloc[2, :]
name           小红
sex        female
age            22
heigh         175
weight         64
address      广州天河
grade          59
Name: 3, dtype: object
type(a.loc[3])  # 查询结果为Series
pandas.core.series.Series

查询多行

a.loc[[2, 4]]  # 选中所有列,省略了列条件
a.loc[[2, 4], :]  # 完整写法

a.iloc[[1, 3]]
image.png
type(a.iloc[[1, 3]])  # 查询结果为DataFrame
pandas.core.frame.DataFrame

查询单列

a.loc[:, 'address']
a.iloc[:, 5]
1    北京海淀
2    上海静安
3    广州天河
4    深圳南山
5    杭州西湖
Name: address, dtype: object

查询多列

a.loc[:, ['name', 'address']]
a.iloc[:, [0, 5]]
image.png

查询一行多列

a.loc[2, ['name', 'address', 'grade']]
a.iloc[1, [0, 5, 6]]
name         小华
address    上海静安
grade        74
Name: 2, dtype: object

查询多行1列

a.loc[[1, 3, 5], 'address']
a.iloc[[0, 2, 4], 5]
1    北京海淀
3    广州天河
5    杭州西湖
Name: address, dtype: object

查询1行1列(单元格)

a.loc[3, 'name']  # 行列交叉处
a.iloc[2, 0]

# 针对单元格的特殊写法,效率更高
a.at[3, 'name']  # 自定义索引
a.iat[2, 0]  # 默认索引
'小红'

查询多行多列交叉(多个单元格)

a.loc[[2, 4], ['name', 'address']]
a.iloc[[1, 3], [0, 5]]
image.png

切片查询

用于查询连续的行列区块

a
image.png

查询单行单列

a.loc[3, :]
a.loc[:, 'name']
1    小明
2    小华
3    小红
4    小靑
5    小兰
Name: name, dtype: object

查询多行多列(连续)

# 索引查询
a.loc[[2, 3, 4], ['age', 'heigh', 'weight']]
image.png
# 切片查询
a.loc[2:4, 'age':'weight']  # 自定义索引,切片范围包含起始值和结束值(特例)
a.iloc[1:4, 2:5]  # 默认索引,切片范围,包含起始值,不包含结束值
image.png

切片步长和倒查

a.loc[::2, ::-1]
image.png

索引查询和切片查询的区别

  • 索引查询更适合查询不连续的行列数据
  • 切片查询适合查询连续行和列数据

索引查询可以实现切片查询的所有功能,只是有个书写效率问题

  • 用索引查询查连续数据,需要将每个索引都写上,效率低
  • 切片查询连续数据,只要写起始和结束索引即可。
    • 切片不能查询不连续数据

查询时:优先使用切片查询,无法实现功能时再使用索引查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,923评论 0 9
  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 8,179评论 0 8
  • 索引基础 索引的类型 B-Tree索引 当人们谈论索引时,如果没有特别指明类型,那多半说的是B-Tree索引。存储...
    coolcao阅读 3,555评论 1 3
  • 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profi...
    远方不会远阅读 4,476评论 0 4
  • 我的梦好似一个轴 串在太阳中,挂在中天 闪闪烁烁 微醺着山的脊梁 墨绿色的湖面 仰首舒展冬的风韵 红嘴麻雀隐藏在芦...
    伊儿A阅读 4,882评论 24 32

友情链接更多精彩内容