小灰pandas学习day4

本文详细介绍了Pandas库中如何使用布尔索引来筛选数据,包括and, or, not操作符的运用,以及isin方法的选择。同时,展示了如何进行区间索引,如通过interval_range创建区间,使用cut函数将数值列转换为区间类型,并进行区间选择。此外,还演示了如何处理区间索引的重叠判断。布尔索引和区间选择是Pandas数据处理中的重要技巧。
摘要由CSDN通过智能技术生成

布尔索引:
常说的根据某行某列的元素判断是否保留该列或行,

  • 布尔符号:’&’,’|’,’~’:分别代表和and,或or,取反not
df[(df['Gender']=='F')&(df['Address']=='street_2')]
df[(df['Math']>85)|(df['Address']=='street_7')]
df[~((df['Math']>75)|(df['Address']=='street_1'))]
#loc和[]中相应位置都能使用布尔列表选择:
df.loc[df['Math']>60,df.columns=='Physics']

  • isin方法
df[df['Address'].isin(['street_1','street_4'])&df['Physics'].isin(['A','A+'])]
#上面也可以用字典方式写:
df[df[['Address','Physics']].isin({'Address':['street_1','street_4'],'Physics':['A','A+']}).all(1)]
#all与&的思路是类似的,其中的1代表按照跨列方向判断是否全为True
  • 选取一个元素
display(df.at[1101,'School'])
display(df.loc[1101,'School'])
display(df.iat[0,0])
display(df.iloc[0,0])
  • 区间索引
    利用interval_range方法产生区间
pd.interval_range(start=0,end=5)
#closed参数可选'left''right''both''neither',默认左开右闭
pd.interval_range(start=0,periods=8,freq=5)
#periods参数控制区间个数,freq控制步长

利用cut将数值列转为区间为元素的分类变量

math_interval = pd.cut(df['Math'],bins=[0,40,60,80,100])
#注意,如果没有类型转换,此时并不是区间类型,而是category类型
math_interval.head()
  • 区间索引的选取
df_i = df.join(math_interval,rsuffix='_interval')[['Math','Math_interval']]\
            .reset_index().set_index('Math_interval')
df_i.head()
#先生成一个索引值为区间的df
df_i.loc[65]
#包含该值就会被选中
df_i.loc[[65,90]]
#包含其中一个就会被选中

如果想要选取某个区间,先要把分类变量转为区间变量,再使用overlap方法


#df_i.loc[pd.Interval(70,75)]报错
df_i[df_i.index.astype('interval').overlaps(pd.Interval(70, 85))]
#Interval.overlaps()检查两个区间有无重叠,返回布尔值
#pd.Interval构造区间,默认左闭右开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值