pythonPython编程处理 “评价”和“适用场所”字段: – “评价”字段的数据包含混合的中文和数字,末尾有一个“+”号,将其转为数值形式。即将类似“1.9万+”格式的“评价”字 段的值转换为“19000”; – “适用场所”分解为“旅行”、“其他”、“约会”、“情趣”等8个字段,其类型是0和1;
时间: 2023-07-27 21:05:48 浏览: 102
可以使用Python的正则表达式re模块来处理评价字段的数据,代码如下:
```python
import re
eval_str = "1.9万+"
eval_num = int(float(re.findall(r"\d+\.?\d*", eval_str)[0]) * 10000)
print(eval_num)
```
输出结果为:19000
对于适用场所字段,可以先创建一个包含8个字段的字典,然后根据特定场所的关键词进行匹配,并将对应位置的值设为1。代码如下:
```python
place_str = "旅行·约会·情趣"
place_dict = {
"旅行": 0,
"其他": 0,
"约会": 0,
"情趣": 0,
"商务": 0,
"休闲": 0,
"运动": 0,
"学习": 0
}
keywords = ["旅行", "约会", "情趣", "商务", "休闲", "运动", "学习"]
for keyword in keywords:
if keyword in place_str:
place_dict[keyword] = 1
print(place_dict)
```
输出结果为:
```python
{'旅行': 1, '其他': 0, '约会': 1, '情趣': 1, '商务': 0, '休闲': 0, '运动': 0, '学习': 0}
```
相关问题
”评价”字段的数据包含混合的中文和数字,末尾有一个“+”号,请将评价数量转换为数值
Python代码示例:
```python
evaluation = "好评率 98%"
evaluation_count = int(evaluation.split(" ")[-1][:-1])
print(evaluation_count)
```
输出结果:
```
98
```
解释:
首先使用 `split()` 方法将评价字符串以空格为分隔符拆分成列表,取最后一个元素即评价数量所在的字符串,再使用切片操作去掉末尾的百分号,最后使用 `int()` 函数将字符串转换成整数类型。
以香水案例数据为例,结合业务理解,用Python完成如下任务。 (1)”评价”字段的数据包含混合的中文和数字,末尾有一个“+”号,请将评价数量转换为数值
并去掉末尾的空格。(2)将“价格”字段中的金额转换为浮点数。(3)将“品牌”字段中的所有字母转换为大写字母。(4)将“评分”字段中的数字提取出来并转换为浮点数。(5)将“评价标签”字段中的中文分词并去除停用词。最后输出处理后的数据。
```python
import pandas as pd
import jieba
from jieba import posseg
import re
import nltk
from nltk.corpus import stopwords
# 加载停用词表
nltk.download('stopwords')
stop_words = set(stopwords.words('chinese'))
# 读取数据
data = pd.read_csv('perfume.csv')
# 将“评价”字段中的数字提取出来并转换为数值类型
data['评价'] = data['评价'].apply(lambda x: float(re.findall(r'\d+', x)[0]))
# 将“价格”字段中的金额转换为浮点数
data['价格'] = data['价格'].apply(lambda x: float(re.findall(r'\d+\.?\d*', x)[0]))
# 将“品牌”字段中的所有字母转换为大写字母
data['品牌'] = data['品牌'].apply(lambda x: x.upper())
# 将“评分”字段中的数字提取出来并转换为浮点数
data['评分'] = data['评分'].apply(lambda x: float(re.findall(r'\d+\.?\d*', x)[0]))
# 将“评价标签”字段中的中文分词并去除停用词
data['评价标签'] = data['评价标签'].apply(lambda x: ' '.join([word for word, flag in posseg.cut(x) if word not in stop_words]))
# 输出处理后的数据
print(data.head())
```