TypechoJoeTheme

至尊技术网

登录
用户名
密码

Pandas实战:巧解混合文本与数字列的清洗难题

2025-12-15
/
0 评论
/
3 阅读
/
正在检测是否收录...
12/15

正文:

在日常数据分析中,我们常会遇到这样的数据列:"营收235万元"、"同比增长12.5%"、"库存量3,245件"。这类混合了文本和数字的数据,往往让新手数据分析师手足无措。今天我们就用Pandas拆解这个"硬骨头"。

首先看典型场景——电商订单数据中的价格列:


import pandas as pd
raw_data = {
    '商品': ['手机', '笔记本', '耳机'],
    '价格': ['¥3999', '优惠价6899', '活动价¥299']
}
df = pd.DataFrame(raw_data)

方案一:str.extract()正则提取法


# 提取价格数字(含小数和千分位分隔符)
df['价格'] = df['价格'].str.extract(r'(\d+[,.]?\d*)').astype(float)

但现实往往更复杂。比如处理带有单位的测量数据:


measures = ["15.6cm", "20mm", "1.2m"]
s = pd.Series(measures)

# 同时提取数值和单位
extracted = s.str.extract(r'(\d+\.?\d*)([cm]?m)')

进阶技巧:使用pd.eval()处理计算表达式


calc_col = ["3*1500", "2000+500", "9800/2"]
df['计算结果'] = pd.eval(df['计算列'])

当遇到多语言混合时,需注意编码问题:


multi_lang = ["USD$99", "€85", "JPY¥12000"]
df['货币'] = df['金额'].str.extract(r'([$€¥£])')
df['金额'] = df['金额'].str.extract(r'(\d+)').astype(float)

最后分享一个处理百分比的高效方法:


percent_col = ["增长15%", "下降3.2%", "持平0%"]
df['变化率'] = df['百分比列'].str.extract(r'(\d+\.?\d*)').astype(float)/100

实际项目中,建议先抽样检查数据模式,再编写处理逻辑。对于超大数据集,可以考虑使用Dask替代Pandas进行分布式处理。记住,好的数据清洗能为后续分析节省80%的时间成本。

Python正则表达式数据预处理Pandas数据处理文本清洗
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/41447/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云