pandas学习:第四天

本文详细介绍了Pandas中索引的操作,包括列索引、行索引、loc索引器、iloc索引器、query方法以及随机抽样。重点讲解了loc和iloc的区别,以及query方法在复杂查询中的应用。最后提到了DataFrame的sample函数用于数据抽样。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas 学习

import numpy as np
import pandas as pd

一、索引

1. 表的列索引

列索引,一般用[列名]或[列名组成的列表]从Dataframe中取出对应的列,单列为Series,多列则为一个新的Dataframe
若要取出单列,且列名中不包含空格,则可以用 .列名 取出,这和 [列名] 是等价的

2. 序列的行索引

如果取出单个索引的对应元素,则可以使用 [item] ,若 Series 只有单个值对应,则返回这个标量值,如果有多个值对应,则返回一个 Serie
然后把这些item改为整数,它的用法没有什么区别

不要把纯浮点以及任何混合类型(字符串、整数、浮点类型等的混合)作为索引

3.loc索引器

对于表来讲,有两种索引器,一种是基于元素的loc,一种是基于位置的iloc

loc 索引器的一般形式是 loc[*, ] ,其中第一个 * 代表行的选择,第二个 * 代表列的选择,如果省略第二个位置写作 loc[] ,这个 * 是指行的筛选。其中, * 的位置一共有五类合法对象,分别是:单个元素、元素列表、元素切片、布尔列表以及函数

  • * 为单个元素,元素列表
    如果选择多行多列,需要用列表的形式对所需要的行与列选择出来
  • * 为切片
    如果 DataFrame 使用整数索引,其使用整数切片的时候和上面字符串索引的要求一致,都是 元素 切片,包含端点且起点、终点不允许有重复值。
    切片时是在dataframe所选的列自上而下的切
  • * 为布尔列表
    在实际的数据处理中,根据条件来筛选行是极其常见的,此处传入 loc 的布尔列表与 DataFrame 长度相同,且列表为 True 的位置所对应的行会被选中, False 则会被剔除
    也可以通过 isin 方法返回的布尔列表等价,可以用来查询符合条件的数据
    对于复合条件而言,可以用 |(或), &(且), ~(取反) 的组合来实现
  • * 为函数
    函数必须是以前面的四种合法形式之一为返回值,并且函数的输入值为 DataFrame 本身。假设仍然是上述复合条件筛选的例子,可以把逻辑写入一个函数中再返回
    支持使用 lambda 表达式,其返回值也同样必须是先前提到的四种形式之一
    由于函数无法返回如 start: end: step 的切片形式,故返回切片时要用 slice 对象进行包装
df_demo.loc[lambda x: slice('Gaojuan You', 'Gaoqiang Qian')]

4. iloc索引器

iloc 的使用与 loc 完全类似,只不过是针对位置进行筛选,在相应的 * 位置处一共也有五类合法对象,分别是:整数、整数列表、整数切片、布尔列表以及函数,函数的返回值必须是前面的四类合法对象中的一个,其输入同样也为 DataFrame 本身
在使用布尔列表的时候要特别注意,不能传入 Series 而必须传入序列的 values ,否则会报错
对 Series 而言同样也可以通过 iloc 返回相应位置的值或子序列

5. query方法

支持把字符串形式的查询表达式传入 query 方法来查询数据,其表达式的执行结果必须返回布尔列表。在进行复杂索引时,由于这种检索方式无需像普通方法一样重复使用 DataFrame 的名字来引用列名,一般而言会使代码长度在不降低可读性的前提下有所减少
query表达式中,可以使用Series的方法,与正常的函数调用没有什么区别
query 中还注册了若干英语的字面用法,帮助提高可读性,例如: or, and, or, is in, not in
在字符串中出现与列表的比较时, == 和 != 分别表示元素出现在列表和没有出现在列表,等价于 is in 和 not in
对于 query 中的字符串,如果要引用外部变量,只需在变量名前加 @ 符号

6. 随机抽样

如果把 DataFrame 的每一行看作一个样本,或把每一列看作一个特征,再把整个 DataFrame 看作总体,想要对样本或特征进行随机抽样就可以用 sample 函数
sample 函数中的主要参数为 n, axis, frac, replace, weights ,前三个分别是指抽样数量、抽样的方向(0为行、1为列)和抽样比例(0.3则为从总体中抽出30%的样本)。
replace 和 weights 分别是指是否放回和每个样本的抽样相对概率,当 replace = True 则表示有放回抽样

总结

加油,明天考试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值