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

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

3天内不再提示

Python工具pandas筛选数据的15个常用技巧

数据分析与开发 ? 来源:数据分析与开发 ? 作者:数据分析与开发 ? 2021-03-30 10:44 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

pandas是Python数据分析必备工具,它有强大的数据清洗能力,往往能用非常少的代码实现较复杂的数据处理

今天,总结了pandas筛选数据的15个常用技巧,主要包括5个知识点:

比较运算:==、《、》、》=、《=、!=

范围运算:between(left,right)

字符筛选:str.contains(pattern或字符串,na=False)

逻辑运算:&(与)、|(或)、not(取反)

比较函数:eq, ne, le, lt, ge, gt(相当于==,=!,《=,《,》=,》)

apply和isin函数

”下面以超市运营数据为例,给大家逐个讲解首先读取数据:

import pandas as pd

data=pd.read_excel(‘超市运营数据模板.xlsx’)

data

8820b96c-8e33-11eb-8b86-12bb97331649.png

先看一下各列的数据类型:

data.dtypes

商品ID int64

类别ID int64

门店编号 object

单价 float64

销量 float64

订单ID object

日期 datetime64[ns]

时间 object

dtype: object

下面以实际应用场景为例开始讲解:

1.筛选门店编号为‘CDXL’的运营数据①第一种方法,用比较运算符‘==’:

data[data.门店编号==‘CDXL’]

8bb1a37a-8e33-11eb-8b86-12bb97331649.png

②第二种方法,用比较函数‘eq’:

data[data[‘门店编号’].eq(‘CDXL’)]

8d57158e-8e33-11eb-8b86-12bb97331649.png

2.筛选单价小于等于10元的运营数据③第一种方法,用比较运算符‘《=’:

data[data.单价《=10]

90a6426e-8e33-11eb-8b86-12bb97331649.png

④第二种方法,用比较函数‘le’:

data[data[‘单价’].le(10)]

928adb4e-8e33-11eb-8b86-12bb97331649.png

3.筛选销量大于2000的运营数据⑤第一种方法,用比较运算符‘》=’:

data[data.销量》2]

92f569a0-8e33-11eb-8b86-12bb97331649.png

⑥第二种方法,用比较函数‘ge’:

data[data[‘销量’].ge(2)]

92f569a0-8e33-11eb-8b86-12bb97331649.png

4.筛选除门店‘CDXL’外的运营数据⑦第一种方法,用比较运算符‘!=’:

data[data.门店编号!=‘CDXL’]

9345c238-8e33-11eb-8b86-12bb97331649.png

⑧第二种方法,用比较函数‘ne’:

data[data[‘门店编号’].ne(‘CDXL’)]

9397ac38-8e33-11eb-8b86-12bb97331649.png

5.筛选2020年5月的运营数据首先将日期格式化:

data[‘日期’]=data[“日期”].values.astype(‘datetime64’) #如果已为日期格式则此步骤可省略

data[‘日期’]

import datetime

s_date = datetime.datetime.strptime(‘2020-04-30’, ‘%Y-%m-%d’).date() #起始日期

e_date = datetime.datetime.strptime(‘2020-06-01’, ‘%Y-%m-%d’).date() #结束日期

⑨第一种方法,用逻辑运算符号‘》’ ‘《’和‘&’:

Pandasdatetime64[ns]不能直接与datetime.date相比,需要用pd.Timestamp进行转化

data[(data.日期》pd.Timestamp(s_date))&(data.日期《pd.Timestamp(e_date))]

93dc75ca-8e33-11eb-8b86-12bb97331649.png

⑩第二种,用比较函数‘gt’‘lt’和‘&’:

data[(data[‘日期’].lt(pd.Timestamp(e_date)))&(data[‘日期’].gt(pd.Timestamp(s_date)))]

94be8c4e-8e33-11eb-8b86-12bb97331649.png

?第三种,用apply函数实现:

id_a=data.日期.apply(lambda x: x.year ==2020 and x.month==5)

data[id_a]

950240e2-8e33-11eb-8b86-12bb97331649.png

?第四种,用between函数实现:

id_b=data.日期.between(pd.Timestamp(s_date),pd.Timestamp(e_date))

data[id_b]

953ad6f0-8e33-11eb-8b86-12bb97331649.png

6.筛选“类别ID”包含‘000’的数据?第一种,用contains函数:

data[‘类别ID’]=data[‘类别ID’].values.astype(‘str’) #将该列转换为字符数据类型

id_c=data.类别ID.str.contains(‘000’,na=False)

data[id_c]

95c1ec76-8e33-11eb-8b86-12bb97331649.png

?第二种,用isin函数:

id_i=data.类别ID.isin([‘000’]) #接受一个列表

data[id_i]

很遗憾,isin函数搞不定,因为它只能判断该列中元素是否在列表中

7.筛选商品ID以“301”开头的运营数据?需要用contains函数结合正则表达式使用:

data[‘商品ID’]=data[‘商品ID’].values.astype(‘str’) #将该列转换为字符数据类型

id_c2=data.商品ID.str.contains(‘301d{5}’,na=False)

data[id_c2]

95c1ec76-8e33-11eb-8b86-12bb97331649.png

为了方便大家学习,我已经将本文数据及代码打包好,请关注 数据分析与开发 公众号在后台回复关键字:筛选数据 获取。

