【项目01】 商铺数据加载及存储
文件可以在–我的资源列表下载,我设置的免费,后台给我加到1的
1.作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{‘var1’:value1,‘var2’:value2,‘var3’:values,…},…,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成
4、结果存为.pkl文件
2.商铺数据情况
用excl打开
用记事本打开
完整代码为:
import os
os.chdir('D:/桌面/')
f = open('商铺数据.csv','r',encoding = 'utf8')
#清洗comment数据
def fcm(s):
if '条' in s:
return(int(s.split(' ')[0]))
else:
return('缺失数据')
#清洗price数据
def fpr(s):
if '¥' in s:
return(s.split('¥')[-1])
else:
return('缺失数据')
#commentlist拆分成三个字段,并且清洗成数字,注意参量
def fcml(s):
if len(s)==3:
quality = float(s[0][3:])
envi = float(s[1][3:])
service = float(s[2][3:])
return([quality,envi,service])
else:
print('缺失数据')
n=0
data = []
for line in f.readlines()[1:20]:
str=line.split(',')
classify = str[0]
name = str[1]
comment = fcm(str[2])
star =str[3]
price = fpr(str[4])
address = str[5]
quality = fcml(str[-1].split(' '))[0]
evi = fcml(str[-1].split(' '))[1]
service = fcml(str[-1].split(' '))[2]
n+=1
if '缺失数据' not in []:
data_lst = [['classify',classify],
['name',name],
['comment',comment],
['star',star],
['price',price],
['address',address],
['qualith',quality],
['evi',evi],
['service',service]]
# data.append(dict(data_lst))
data.append(dict(data_lst))
print('%i条数据成功读取'%n)
else:
continue
f.close()
import pickle
pic = open('C:/Users/Hjx/Desktop/data.pkl','wb')
pickle.dump(datalst,pic)
pic.close()
print('finished!')
3.代码实现
对整个作业的要求进行分析,结合所学内容,制定代码模块计划。
在数据清洗过程中需要构建三个函数,分别完成:清洗成数字和拆分片段。
对于csv文件,其特点为以‘,’分割,这就为数据单元的划分和取出提供了便利。划分的数据单元为列表。
对源csv文件,进行处理;
import os
f = open('D:/桌面/商铺数据.csv')
for i in f.readlines()[:10]:
str = i.split(',')
#此时,每一个数据为
美食 望蓉城老坛酸菜鱼(合生汇店) 我要点评 该商户暂无星级 人均 ¥125 翔殷路1099号合生汇5F 口味8.3 环境8.4 服务8.5
作业1 读取商铺数据
import os
f = open('D:/桌面/商铺数据.csv')
for i in f.readlines():
print(i)
作业3 数据清洗-comment,price两个字段清洗成数字
首先观察comment数据情况,发现有效数据为整数,其他为无效数据。同时数据源中还存在空白数据。
def fcom(s):
if '条' in s:
str = s.split(' ')
return(str[0])
else:
return('数据缺失')
清洗comment字段,用空格分段,选取结果list的第一个为点评数
def fpri(s):
if '¥' in s:
str = s.split('¥')[-1]
return(str)
else:
return('数据缺失')
清洗price字段,用¥分段,选取结果list的最后一个为人均价格
作业3 数据清洗-commentlist拆分成三个字段,并且清洗成数字
def fcoml(s):
if len(s)==3:
quality = float(s[0][3:])
envi = float(s[1][3:])
service = float(s[2][3:])
return([quality,envi,service])
else:
print('缺失数据')
#清洗commentlist字段,price字段用空格分段,分别清洗出质量、环境及服务数据