以下案例用到的原数据文件欢迎大家到我的csdn下载https://download.csdn.net/download/weixin_40974922/11255740
'''
【项目01】 商铺数据加载及存储
作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:
[{'name':value1,'price':value2,'address':values3,'commentNum':values4,
'class':values5,'star':values6,'taste':values6,'environment':value7,'service':value8},...,{}]
注:数据处理尤其要弄清最终的输出格式,再进行编码 think twice,code once
如本题 外层【】内层{}
则制定方法 :
step1先创建listoflist【['name',value1],[]'price',value2],['address'....】
listofcouplist才能用于dict()
step2 dict(list)形成{'name':v1,"price":v2...}
step3 m=[] for循环+m.append(dic)形成最终结构
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
注数据清洗尤其观察数据有哪些错误情况,从而制定清洗方法
4、结果存为.pkl文件
'''
"\n【项目01】 商铺数据加载及存储\n\n作业要求:\n1、成功读取“商铺数据.csv”文件\n2、解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]\n3、数据清洗:\n① comment,price两个字段清洗成数字\n② 清除字段缺失的数据\n③ commentlist拆分成三个字段,并且清洗成数字\n4、结果存为.pkl文件\n\n"
#1读取数据
f=open(r'C:\Users\HASEE\Desktop\商铺数据.csv','r',encoding='utf8')
#print(f.readline())
#print(f.readline())
#print(f.readline())
#2编写数据清洗函数分别获得清洗后的标准化数据
def getCommentNum(s):
#清洗‘我要点评’(即无店铺信息)
if '条'not in s:
return '无效数据'
else:
return s.split(' ')[1]
def getPrice(s):
#清洗无价格数据
if'¥'not in s:
return'无效数据'
else:
return s.split('¥')[1]
def getScore(s):
#清理空score
if '.'not in s:
return'无效数据'
else:
ss=s.split(' ')
# print(ss)
taste=ss[0][2:]
#print(taste)
env=ss[1][2:]
# print(env)
ser=ss[2][2:-1]
return[taste,env,ser]
#3逐行读取数据,清洗数据,储存有效数据入lst1,并最终转换为listofdics m[]
m=[]
for i in f.readlines()[1:]:
if '无效数据'not in i:
s1 = i.split(',')
name=s1[0]
star=s1[3]
cn = getCommentNum(s1[2])
p = getPrice(s1[4])
c=s1[0]
ad=s1[1]
sc=getScore(s1[-1])
taste=sc[0]
env=sc[1]
ser=sc[2]
lst1=[['name',name],['price',p],['address',ad],['commentNum',cn],
['class',c],['star',star],['taste',taste],['environment',env],['service',ser]]
m.append(dict(lst1))
else:
continue
f.close()
#print(m[0:10])
#4、结果存为.pkl文件
import pickle
fout=open(r'C:\Users\HASEE\Desktop\newtest.txt','wb')
pickle.dump(m,fout)
fout.close()
print('finished')
[{'name': '美食', 'price': '125', 'address': '望蓉城老坛酸菜鱼(合生汇店)', 'commentNum': '无效数据', 'class': '美食', 'star': '该商户暂无星级', 'taste': '8.3', 'environment': '8.4', 'service': '8.5'}, {'name': '美食', 'price': '48', 'address': '泰国街边料理', 'commentNum': '条点评', 'class': '美食', 'star': '准四星商户', 'taste': '7.4', 'environment': '7.6', 'service': '7.4'}, {'name': '美食', 'price': '21', 'address': '壹面如故(苏宁生活广场店)', 'commentNum': '条点评', 'class': '美食', 'star': '准四星商户', 'taste': '7.0', 'environment': '7.2', 'service': '7.2'}, {'name': '美食', 'price': '142', 'address': '鮨谷•Aburiya(合生汇店)', 'commentNum': '条点评', 'class': '美食', 'star': '准五星商户', 'taste': '8.9', 'environment': '8.5', 'service': '8.4'}, {'name': '美食', 'price': '无效数据', 'address': '我们的烤肉我们的馕', 'commentNum': '条点评', 'class': '美食', 'star': '准四星商户', 'taste': '7.5', 'environment': '6.8', 'service': '7.5'}, {'name': '美食', 'price': '24', 'address': '麦当劳(万达店)', 'commentNum': '条点评', 'class': '美食', 'star': '准四星商户', 'taste': '7.4', 'environment': '7.2', 'service': '7.2'}, {'name': '美食', 'price': '70', 'address': '蒸年青STEAMYOUNG(百联又一城购物中心店)', 'commentNum': '条点评', 'class': '美食', 'star': '准五星商户', 'taste': '8.6', 'environment': '8.6', 'service': '8.6'}, {'name': '美食', 'price': '14', 'address': '丸来玩趣(百联又一城购物中心店)', 'commentNum': '条点评', 'class': '美食', 'star': '准四星商户', 'taste': '7.0', 'environment': '6.5', 'service': '6.5'}, {'name': '美食', 'price': '47', 'address': '韩国雪冰(合生汇店)', 'commentNum': '条点评', 'class': '美食', 'star': '四星商户', 'taste': '7.7', 'environment': '7.5', 'service': '7.6'}, {'name': '美食', 'price': '81', 'address': '小菜园新徽菜(五角场万达广场店)', 'commentNum': '条点评', 'class': '美食', 'star': '准五星商户', 'taste': '8.5', 'environment': '8.9', 'service': '9.0'}]
finished