原文标题:一次性总结了pandas提取数据的15种方法,统统只需1行代码!

文章出处:【微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    2

    文章

    1474

    浏览量

    35218
  • python
    +关注

    关注

    56

    文章

    4832

    浏览量

    87758

原文标题:一次性总结了pandas提取数据的15种方法,统统只需1行代码!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三项目,包括简单的Python
    发表于 04-10 16:53

    ?如何在虚拟环境中使用 Python,提升你的开发体验~

    。RaspberryPiOS预装了Python3。干扰系统Python的安装可能会给你的操作系统带来问题。安装第三方Python库时,请务必使用正确的包管理工具。在Lin
    的头像 发表于 03-25 09:34 ?416次阅读
    ?如何在虚拟环境中使用 <b class='flag-5'>Python</b>,提升你的开发体验~

    OSS Nokalva:适用于Python的OSS NAS工具

    执行以下任务:编写软件来创建、处理、调试和测试 NAS 消息。在处理 3GPP 版本中的更改时,此任务特别耗时且容易出错。现在客户可以专注于他们的核心业务。 用于 Python 的 OSS NAS 工具
    的头像 发表于 02-09 09:16 ?523次阅读
    OSS Nokalva:适用于<b class='flag-5'>Python</b>的OSS NAS<b class='flag-5'>工具</b>

    使用Python实现xgboost教程

    使用Python实现XGBoost模型通常涉及以下几个步骤:数据准备、模型训练、模型评估和模型预测。以下是一详细的教程,指导你如何在Python中使用XGBoost。 1. 安装XG
    的头像 发表于 01-19 11:21 ?1479次阅读

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据

    和 MariaDB 数据库服务器以及托管数据库服务,以对存储的数据执行创建、读取、更新和删除操作。该解决方案完全实现了 Python DB API 2.0 规范,并作为 Window
    的头像 发表于 01-17 12:18 ?563次阅读
    适用于MySQL和MariaDB的<b class='flag-5'>Python</b>连接器:可靠的MySQL<b class='flag-5'>数据</b>连接器和<b class='flag-5'>数据</b>库

    如何进行元器件筛选

    电子元件的核心作用在电子设备中,电子元件扮演着基础而关键的角色,它们是电子通信、数据处理和自动化控制等技术领域的基石。筛选的必要性为了确保电子元件在其整个使用寿命内都能稳定工作,避免因元件本身的缺陷
    的头像 发表于 12-19 12:37 ?1061次阅读
    如何进行元器件<b class='flag-5'>筛选</b>?

    Kaggle知识点:使用大模型进行特征筛选

    数据科学数据挖掘的核心是是对海量数据进行有效的筛选和分析。传统上数据筛选依赖于
    的头像 发表于 12-03 01:06 ?1800次阅读
    Kaggle知识点:使用大模型进行特征<b class='flag-5'>筛选</b>

    使用Python进行串口通信的案例

    当然!以下是一使用Python进行串口通信的简单示例。这个示例展示了如何配置串口、发送数据以及接收数据。我们将使用 pyserial 库,这是一
    的头像 发表于 11-22 09:11 ?1627次阅读

    RAPIDS cuDF将pandas提速近150倍

    在 NVIDIA GTC 2024 上,NVIDIA 宣布,RAPIDS cuDF 当前已能够为 950 万 pandas 用户带来 GPU 加速,且无需修改代码。
    的头像 发表于 11-20 09:52 ?738次阅读
    RAPIDS cuDF将<b class='flag-5'>pandas</b>提速近150倍

    如何使用Python构建LSTM神经网络模型

    numpy tensorflow 2. 准备数据 LSTM模型通常用于序列数据,比如时间序列预测或文本生成。这里我们以一简单的时间序列预测为例。假
    的头像 发表于 11-13 10:10 ?1758次阅读

    Kali Linux常用工具介绍

    Kali Linux 虚拟机中自带了大量渗透测试工具,涵盖了信息收集、漏洞利用、口令破解、漏洞扫描等多个方面。 以下是按分类简要介绍一部分常用工具的使用方法: 使用方法只能当做参考,**详细
    的头像 发表于 11-11 09:29 ?1777次阅读

    使用Python进行图像处理

    下面是一关于使用Python在几行代码中分析城市轮廓线的快速教程。
    的头像 发表于 11-07 10:14 ?655次阅读
    使用<b class='flag-5'>Python</b>进行图像处理

    Python常用函数大全

    Python 世界里,有一些宝藏函数和模块,它们可以让你编程更轻松、代码更高效。这篇文章将带你一一认识这些神器,让你的开发生活瞬间轻松不少!
    的头像 发表于 10-27 17:20 ?1018次阅读

    常用的devops工具集成方法

    常用的devops工具集成方法涵盖了软件开发和运维的各个方面,从版本控制到自动化构建、测试、部署和监控。这些工具的有效集成可以帮助团队提高协作效率,减少沟通障碍,实现快速、高质量的软件交付。
    的头像 发表于 10-09 11:21 ?601次阅读

    电子产品方案开发公司常用15单片机经典电路分享!

    、成本低廉等优势,广泛应用于工业自动化、家电、通信、医疗设备等多个领域。英锐恩的技术工程师介绍电子产品方案开发公司常用15单片机经典电路图,供大家参考。 1、外部供电电源电路: 2、光耦: 3
    发表于 09-25 14:43