当前位置: 移动技术网 > IT编程>脚本编程>Python > 荐 【python数据分析】—练习01商铺数据清洗

荐 【python数据分析】—练习01商铺数据清洗

2020年07月12日  | 移动技术网IT编程  | 我要评论

【项目01】 商铺数据加载及存储

作业要求:

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

源数据格式

在这里插入图片描述

1、读取数据
# 设置路径,方式,编码
f=open('C:/Users/Away/Desktop/data/商铺数据.csv','r',encoding='utf8')
#前10行数据
for i in f.readlines()[:10]:
#     print(i.split(',')[-1])
#整体按照逗号划分,最后一个字段为commentlist,再将其按照空格划分成3个字段
    print(i.split(',')[-1].split('                                '))
f.seek(0)
2、数据清洗和排除缺失数据

整体思路:
对不同的字段的处理写对应函数,对于缺失数据给统一标记最后一起处理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#处理点评条数
def fcm(s):
    if '条' in s:
        return(int(s.split(' ')[0]))#按照空格划分后取第一个字段
    else:
        return('缺失数据')
#处理价格
def fpr(s):
    if '¥' in s:
        return(int(s.split('¥')[-1]))#按照货币符号划分,取最后的数字部分
    else:
        return('缺失数据')

评分数据的处理:首先判断是不是三个评分项都有,然后取到每一项的得分数值构成新的列表

def fcl(s):
    if len(s)==3:#如果这三个评分值完整
        quality = float(s[0][2:])#取第一个评分的数字部分
        envi = float(s[1][2:])
        service = float(s[2][2:])
        return([quality,envi,service])#返回新的列表
    else:
        return('缺失数据')

if len(s)==3:#如果这三个评分值完整

3、数据解析存储成字典格式

创建新的列表datalst,将处理后的数据排除缺失值存储进去

#2 解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]

datalst=[]#设置一个空的列表
n = 0 #计数
f.seek(0)

for i in f.readlines()[1:]:#读取整个数据表,第一行不要
    data = i.split(',')
    #print(data)
    classify = data[0]
#     print(classify)
    name = data[1]
    com_count = fcm(data[2])
    star = data[3]
    price = fpr(data[4])
    add = data[5]
    #最后一项划分成3个字段
    qua = fcl(data[-1].split('                                '))[0]
    env = fcl(data[-1].split('                                '))[1]
    service= fcl(data[-1].split('                                '))[2]
   # print(name)
    #print(com_comment)
    #print(price)
#     print(qua,star,service,env)
    #
    if '缺失数据' not in [com_comment,price,qua]:
        n +=1
        #键值对形式存储
        data_lst2 = [['classify',classify],
                     ['name',name],
                     ['comment_count',com_count],
                     ['star',star],
                     ['price',price],
                     ['address',add],
                     ['quality',qua],
                     ['environment',env],
                     ['service',service]
                    ]
  
        datalst.append(dict(data_lst2))#将列表转换成字典格式
        #print('成功读取第%i数据:'%n)
        #print(data_lst2)
    else:
        continue 
#关闭文件读取
f.close()
print(datalst)
print('总共加载%i条数据:'%n)

4存储成pkl文件格式

#pkl
import pickle
pic = open('C:/Users/Away/Desktop/data/data.pkl','wb')
pickle.dump(datalst,pic)
pic.close()
print('完成')

本文地址:https://blog.csdn.net/J358935/article/details/107272335

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网