Pandas进阶捌 文本处理

本文介绍了如何使用Pandas处理文本数据,包括通过正则表达式转换房屋信息数据集和《权力的游戏》剧本数据集。在房屋信息数据集中,涉及将列转换为整数年份,提取楼层信息,以及计算房屋每平米均价。在剧本数据集中,计算每个角色的台词单词数,找出单句台词平均单词量最多的前五人,以及统计回答最多问题的角色。文章强调了to_numeric和正则表达式的效率比较。
摘要由CSDN通过智能技术生成

Pandas进阶捌 文本处理

pandas进阶系列根据datawhale远昊大佬的joyful pandas教程写一些自己的心得和补充
本文部分引用了原教程,并参考了

另注:本文是对joyful pandas教程的延伸,完整理解需先阅读joyful pandas教程第八章

五、练习

Ex1:房屋信息数据集

现有一份房屋信息数据集如下:

  1. year列改为整数年份存储。
  2. floor列替换为Level, Highest两列,其中的元素分别为string类型的层类别(高层、中层、低层)与整数类型的最高层数。
  3. 计算房屋每平米的均价avg_price,以***元/平米的格式存储到表中,其中***为整数。
df = pd.read_excel('../data/house_info.xls', usecols=['floor','year','area','price'])
df.head()
floor year area price
0 高层(共6层) 1986年建 58.23㎡ 155万
1 中层(共20层) 2020年建 88㎡ 155万
2 低层(共28层) 2010年建 89.33㎡ 365万
3 低层(共20层) 2014年建 82㎡ 308万
4 高层(共1层) 2015年建 98㎡ 117万

【我的思路】

第一题和第二题都是通过正则挖出相应的内容即可

df.year = df.year.str.extract('(\d{1,4})')
df.head(2)
floor year area price
0 高层(共6层) 1986 58.23㎡ 155万
1 中层(共20层) 2020 88㎡ 155万
%timeit pd.to_numeric(df.year.str[:-2])
14.9 ms ± 1.18 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit df.year.str.extract('(\d{1,4})')
29 ms ± 7.51 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

这里将我的做法和答案对比了一下,发现答案用to_nermeric还是比正则要快很多的

df[['Level', 'Highest'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值