当前位置:首页 > 科技  > 软件

Pandas中选择和过滤数据的终极指南

来源: 责编: 时间:2023-11-30 17:30:30 367观看
导读Python pandas库提供了几种选择和过滤数据的方法,如loc、iloc、[]括号操作符、query、isin、between等等本文将介绍使用pandas进行数据选择和过滤的基本技术和函数。无论是需要提取特定的行或列,还是需要应用条件过滤,pa

Python pandas库提供了几种选择和过滤数据的方法,如loc、iloc、[]括号操作符、query、isin、between等等u8M28资讯网——每日最新资讯28at.com

本文将介绍使用pandas进行数据选择和过滤的基本技术和函数。无论是需要提取特定的行或列,还是需要应用条件过滤,pandas都可以满足需求。u8M28资讯网——每日最新资讯28at.com

u8M28资讯网——每日最新资讯28at.com

选择列

loc[]:根据标签选择行和列。df.row_label loc, column_label]u8M28资讯网——每日最新资讯28at.com

也可以使用loc进行切片操作:u8M28资讯网——每日最新资讯28at.com

df.loc['row1_label':'row2_label' , 'column1_label':'column2_label']u8M28资讯网——每日最新资讯28at.com

例如u8M28资讯网——每日最新资讯28at.com

# Using loc for label-based selection df.loc[:, 'Customer Country':'Customer State']

u8M28资讯网——每日最新资讯28at.com

# Using loc for label-based selection df.loc[[0,1,2], 'Customer Country':'Customer State']

u8M28资讯网——每日最新资讯28at.com

iloc[]:根据位置索引选择行和列。df.iloc [row_position column_position]u8M28资讯网——每日最新资讯28at.com

可以使用iloc进行切片操作:u8M28资讯网——每日最新资讯28at.com

df.iloc['row1_position':'row2_position','col1_position':'col2_position']

例如:u8M28资讯网——每日最新资讯28at.com

# Using iloc for index-based selection df.iloc[[0,1,2,3] , [3,4,5,6,7,8]]  # or df.iloc[[0,1,2,3] , 3:9]

u8M28资讯网——每日最新资讯28at.com

# Using iloc for index-based selection df.iloc[:, 3:8]

u8M28资讯网——每日最新资讯28at.com

[]括号操作符:它允许选择一个或多个列。df[['column_label']]或df[['column1', 'column2']]]u8M28资讯网——每日最新资讯28at.com

# Selecting a single column df[['Customer Country']]

u8M28资讯网——每日最新资讯28at.com

# Selecting multiple columns df[['Customer Country', 'Customer State']]

u8M28资讯网——每日最新资讯28at.com

过滤行

loc[]:按标签过滤行。df.loc(条件)u8M28资讯网——每日最新资讯28at.com

# Using loc for filtering rows condition = df['Order Quantity'] > 3 df.loc[condition]  # or df.loc[df['Order Quantity'] > 3]

u8M28资讯网——每日最新资讯28at.com

# Using loc for filtering rows df.loc[df['Customer Country'] == 'United States']

u8M28资讯网——每日最新资讯28at.com

iloc():按位置索引筛选行。u8M28资讯网——每日最新资讯28at.com

# Using iloc for filtering rows df.iloc[[0, 2, 4]]

u8M28资讯网——每日最新资讯28at.com

# Using iloc for filtering rows df.iloc[:3, :2]

u8M28资讯网——每日最新资讯28at.com

[]括号操作符:它允许根据条件过滤行。df(条件)u8M28资讯网——每日最新资讯28at.com

# Using [] bracket operator for filtering rows# Using [] bracket operator for filtering rows condition = df['Order Quantity'] > 3 df[condition]  # or df[df['Order Quantity'] > 3]

u8M28资讯网——每日最新资讯28at.com

isin([]):基于列表过滤数据。df (df (column_name”).isin ([value1, ' value2 ']))u8M28资讯网——每日最新资讯28at.com

# Using isin for filtering rows df[df['Customer Country'].isin(['United States', 'Puerto Rico'])]

u8M28资讯网——每日最新资讯28at.com

# Filter rows based on values in a list and select spesific columns df[["Customer Id", "Order Region"]][df['Order Region'].isin(['Central America', 'Caribbean'])]

u8M28资讯网——每日最新资讯28at.com

# Using NOT isin for filtering rows df[~df['Customer Country'].isin(['United States'])]

