欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-19 09:16:49
【项目01】 商铺数据加载及存储作业要求:1、成功读取“商铺数据.csv”文件2、解析数据,存成列表字典格式:[{‘var1’:value1,‘var2’:value2,‘var3’:values,…},…,{}]3、数据清洗:① comment,price两个字段清洗成数字② 清除字段缺失的数据③ commentlist拆分成三个字段,并且清洗成数字4、结果存为.pkl文件源数据格式1、读取数据# 设置路径,方式,编码f=open('C:/Users/Away/Desktop/...

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

作业要求:

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

源数据格式

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

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、数据清洗和排除缺失数据

整体思路:
对不同的字段的处理写对应函数,对于缺失数据给统一标记最后一起处理
荐
                                                        【python数据分析】—练习01商铺数据清洗
荐
                                                        【python数据分析】—练习01商铺数据清洗
荐
                                                        【python数据分析】—练习01商铺数据清洗

#处理点评条数
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