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/zh-hant/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

發表回復

登錄後才能評論