数据常见的提取和筛选方法

news2024/7/6 19:43:37

    平时对于一些不标准的数据,需要提取或者筛选其中的部分数据。本文主要分享一些常用的办法,同时也作为一个笔记的备份。

1. 正则表达式

    正则表达式比较适合提取有明确类型的数据,比如字母,数字,汉字,日期等,同时也可以提取具有一定规律特征的数据。常见的用法如下:

import re

text = '2023-11-01,AAaa产品净值上涨1%,详细内容见《产品周报》'
# 提取数字
get_num = re.findall(r'\d+', text)
# 提取汉字
get_chinese = re.findall(r'[\u4e00-\u9fa5]+', text)
# 提取字母,不区分大小写
get_letter = re.findall(r'[a-zA-Z]', text)
# 提取日期
get_date = re.search(r'\d{4}-\d{2}-\d{2}', text)[0]
# 提取指定部分--使用'(.*?)?'表示需查找部分
find_str = '《(.*?)》'
get_part = re.findall(find_str, text)

2. 分割提取

   分割提取是根据数据的某个标志,将数据切割为列表,然后载提取相关的数据,常见函数为split.

name = '20230101-举例asd基金(000001)-三级估值表.xlsx'

    如上,name是一个基金的估值表文件,需要提取的字符为‘举例asd基金’,如果使用正则表达式也可以获取(先提取不同类型的数据,然后再进行拼接),但是步骤比较繁琐,同时泛化能力不强。因此,需要使用其他办法。

   第一步,通过‘-’进行切割,可以得到一个列表(含三个元素):