u8M28资讯网——每日最新资讯28at.com

query():方法用于根据类似sql的条件表达式选择数据。df.query(条件)u8M28资讯网——每日最新资讯28at.com

如果列名包含空格或特殊字符,首先应该使用rename()函数来重命名它们。u8M28资讯网——每日最新资讯28at.com

# Rename the columns before performing the query df.rename(columns={'Order Quantity' : 'Order_Quantity', "Customer Fname" : "Customer_Fname"}, inplace=True)  # Using query for filtering rows with a single condition df.query('Order_Quantity > 3')

u8M28资讯网——每日最新资讯28at.com

# Using query for filtering rows with multiple conditions df.query('Order_Quantity > 3 and Customer_Fname == "Mary"')

u8M28资讯网——每日最新资讯28at.com

between():根据在指定范围内的值筛选行。df[df['column_name'].between(start, end)]u8M28资讯网——每日最新资讯28at.com

# Filter rows based on values within a range df[df['Order Quantity'].between(3, 5)]

u8M28资讯网——每日最新资讯28at.com

字符串方法:根据字符串匹配条件筛选行。例如str.startswith(), str.endswith(), str.contains()u8M28资讯网——每日最新资讯28at.com

# Using str.startswith() for filtering rows df[df['Category Name'].str.startswith('Cardio')]

u8M28资讯网——每日最新资讯28at.com

# Using str.contains() for filtering rows df[df['Customer Segment'].str.contains('Office')]

u8M28资讯网——每日最新资讯28at.com

更新值

loc[]:可以为DataFrame中的特定行和列并分配新值。u8M28资讯网——每日最新资讯28at.com

# Update values in a column based on a condition df.loc[df['Customer Country'] == 'United States', 'Customer Country'] = 'USA'

u8M28资讯网——每日最新资讯28at.com

iloc[]:也可以为DataFrame中的特定行和列并分配新值,但是他的条件是数字索引u8M28资讯网——每日最新资讯28at.com

# Update values in a column based on a condition df.iloc[df['Order Quantity'] > 3, 15] = 'greater than 3'  # condition = df['Order Quantity'] > 3 df.iloc[condition, 15] = 'greater than 3'

u8M28资讯网——每日最新资讯28at.com

replace():用新值替换DataFrame中的特定值。df.['column_name'].replace(old_value, new_value, inplace=True)u8M28资讯网——每日最新资讯28at.com

# Replace specific values in a column df['Order Quantity'].replace(5, 'equals 5', inplace=True)

u8M28资讯网——每日最新资讯28at.com

总结

Python pandas提供了很多的函数和技术来选择和过滤DataFrame中的数据。比如我们常用的 loc和iloc,有很多人还不清楚这两个的区别,其实它们很简单,在Pandas中前面带i的都是使用索引数值来访问的,例如 loc和iloc,at和iat,它们访问的效率是类似的,只不过是方法不一样,我们这里在使用loc和iloc为例做一个简单的说明:u8M28资讯网——每日最新资讯28at.com

loc:根据标签(label)索引,什么是标签呢?u8M28资讯网——每日最新资讯28at.com

行标签就是我们所说的索引(index),列标签就是列名(columns)u8M28资讯网——每日最新资讯28at.com

iloc,根据标签的位置索引。u8M28资讯网——每日最新资讯28at.com

iloc就是 integer loc的缩写。也就是说我们不知道列名的时候可以直接访问的第几行,第几列u8M28资讯网——每日最新资讯28at.com

这样解释应该可以很好理解这两个的区别了。最后如果你看以前(很久以前)的代码可能还会看到ix,它是先于iloc、和loc的。但是现在基本上用iloc和loc已经完全能取代ix,所以ix已经被官方弃用了。如果有看到的话说明这个代码已经很好了,并且完全可以使用iloc替代。u8M28资讯网——每日最新资讯28at.com

最后,通过灵活本文介绍的这些方法,可以更高效地处理和分析数据集,从而更好地理解和挖掘数据的潜在信息。希望这个指南能够帮助你在数据科学的旅程中取得更大的成功!u8M28资讯网——每日最新资讯28at.com


u8M28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-35559-0.htmlPandas中选择和过滤数据的终极指南

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Python文件操作:高效处理文件的技巧

下一篇: 快速入门 Python sympy 库:解决数学难题从此不再困扰!

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • iQOO Neo8系列或定档5月23日:首发天玑9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
Top