1.Pandas应用 文本处理

  • 导入测试数据
import pandas as pd 
inspection = pd.read_csv('chicago_food_inspections.csv')

在这里插入图片描述
使用Series对象的str属性处理字符串

1.去除文本头尾的空格

# 去除头尾空格
inspection["Name"].str.strip()
# 去除左边的空格l
inspection["Name"].str.lstrip()
# 去除右边的空格
inspection["Name"].str.rstrip()

将处理好的字符串重新赋值给Name列

# 将处理好的字符串重新赋值给Name列
inspection["Name"] = inspection["Name"].str.strip()

遇到有很对列需要重新赋值的情况,可以使用colunms属性进行遍历处理

inspection.columns

输出:Index([‘Name’, ‘Risk’], dtype=‘object’)

# 对所有的列遍历
for col in inspection.columns:
    print(col)
    inspection[col] = inspection[col].str.strip()

在这里插入图片描述
2.字符串转大写、转小写、首字母大写、单词首字母大写

# 字符串转大写、转小写、首字母大写、单词首字母大写
inspection['Name'].str.upper().head()
inspection['Name'].str.lower().head()
inspection['Name'].str.capitalize().head()
inspection['Name'].str.title().head()
  1. 字符串切片操作
# 清洗Risk列数据, 只包含 'Risk 1 (High)', 'Risk 2 (Medium)', 'Risk 3 (Low)','Risk 4(Extreme)'
inspection = inspection.dropna(subset=['Risk'])
inspection['Risk'] = inspection['Risk'].str.replace('All', 'Risk 4(Extreme)')
inspection['Risk'].unique()

在这里插入图片描述
在这里插入图片描述

# 提取风险等级,以下2种写法等效
inspection['Risk'].str.slice(5,6).head()
inspection['Risk'].str[5:6].head()

在这里插入图片描述

# 提取风险描述,以下2种写法等效
inspection['Risk'].str.slice(8,-1).head()
inspection['Risk'].str[8:-1].head()

在这里插入图片描述

切片用法跟python的切片用法相同。

  1. 文本筛选
    文本包含,使用str.contains()方法
has_pizza = inspection['Name'].str.lower().str.contains('pizza')
inspection[has_pizza]

在这里插入图片描述
文本位于开头、结尾,使用str.startswith()、str.endswith()方法

start_with_tacos = inspection['Name'].str.lower().str.startswith('tacos')
inspection[start_with_tacos]

end_with_inc = inspection['Name'].str.lower().str.endswith('INC.'.lower())
inspection[end_with_inc]

在这里插入图片描述
在这里插入图片描述
5. 文本拆分
文本拆分,使用str.split()方法

inspection['Risk'].str.split(' ').head()

在这里插入图片描述

# n字段 表示最大拆分次数,可以看到两者的区别
inspection['Risk'].str.split(' ', n=1).head()

在这里插入图片描述

# expand字段 =True  返回的是一个DataFrame类型数据
inspection['Risk'].str.split(' ',expand=True).head()

在这里插入图片描述

想要提取前文的风险等级,可以使用str.get()方法

# 提取前文的风险等级,使用str.get(n)方法
inspection['Risk'].str.split(' ').str.get(1)

![(https://img-blog.csdnimg.cn/1e1fddf4a57a485c99c497c39a7e3fef.png)
小扩展:将风险描述加到原数据中

df_r = inspection['Risk'].str.split(" ", expand=True)
inspection['Risk desc'] = df_r[2]

在这里插入图片描述
这里有一个警告:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
解决方法:

inspection.loc[:, 'Risk desc'] = df_r[2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值