Python之商户数据加载及清洗存储

要求:

1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{‘var1’:value1,‘var2’:value2,‘var3’:values,…},…,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
4、结果存为.pkl文件

第二条和3.2(清除字段缺失的数据)的完成建立在3.1和3.3的基础之上,故此,先做3.1和3.2
一、数据清洗

import csv # 读取csv文件
import pickle # 写入.pkl

# 3.1清洗评论数据
def cleanComment(c):
    if '条' in c:
        return int(c.split()[0])
    else:
        return '缺失数据'

# 3.1清洗价格数据
def cleanPrice(p):
    if '¥' in p:
        return int(p.split('¥')[-1])
    else:
        return '缺失数据'

# 3.3清洗commentlist
def cleanCommentlist(cl):
    # 去除仅有空格的字符
    if ('' in cl) and (cl.__len__() > 1):
        taste = float(cl.split()[0][2:])
        environment = float(cl.split()[1][2:])
        service = float(cl.split()[2][2:])
        return [taste, environment, service]
    else:
        return '缺失数据'

二、“商铺数据.csv”文件处理

  1. 成功读取“商铺数据.csv”文件
  2. 解析数据,存成列表字典格式
  3. 清除字段缺失的数据
data_list = []  # 解析数据,存成列表字典
with open('D:\商户数据.csv', mode='r', encoding='UTF-8') as data:
    readers = list(csv.reader(data))
    header = readers[:1][0]  # 提取出表头
    content = readers[1:]  # 提取出数据内容
    # 清洗数据
    for con in content:
        commentCount = cleanComment(con[2])  # 提取评论数量
        perCapita = cleanPrice(con[4])  # 提取人均
        tasteMark = cleanCommentlist(con[6])[0]  # 提取口味评分
        environmentMark = cleanCommentlist(con[6])[1]  # 提取环境评分
        serviceMark = cleanCommentlist(con[6])[-1]  # 提取服务评分

        # 判断是否缺失数据
        if '缺失数据' not in [commentCount, perCapita, tasteMark]:
            dict_re = [
                [header[0], con[0]],  # 分类
                [header[1], con[1]],  # 店名
                [header[2], commentCount],  # 评论数量
                [header[3], con[3]],  # 星级
                [header[4], perCapita],  # 人均价格
                [header[5], con[5]],  # 地址
                ['taste_mark', tasteMark],  # 口味评分
                ['environment_mark', environmentMark],  # 环境评分
                ['service_mark', serviceMark]  # 服务评分
            ]

            data_list.append(dict(dict_re))  # 生成字典,并存入列表
        else:
            continue

三、存为.pkl文件
windows系统,斜杠方向只能是’/’,而不能是’’,否则会报错。其他的系统没有测试!

# 注意,输出的文件路径的斜杠方向
with open('D:/result.pkl', 'wb') as wb:
    pickle.dump(data_list, wb)
    print('完成!')

四、验证存储为pkl文件的效果

# 因为是二进制数据,读取使用'rb'
with open('D:/result.pkl', 'rb') as op:
    data = pickle.load(op)
    print(data)

读出的效果:

截取一段,看效果
[{’\ufeffclassify’: ‘美食’, ‘name’: ‘泰国街边料理’, ‘comment’: 74, ‘star’: ‘准四星商户’, ‘price’: 48, ‘address’: ‘黄兴路合生汇B2美食集市内’, ‘taste_mark’: 7.4, ‘environment_mark’: 7.6, ‘service_mark’: 7.4},
{’\ufeffclassify’: ‘美食’, ‘name’: ‘壹面如故(苏宁生活广场店)’, ‘comment’: 265, ‘star’: ‘准四星商户’, ‘price’: 21, ‘address’: ‘邯郸路585号苏宁生活广场B1层’, ‘taste_mark’: 7.0, ‘environment_mark’: 7.2, ‘service_mark’: 7.2},
{’\ufeffclassify’: ‘美食’, ‘name’: ‘鮨谷•Aburiya(合生汇店)’, ‘comment’: 2748, ‘star’: ‘准五星商户’, ‘price’: 142, ‘address’: ‘翔殷路1099号合生广场5楼23、28铺位’, ‘taste_mark’: 8.9, ‘environment_mark’: 8.5, ‘service_mark’: 8.4}]

(本文完!转载需说明出处,复本文链接!)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_函数_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值