数据的加载 - 清洗处理 - 分组分类 - 存储
源数据“商铺数据.csv”
读取.csv文件
path1 = 'D:/桌面文件/Python/first/商铺数据.csv'
f = open(path1,'r',encoding='utf-8')
\# print(f.read())
f.seek(0)
# 做前期准备工作,建立空列表和空字符串
m = [] #建立一个空列表,用于存储数据
n = 0
cm = []
清洗掉comment数据
# 清洗掉comment数据
def fcm(s):
if '条' in s:
return(int(s.split(' ')[0]))
else:
return("缺失数据")
清洗掉price数据
# 清洗掉price数据
def fpc(p):
if '¥' in p:
return(int(p.split('¥')[1]))
else:
return("缺失数据")
清洗掉commentlist数据
# 清洗掉commentlist数据
def fcl(l):
l = l.split(" ")
# for i in l:
# print(i)
if len(l) == 3:
quality = float(l[0][3:])
envi = float(l[1][3:])
service = float(l[2][3:])
return(quality,envi,service)
else:
return("缺失数据")
将数据按规则进行拆分
for line in f.readlines()[:5]:
n = n + 1
# 用逗号拆分开数据,并观察数据,做整理
stl = line.split(",")
classify = stl[0]
name = stl[1]
comment = stl[2]
star = stl[3]
price = stl[4]
address = stl[5]
commentlist = stl[6]
将每行数据做成嵌套列表
# 将每行数据做成嵌套列表
# data1 = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['commentlist',commentlist]]
# data = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['质量',commentlist[2:5]],["环境",commentlist[39:42]],['服务',[commentlist[76:79]]]]
data = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['质量',fcl(commentlist)[0]],["环境",fcl(commentlist)[1]],['服务',[fcl(commentlist)[2]]]]
# 生成字典,并追加如列表m
m.append(dict(data))
# print(commentlist)
# print(fcl(commentlist))
将生成的内容导入到pkl文件
# 存储为pkl文件
import pickle
pic = open( 'D:/桌面文件/data.pkl', 'wb')
# 以二进制来存储:rb, wb, wrb, ab
pickle.dump(m,pic)
pic.close()
print('文件导入成功')
# 将一个字典数据存成了pkl文件
读取刚导入的文件
# 读取刚导入的文件
f = open( 'D:/桌面文件/data.pkl', 'rb')
st = pickle.load(f)
for i in st:
print(i)
print('文件读取成功')
all code
'''
【项目01】 商铺数据加载及存储
作业要求:
1、成功读取“商铺数据.csv”文件
2、解析数据,存成列表字典格式:[{'var1':value1,'var2':value2,'var3':values,...},...,{}]
3、数据清洗:
① comment,price两个字段清洗成数字
② 清除字段缺失的数据
③ commentlist拆分成三个字段,并且清洗成数字
4、结果存为.pkl文件
'''
# 读取.csv文件
path1 = 'D:/桌面文件/Python/first/商铺数据.csv'
f = open(path1,'r',encoding='utf-8')
# print(f.read())
f.seek(0)
# 将每一行都存储成列表字典格式
m = [] #建立一个空列表,用于存储数据
n = 0
cm = []
# 清洗掉comment数据
def fcm(s):
if '条' in s:
return(int(s.split(' ')[0]))
else:
return("缺失数据")
# 清洗掉price数据
def fpc(p):
if '¥' in p:
return(int(p.split('¥')[1]))
else:
return("缺失数据")
# 清洗掉commentlist数据
def fcl(l):
l = l.split(" ")
# for i in l:
# print(i)
if len(l) == 3:
quality = float(l[0][3:])
envi = float(l[1][3:])
service = float(l[2][3:])
return(quality,envi,service)
else:
return("缺失数据")
for line in f.readlines()[:5]: #数据过多,仅测试前五条
n = n + 1
# 用逗号拆分开数据,并观察数据,做整理
stl = line.split(",")
classify = stl[0]
name = stl[1]
comment = stl[2]
star = stl[3]
price = stl[4]
address = stl[5]
commentlist = stl[6]
# 将每行数据做成嵌套列表
# data1 = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['commentlist',commentlist]]
# data = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['质量',commentlist[2:5]],["环境",commentlist[39:42]],['服务',[commentlist[76:79]]]]
data = [['classify',classify],['name',name],['comment',fcm(comment)],['star',star],['price',fpc(price)],['address',address],['质量',fcl(commentlist)[0]],["环境",fcl(commentlist)[1]],['服务',[fcl(commentlist)[2]]]]
# 生成字典,并追加如列表m
m.append(dict(data))
# print(commentlist)
# print(fcl(commentlist))
for i in m:
print(i)
print('\n数据转换完成!总共转换%i个数据'%n)
# 存储为pkl文件
import pickle
pic = open( 'D:/桌面文件/data.pkl', 'wb')
# 以二进制来存储:rb, wb, wrb, ab
pickle.dump(m,pic)
pic.close()
print('文件导入成功')
# 将一个字典数据存成了pkl文件
# 读取刚导入的文件
f = open( 'D:/桌面文件/data.pkl', 'rb')
st = pickle.load(f)
for i in st:
print(i)
print('文件读取成功')
运行结果
PS C:\Users\admin> & python d:/桌面文件/Python/Untitled-1.py
{'classify': '\ufeffclassify', 'name': 'name', 'comment': '缺失数据', 'star': 'star', 'price': '缺失数据', 'address': 'address', '质量': '缺', '环境': '失', '服务': ['数']}
{'classify': '美食', 'name': '望蓉城老坛酸菜鱼(合生汇店)', 'comment': '缺失数据', 'star': '该商户暂无星级', 'price': 125, 'address': '翔殷路1099号合生汇5F', '质量': 0.3, '环境': 0.4, '服务': [0.5]}
{'classify': '美食', 'name': '泰国街边料理', 'comment': 74, 'star': '准四星商户', 'price': 48, 'address': '黄兴路合生汇B2美食集市内', '质量': 0.4, '环境': 0.6, '服务': [0.4]}
{'classify': '美食', 'name': '壹面如故(苏宁生活广场店)', 'comment': 265, 'star': '准四星商户', 'price': 21, 'address': '邯郸路585号苏宁生活广场B1层', '质量': 0.0, '环境': 0.2, '服务': [0.2]}
{'classify': '美食', 'name': '鮨谷•Aburiya(合生汇店)', 'comment': 2748, 'star': '准五星商户', 'price': 142, 'address': '翔殷路1099号合生广场5楼23、28铺位', '质量': 0.9, '环境': 0.5, '服务': [0.4]}
数据转换完成!总共转换5个数据
文件导入成功
{'classify': '\ufeffclassify', 'name': 'name', 'comment': '缺失数据', 'star': 'star', 'price': '缺失数据', 'address': 'address', '质量': '缺', '环境': '失', '服务': ['数']}
{'classify': '美食', 'name': '望蓉城老坛酸菜鱼(合生汇店)', 'comment': '缺失数据', 'star': '该商户暂无星级', 'price': 125, 'address': '翔殷路1099号合生汇5F', '质量': 0.3, '环境': 0.4, '服务': [0.5]}
{'classify': '美食', 'name': '泰国街边料理', 'comment': 74, 'star': '准四星商户', 'price': 48, 'address': '黄兴路合生汇B2美食集市内', '质量': 0.4, '环境': 0.6, '服务': [0.4]}
{'classify': '美食', 'name': '壹面如故(苏宁生活广场店)', 'comment': 265, 'star': '准四星商户', 'price': 21, 'address': '邯郸路585号苏宁生活广场B1层', '质量': 0.0, '环境': 0.2, '服务': [0.2]}
{'classify': '美食', 'name': '鮨谷•Aburiya(合生汇店)', 'comment': 2748, 'star': '准五星商户', 'price': 142, 'address': '翔殷路1099号合生广场5楼23、28铺位', '质量': 0.9, '环境': 0.5, '服务': [0.4]}
文件读取成功
源数据(.csv)
数据过长,仅展示部分数据
classify,name,comment,star,price,address,commentlist
美食,望蓉城老坛酸菜鱼(合生汇店),我要点评,该商户暂无星级,人均 ¥125,翔殷路1099号合生汇5F,口味8.3 环境8.4 服务8.5
美食,泰国街边料理,74 条点评,准四星商户,人均 ¥48,黄兴路合生汇B2美食集市内,口味7.4 环境7.6 服务7.4
美食,壹面如故(苏宁生活广场店),265 条点评,准四星商户,人均 ¥21,邯郸路585号苏宁生活广场B1层,口味7.0 环境7.2 服务7.2
美食,鮨谷•Aburiya(合生汇店),2748 条点评,准五星商户,人均 ¥142,翔殷路1099号合生广场5楼23、28铺位,口味8.9 环境8.5 服务8.4
美食,我们的烤肉我们的馕,5 条点评,准四星商户,人均 -,邯郸路399-D3号,口味7.5 环境6.8 服务7.5
美食,麦当劳(万达店),785 条点评,准四星商户,人均 ¥24,邯郸路600号万达商业广场B1楼A05号铺,口味7.4 环境7.2 服务7.2
美食,蒸年青STEAMYOUNG(百联又一城购物中心店),3779 条点评,准五星商户,人均 ¥70,淞沪路8号百联又一城购物中心7层,口味8.6 环境8.6 服务8.6
美食,丸来玩趣(百联又一城购物中心店),458 条点评,准四星商户,人均 ¥14,淞沪路8号百联又一城购物中心B1层,口味7.0 环境6.5 服务6.5
美食,韩国雪冰(合生汇店),1280 条点评,四星商户,人均 ¥47,翔殷路1099号合生汇4F,口味7.7 环境7.5 服务7.6
美食,小菜园新徽菜(五角场万达广场店),85 条点评,准五星商户,人均 ¥81,邯郸路600号万达商业广场特力时尚汇3层,口味8.5 环境8.9 服务9.0
美食,生日聚汇(杨浦店),2 条点评,准四星商户,人均 -,淞沪路8号百联又一城6楼,口味7.0 环境7.0 服务7.0
美食,阿满鸡排(合生汇店),30 条点评,四星商户,人均 ¥17,翔殷路1099号合生汇4层,口味7.9 环境8.0 服务7.7
美食,莆田餐厅(百联又一城购物中心店),988 条点评,四星商户,人均 ¥150,淞沪路8号百联又一城购物中心7层,口味8.0 环境8.4 服务8.0
美食,旬彩(百联又一城购物中心店),152 条点评,准四星商户,人均 ¥16,淞沪路8号百联又一城购物中心B1层,口味7.2 环境7.1 服务7.2
美食,吴茂兴本帮面(五角场店),72 条点评,准四星商户,人均 ¥21,政旦东路34号,口味7.4 环境7.4 服务7.6
美食,雀舞云南菜(合生汇店),3627 条点评,四星商户,人均 ¥99,翔殷路1099号合生汇5F,口味8.0 环境8.5 服务8.6
美食,开心膳(joyeusesalade悦沙拉五角场店),4 条点评,准四星商户,人均 -,邯郸路600号四楼D-001,口味7.4 环境7.4 服务7.4
美食,阳光客(城市集市合生汇店),336 条点评,准四星商户,人均 ¥79,黄兴路2228号合生汇B2层城市集市C8商户,口味7.1 环境7.6 服务7.7
美食,越打星YuetDaSing(合生汇店),264 条点评,四星商户,人均 ¥48,翔殷路1099号合生汇B2城市集市C9,口味8.0 环境7.7 服务7.8
美食,鲜榨果汁 Juice Bar(巴黎春天五角场店),4 条点评,三星商户,人均 -,淞沪路1号巴黎春天B1层,口味6.8 环境6.8 服务6.9
美食,MAKA MAKA玛卡玛卡滋蛋仔(五角场店),67 条点评,四星商户,人均 ¥26,邯郸路399号D15-1号,口味8.2 环境8.4 服务8.4
美食,城市集市(合生汇店),226 条点评,准五星商户,人均 ¥47,黄兴路2228号合生汇B2层城市集市,口味8.4 环境8.5 服务8.2
美食,甜蜜食堂(杨浦店),2 条点评,准四星商户,人均 -,淞沪路100号,口味7.2 环境7.2 服务7.2
美食,许留山(合生汇店),375 条点评,三星商户,人均 ¥35,翔殷路1099号合生汇4F,口味6.9 环境7.2 服务6.5
美食,汉蒸坊蒸汽海鲜主题餐厅(合生汇店),830 条点评,四星商户,人均 ¥165,翔殷路1099号合生汇5F,口味7.9 环境7.7 服务7.9