0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用pandas进行数据选择和过滤的基本技术和函数

冬至子 来源:思否AI 作者:思否AI 2023-12-01 10:14 次阅读

Python pandas库提供了几种选择和过滤数据的方法,如loc、iloc、[]括号操作符、query、isin、between等等

本文将介绍使用pandas进行数据选择和过滤的基本技术和函数。无论是需要提取特定的行或列,还是需要应用条件过滤,pandas都可以满足需求。

选择列

loc[]:根据标签选择行和列。df.row_label loc, column_label]

也可以使用loc进行切片操作:

df.loc['row1_label':'row2_label' , 'column1_label':'column2_label']

例如

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

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

iloc[]:根据位置索引选择行和列。df.iloc [row_position column_position]

可以使用iloc进行切片操作:

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

例如:

# 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]

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

[]括号操作符:它允许选择一个或多个列。df[['column_label']]或df[['column1', 'column2']]]

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

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

过滤行

loc[]:按标签过滤行。df.loc(条件)

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

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

iloc():按位置索引筛选行。

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

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

[]括号操作符:它允许根据条件过滤行。df(条件)

# 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]

isin([]):基于列表过滤数据。df (df (column_name”).isin ([value1, ' value2 ']))

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

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

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

query():方法用于根据类似sql的条件表达式选择数据。df.query(条件)

如果列名包含空格或特殊字符,首先应该使用rename()函数来重命名它们。

# 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')

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

between():根据在指定范围内的值筛选行。df[df['column_name'].between(start, end)]

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

字符串方法:根据字符串匹配条件筛选行。例如str.startswith(), str.endswith(), str.contains()

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

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

更新值

loc[]:可以为DataFrame中的特定行和列并分配新值。

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

iloc[]:也可以为DataFrame中的特定行和列并分配新值,但是他的条件是数字索引

# 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'

replace():用新值替换DataFrame中的特定值。df.['column_name'].replace(old_value, new_value, inplace=True)

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

总结

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

loc:根据标签(label)索引,什么是标签呢?

行标签就是我们所说的索引(index),列标签就是列名(columns)

iloc,根据标签的位置索引。

iloc就是 integer loc的缩写。也就是说我们不知道列名的时候可以直接访问的第几行,第几列

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

最后,通过灵活本文介绍的这些方法,可以更高效地处理和分析数据集,从而更好地理解和挖掘数据的潜在信息

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    738

    浏览量

    43466
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
收藏 人收藏

    评论

    相关推荐

    Python利用pandas读写Excel文件

    使用pandas模块读取Excel文件可以更为方便和快捷。pandas可以将Excel文件读取为一个DataFrame对象,方便进行数据处理和分析。
    的头像 发表于 12-16 11:22 603次阅读
    Python利用<b class='flag-5'>pandas</b>读写Excel文件

    mysql是根据哪些原则来进行数据类型选择的?

    mysql应该根据那些原则来进行数据类型的选择
    发表于 07-23 06:32

    pandas对babynames数据集的简单处理

    利用Python进行数据分析——第二章 引言(2):利用pandas对babynames数据进行简单处理
    发表于 08-09 12:58

    Pandas中的四种绘图函数

    数据可视化(三):Pandas中的绘图函数
    发表于 09-04 09:04

    pandas和seaborn绘图方法

    《利用Python进行数据分析》 92 使用pandas和seaborn绘图
    发表于 10-28 10:25

    pandas是什么?

    的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于
    发表于 07-14 07:48

    pandas是什么

    人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具
    发表于 08-09 07:39

    pandas使用步骤

    、使用步骤1.引入库2.读入数据总结前言STM32被广泛应用在控制领域,本此选用STM32F407进行电机实验,此单片机是基于arm-cortem4为核心。一、pandas是什么?示例:pan
    发表于 08-10 07:50

    pandas是什么?

    人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具
    发表于 01-12 07:53

    从Excel到Python-最常用的36个Pandas函数

    本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入、数据清洗、预处理,以及最常见的
    的头像 发表于 12-10 21:31 444次阅读

    盘点Pandas的100个常用函数

    分析过程中,必然要做一些数据的统计汇总工作,那么对于这一块的数据运算有哪些可用的函数可以帮助到我们呢?具体看如下几张表。 import pandas as pd import nump
    的头像 发表于 04-01 09:52 2356次阅读
    盘点<b class='flag-5'>Pandas</b>的100个常用<b class='flag-5'>函数</b>

    解读12 种 Numpy 和 Pandas 高效函数技巧

    本文分享给大家 12 种 Numpy 和 Pandas 函数,这些高效的函数会令数据分析更为容易、便捷。最后,读者也可以在 GitHub 项目中找到本文所用代码的 Jupyter No
    的头像 发表于 06-29 17:05 1320次阅读

    十种pandas数据编码的方法分享

    题主表示pandas用起来很乱,事实真的如此吗?本文就将先如何利用pandas行数据转换/编码的十种方案,最后再回答这个问题。
    的头像 发表于 05-10 15:33 1032次阅读

    盘点66个Pandas函数合集

    今天我们重新盘点66个Pandas函数合集,包括数据预览、数值数据操作、文本数据操作、行/列操作等等,涉及“
    的头像 发表于 10-30 09:58 532次阅读
    盘点66个<b class='flag-5'>Pandas</b><b class='flag-5'>函数</b>合集

    pandas中合并数据的5个函数

    今天借着这个机会,就为大家盘点一下pandas中合并数据的5个函数。 join join是基于索引的横向拼接,如果索引一致,直接横向拼接。如果索引不一致,则会用Nan值填充。 索引一致
    的头像 发表于 10-31 11:11 316次阅读
    <b class='flag-5'>pandas</b>中合并<b class='flag-5'>数据</b>的5个<b class='flag-5'>函数</b>