first = name.split('-')
print(first)

  对应的结果是:

  接下来,取first里面的第二个元素,然后通过‘(’ ,进行切割,得到一个新列表,新列表的第一个元素就是所需字符。

second = first[1].split('(')[0]
print(second)

   对应的结果为:

3.模糊匹配

   可能出现相关数据与需求并非一对一的情形,可以考虑退求其次,使用模糊匹配来进行提取。

import pandas as pd
df = pd.DataFrame({'名称':['xx-举例如何1号基金','随意取名2号基金','举例随心1号基金','xx-随意命名1号基金']})

    如上,需要筛选出名称里面含有‘举例’二字的基金。使用正则和分割均难以实现。因此考虑使用是否包含的思路(如果是单一字符串循环,则使用‘in’来判断):

new_df = df.loc[df['名称'].str.contains('举例')]

对应的结果:

   还是上述的例子,如果需要匹配的字段为‘随心1号’,前文的办法就行不通了。这个情况下可以使用fuzz来匹配。

from fuzzywuzzy import fuzz
print(fuzz.ratio('举例随心1号基金','随心1号'))

   fuzz.ratio输出两个字符串的相似度(按字符串顺序),上述代码对应结果为67,即'举例随心1号基金'和'随心1号'有67%的相似度。依照此方法,可以计算df['名称']的数据与‘随心1号’的相似度,取出满足相似度(大于50%)的数据:

for name in df['名称']:
    rate = fuzz.ratio(name,'随心1号')
    if rate>=50:
        print('匹配字段为:{},相似度为{},符合条件!'.format(name,rate))
    else:
        print('匹配字段为:{},相似度为{},不符合条件!'.format(name,rate))

  对应的结果为:

  关于每种方式,还有许多功能,此处只分享一些常见功能,有需求者可进一步探索。

  本期分享结束,有何问题欢迎交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1312648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从GitHub下载的Android Studio项目,在较新版本AS打开出现版本不兼容问题的解决方法。

在GitHub下载了一个Android Studio计算器项目,打开项目后出现一系列问题,本文简单记录出现的问题及解决方法。 1、Gradle安装目录的路径出现错误 问题描述:The specified Gradle installation directory G:\Android\Android Studio\gradle\…

【腾讯云 HAI 域探秘】释放生产力:基于 HAI 打造团队专属的 AI 编程助手

文章目录 前言一、HAI 产品介绍二、HAI 应用场景介绍三、HAI 生产力场景探索:基于 HAI 打造团队专属的 AI 编程助手3.1 申请 HAI 内测资格3.2 购买 HAI 实例3.3 下载 CodeShell-7B-Chat 模型3.4 部署 text-generation-inference(TGI)推理服务3.4.1 下载 text-genera…

目标检测mAP计算以及coco评价标准

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 讲一下目标检测中的一些常见的指标 在我们使用目标检测网络训练时 最后在验证集上会得到一个coco的评价列表 就像我们图中给的这一系列参数列表一样 我们再进一步引入两个概念 第一个叫做precisi…

[已解决]HttpMessageNotReadableException: JSON parse error: Unexpected character:解析JSON时出现异常的问题分析与解决方案

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

标书明标的含义与制作要求

一、什么是标书明标? 在招投标过程中,标书明标是一种常见的招标方式,它是指招标人将招标文件公开进行公示,以吸引投标人参与竞标。在标书明标中,招标文件会明确列出项目的具体要求、投标人的资格条件、技术标准等&…

docker核心原理——unionfs、namespace、cgroup

docker 核心原理 docker的核心原理其实就是cgroupnamespaceunionfs 组合实现的隔离机制,资源控制等。 隔离机制 在容器进程启动之前重新挂载它的整个根⽬录“/”,⽤来为容器提供隔离后的执⾏环境⽂件系统通过Linux Namespace 创建隔离,决…

16--常用类和基础API--06

1、包装类 1.1 包装类概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作&#xff0c…

海思平台isp之ccm标定

文章目录 1、raw图采集2、ccm标定2.1、标定参数配置2.2、标定效果优化2.2.1、优化方式一2.2.2、优化方式二2.2.3、优化方式三1、raw图采集 raw图采集步骤及标准,请参考文章 《海思平台isp之ccm标定》。2、ccm标定 2.1、标定参数配置 (1)图像基本参数 (2)黑电平设置 (…

商业印刷市场分析:预计2029年将达到53004亿元

商业印刷技术显示了强大的生命力。电子商务的扩张性发展,传统的商务印刷行业也在逐渐的转型。中国印刷业已深度融入全球印刷加工产业链,为国际社会超过50个国家提供印刷包装服务。数据显示,中国印刷业对外加工贸易额已达842亿元。 商业印刷是…

Axure动态面板的使用

一. 动态面板 Axure动态面板是Axure RP软件中的一个功能模块,用于创建交互式原型和模拟应用程序的动态效果。它可以模拟用户在应用程序中的操作流程,并展示不同状态之间的变化,提供更真实的用户体验。通过创建不同的状态和添加交互效果&…

高分辨率台阶仪,精准掌控细节测量

什么是台阶仪? 台阶仪是一款超精密接触式微观轮廓测量仪,可以对微米和纳米结构进行膜厚和薄膜高度、表面形貌、表面波纹和表面粗糙度等的测量。 什么是台阶仪分辨率? 台阶仪分辨率是指在台阶仪的测量范围内,仪器能够精确分辨出的…

【Docker五】使用Harbor搭建Docker私有仓库

目录 一、harbor概述 1、harbor概念: 2、harbor的特性 3、harbor的组件: 二、harbor实验: 1、搭建harbor 2、远程主机使用docker-harbor: 3、镜像同步: 一、harbor概述 1、harbor概念: harbor&…

Linux 非阻塞网络IO模式

非阻塞网络IO模式介绍 当用户线程发起一个 read 操作后,并不需要等待,而是马上就得到了一个结果。如果结果是一个 error 时,它就知道数据还没有准备好,于是它可以再次发送 read 操作。一旦内核中的数据准备好了,并且又…

Tita集成无代码API:电商客服与营销系统的升级

API的力量:优化电商与客服系统的无代码集成解决方案 在数字化转型的时代,电商与客服系统的高效运作对于企业的成功至关重要。无代码API平台Tita为此提供了一站式解决方案,使企业在无需深入的代码开发工作的前提下,便能实现各种系…

安装2023最新版Java SE 21.0.1来开发Java应用程序

安装2023最新版Java SE 21.0.1来开发Java应用程序 Install the latest version of Java SE 21.01 to Develop Java Applications By JacksonML 本文简要介绍如何下载和安装2023年最新版Java Development Kit (简称JDK,即Java开发工具包标准版)21.0.1&…

互联网加竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…

编程性能调优方案

微信公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、字符串与集合性能优化 1.String 对象的实现 在 Java 语言中,Sun 公司的工程师们对 String 对象做了大量的优化,来节…

力扣 | 437. 路径总和 III

437. 路径总和 III mport java.util.ArrayList; import java.util.List;/*** int的取值范围&#xff1a;* -2^31 ~ 2^31-1* <p>* -2147483648 ~ 2147483647&#xff08;约等于10的9次方&#xff09;* <p>* long long的取值范围&#xff1a;* -2^63 ~ (2^63-1&…

gitee创建一个新仓库和提交代码到码云

gitee创建一个新的项目并提交到码云 新建一个仓库 填写创建基本信息 以这个新创建的仓库保存项目所有的代码 在IDEA中克隆这个项目 从版本控制中新建一个git项目 从码云成功克隆项目 创建微服务模块 创建第商品模块 以以上同样的步骤完成下面几个模块的创建 聚合总…

软考科目如何选择?

软考科目繁多&#xff0c;让许多学弟学妹感到困惑&#xff0c;不知道该选择哪个科目。以下是一些建议&#xff0c;可以根据个人实际需求选择备考的科目。 1、初级是可选的 软考初级非常简单&#xff0c;适合刚刚入门学习的朋友报考。对于一些有基础的朋友&#xff0c;建议直接…