Python提取数值的技巧,让你的数据分析更精准

在进行数据分析的过程中,我们常常需要从一些非结构化的文本中提取有用的信息,这些信息可能是数值、日期、邮件地址等等。Python是一门功能强大的编程语言,它提供了很多在字符串中提取数值的方法,可以帮助我们快速而准确地从非结构化的文本中提取数值。本文将介绍几种常用的Python提取数值的技巧,让你的数据分析更加精准。

一、re模块匹配数字

Python内置的re模块可以帮助我们通过正则表达式来匹配字符串中的数字。

import re

text = "Python课程价格为¥1234.56"
pattern = r'\d+\.?\d*'
match = re.search(pattern, text)
if match:
    print("找到了:", match.group())
else:
    print("没有找到")

输出结果是:找到了:1234.56

上面的代码中,使用了正则表达式“ \d+\.?\d* ”来匹配字符串中的数字。其中“ \d ”表示匹配任意数字, “ + ” 表示匹配一个或多个数字, “ \.? ”表示匹配一个可选的小数点,这里的“ ? ”表示可选,即小数点不一定存在;“ \d* ”表示匹配0个或多个数字,用于匹配整数部分和小数部分。通过re.search()函数来查找字符串中是否有符合要求的数字,并使用group()函数返回匹配到的数字。

二、使用split()分割字符串

如果字符串中含有多个数值,我们可以通过split()函数来将字符串分割成一个列表,然后再提取其中的数值。

text = "Python课程价格为¥1234.56, Java课程价格为¥2345.67"
price_str = text.split("¥")[1:]
price_list = [float(i.split(",")[0]) for i in price_str]
print(price_list)

输出结果是:[1234.56, 2345.67]

上面的代码中,首先将字符串以“ ¥ ”为分割符,分割成一个列表。其中[1:]表示只对“ ¥ ”后面的文本进行操作。接着对列表中的每个元素再按照“ , ”进行分割,取第一个元素,并将其转换成浮点数。最后将所有的浮点数存储在一个列表中。

三、使用pandas库中的str.extract()方法

除了使用re模块和split()函数之外,使用pandas库中的str.extract()方法也可以帮助我们提取字符串中的数值。

import pandas as pd

text = "Python课程价格为¥1234.56, Java课程价格为¥2345.67"
df = pd.DataFrame({'text': [text]})
df['price'] = df['text'].str.extract(r"\¥(\d+\.\d+)", expand=False).astype(float)
print(df['price'])

输出结果是:0 1234.56
Name: price, dtype: float64

上面的代码中,首先创建了一个带有文本数据的DataFrame数据框,然后使用str.extract()方法,提取出字符串中的数值。其中“ \¥(\d+\.\d+) ”表示匹配以“ ¥ ”开头,后面是一个或多个数字,接着是一个小数点,再接着是一个或多个数字。通过 .astype(float) 转换成浮点数,最后存储在一个新的列“ price ”中。

四、使用pandas库中的str.findall()方法

另外,pandas库中还有一个findall()方法,可以在每个匹配的字符串中查找并返回所有的特定字符串。

text = "宝贝重5.7kg,长70cm"
weight = pd.Series(text.split()).str.findall("\d+\.\d+kg").str[0].replace("kg", "").astype(float)
length = pd.Series(text.split()).str.findall("\d+cm").str[0].replace("cm", "").astype(float)
print("宝贝重{0}kg,长{1}cm".format(weight.values[0], length.values[0]))

输出结果是:宝贝重5.7kg,长70.0cm

上面的代码中,首先将文本数据以空格为分割符进行分割,并使用findall()函数查找匹配的字符串。其中“ \d+\.\d+kg ”表示匹配以数字开头,接着是一个小数点,再接着是一个“ kg ”结尾的字符串,用于匹配宝贝的重量;“ \d+cm ”表示匹配以数字开头,接着是一个“ cm ”结尾的字符串,用于匹配宝贝的身长。最后使用replace()函数将字符串中的“ kg ”和“ cm ”替换为空格,再使用astype(float)函数将数值转换成浮点数,并存储在一个新的变量中。

五、结语

本文介绍了几种常用的Python提取数值的技巧,即使用re模块匹配数字、使用split()函数分割字符串、使用pandas库中的str.extract()方法、以及使用pandas库中的str.findall()方法。这些技巧可以帮助我们快速、准确地从非结构化的文本中提取数值,为数据分析提供更为精准的数据支持。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/153554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-14 03:07
下一篇 2024-11-14 03:07

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • 掌握magic-api item.import,为你的项目注入灵魂

    你是否曾经想要导入一个模块,但却不知道如何实现?又或者,你是否在使用magic-api时遇到了无法导入的问题?那么,你来到了正确的地方。在本文中,我们将详细阐述magic-api的…

    编程 2025-04-29
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • Codemaid插件——让你的代码优美整洁

    你是否曾为了混杂在代码里的冗余空格、重复代码而感到烦恼?你是否曾因为代码缺少注释而陷入困境?为了解决这些问题,今天我要为大家推荐一款Visual Studio扩展插件——Codem…

    编程 2025-04-28
  • diff函数是否能够实现数值求导?

    答案是可以的。下面将从数学原理、实现过程和可行性三个方面对此进行详细阐述。 一、数学原理 求导的定义是函数在某一点的变化率,也即在该点处的斜率。而数值求导便是使用有限差分近似求解该…

    编程 2025-04-28
  • Navicat导出字段识别为文本而不是数值

    解决方法:使用特定的代码将导出的字段识别为文本,而不是数值,下面将从多个方面进行详细阐述。 一、ASCII码转换 在导出的文件中,将数值字段使用ASCII码转换,即可让这些字段被识…

    编程 2025-04-28
  • 堆叠图配色技巧分享

    堆叠图是数据可视化中常用的一种表现形式,而配色则是影响堆叠图观感和传达信息的重要因素之一。本文将分享一些堆叠图配色的技巧,帮助你创造更好的数据可视化。 一、色彩搭配原则 色彩是我们…

    编程 2025-04-27
  • 使用uring_cmd提高开发效率的技巧

    对于编程开发工程师来说,提高效率一直是致力追求的目标。本文将深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一个非常强大的命令行工具,但是大部…

    编程 2025-04-27
  • Python左补0,让你的数据更美观

    本文将从以下几个方面,详细阐述Python左补0的作用及使用方法: 一、什么是Python左补0 在Python中,数据在输出时如果希望达到一定的美观效果,就需要对数字进行左补0,…

    编程 2025-04-27

发表回复

登录后才能评论