【数据分析项目实战】商铺数据加载及存储

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

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

'''
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

import warnings
warnings.filterwarnings('ignore')
df = pd.read_csv("商铺数据.csv")
df
classifynamecommentstarpriceaddresscommentlist
0美食望蓉城老坛酸菜鱼(合生汇店)我要点评该商户暂无星级人均 ¥125翔殷路1099号合生汇5F口味8.3 环境8.4 ...
1美食泰国街边料理74 条点评准四星商户人均 ¥48黄兴路合生汇B2美食集市内口味7.4 环境7.6 ...
2美食壹面如故(苏宁生活广场店)265 条点评准四星商户人均 ¥21邯郸路585号苏宁生活广场B1层口味7.0 环境7.2 ...
3美食鮨谷•Aburiya(合生汇店)2748 条点评准五星商户人均 ¥142翔殷路1099号合生广场5楼23、28铺位口味8.9 环境8.5 ...
4美食我们的烤肉我们的馕5 条点评准四星商户人均 -邯郸路399-D3号口味7.5 环境6.8 ...
........................
1260购物obdear1 条点评准四星商户人均 -五角场合生汇广场B1质量7.1 环境6.9 ...
1261购物KAKO(百联又一城店)4 条点评准四星商户人均 -淞沪路8号百联又一城3层3F-14质量7.1 环境6.9 ...
1262购物思乐得生活馆(合生汇店)1 条点评准四星商户人均 -翔殷路1099号合生汇B2层28B质量7.1 环境6.9 ...
1263购物sefon臣枫(巴黎春天店)1 条点评准四星商户人均 -淞沪路1号巴黎春天2层质量7.1 环境6.9 ...
1264购物诗篇(百联又一城店)1 条点评准四星商户人均 -淞沪路8号百联又一城3层3F-17质量7.1 环境6.9 ...

1265 rows × 7 columns

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

for row in df.values:
    for i in range(7):
        dct[df.columns[i]] = row[i];
    lst.append(dct)

print(lst[4])
{'classify': '购物', 'name': '诗篇(百联又一城店)', 'comment': '1                    条点评', 'star': '准四星商户', 'price': '人均                                    -', 'address': '淞沪路8号百联又一城3层3F-17', 'commentlist': '质量7.1                                环境6.9                                服务7.0'}
df['comment'].head()
0                           我要点评
1      74                    条点评
2     265                    条点评
3    2748                    条点评
4       5                    条点评
Name: comment, dtype: object

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)

#3、数据清洗:
# ① comment,price两个字段清洗成数字
# ② 清除字段缺失的数据
# ③ commentlist拆分成三个字段,并且清洗成数字

数据清洗的时候,要注意观察数据的共同特征和不同部分,然后按照对应要求找出数据的区分条件。

ls_comment = []
price_ls = []
for i in range(len(df)):
    # print(df.loc[i]['comment'].split(" ")[0])
    if((df.loc[i]['comment'].split(" ")[0])=='我要点评'):
        ls_comment.append(int(0))
    else:
        ls_comment.append(int(df.loc[i]['comment'].split(" ")[0]))
        
    if '¥' in df.loc[i]['price']:
        price_ls.append(int(df.loc[i]['price'].split('¥')[-1]))
    else:
        price_ls.append(int(0))

DataFrame 格式的数据要新增加一列时,建议先把对应列的数据存成List形式,最后直接整列赋值。

df['comment_new'] = ls_comment
df['price_new'] = price_ls
df.head()
classifynamecommentstarpriceaddresscommentlistcomment_newprice_new
0美食望蓉城老坛酸菜鱼(合生汇店)我要点评该商户暂无星级人均 ¥125翔殷路1099号合生汇5F口味8.3 环境8.4 ...0125
1美食泰国街边料理74 条点评准四星商户人均 ¥48黄兴路合生汇B2美食集市内口味7.4 环境7.6 ...7448
2美食壹面如故(苏宁生活广场店)265 条点评准四星商户人均 ¥21邯郸路585号苏宁生活广场B1层口味7.0 环境7.2 ...26521
3美食鮨谷•Aburiya(合生汇店)2748 条点评准五星商户人均 ¥142翔殷路1099号合生广场5楼23、28铺位口味8.9 环境8.5 ...2748142
4美食我们的烤肉我们的馕5 条点评准四星商户人均 -邯郸路399-D3号口味7.5 环境6.8 ...50
df1 = df[df['price_new'] > 0]
df_new = df1[df1['comment_new'] > 0]
df_new
classifynamecommentstarpriceaddresscommentlistcomment_newprice_new
1美食泰国街边料理74 条点评准四星商户人均 ¥48黄兴路合生汇B2美食集市内口味7.4 环境7.6 ...7448
2美食壹面如故(苏宁生活广场店)265 条点评准四星商户人均 ¥21邯郸路585号苏宁生活广场B1层口味7.0 环境7.2 ...26521
3美食鮨谷•Aburiya(合生汇店)2748 条点评准五星商户人均 ¥142翔殷路1099号合生广场5楼23、28铺位口味8.9 环境8.5 ...2748142
5美食麦当劳(万达店)785 条点评准四星商户人均 ¥24邯郸路600号万达商业广场B1楼A05号铺口味7.4 环境7.2 ...78524
6美食蒸年青STEAMYOUNG(百联又一城购物中心店)3779 条点评准五星商户人均 ¥70淞沪路8号百联又一城购物中心7层口味8.6 环境8.6 ...377970
..............................
1217购物屈臣氏(苏宁电器广场店)22 条点评三星商户人均 ¥75邯郸路585号苏宁电器广场内质量7.5 环境7.1 ...2275
1232购物澳人坊(万达店)12 条点评准四星商户人均 ¥37淞沪路77号万达广场1层质量7.5 环境7.1 ...1237
1237购物奥卡索(东方商厦店)6 条点评准四星商户人均 ¥333四平路2500号东方商厦B1层质量7.1 环境7.1 ...6333
1240购物TISSOT(巴黎春天店)17 条点评三星商户人均 ¥4671淞沪路1号巴黎春天1层质量7.1 环境7.1 ...174671
1259购物as女鞋店(巴黎春天店)11 条点评准四星商户人均 ¥921淞沪路1号巴黎春天1层质量7.1 环境6.9 ...11921

560 rows × 9 columns

print(df_new.iloc[0]['commentlist'].split('                                ')[2][2:])
7.4

quality = []
environment = []
service = []
for i in range(len(df_new)):
    if ' ' in df_new.iloc[i]['commentlist']:
        quality.append(float(df_new.iloc[i]['commentlist'].split('                                ')[0][2:]))
        environment.append(float(df_new.iloc[i]['commentlist'].split('                                ')[1][2:]))
        service.append(float(df_new.iloc[i]['commentlist'].split('                                ')[2][2:]))
df_new['quality'] = quality
df_new['environment'] = environment
df_new['service'] = service
df_new.head()
classifynamecommentstarpriceaddresscommentlistcomment_newprice_newqualityenvironmentservice
1美食泰国街边料理74 条点评准四星商户人均 ¥48黄兴路合生汇B2美食集市内口味7.4 环境7.6 ...74487.47.67.4
2美食壹面如故(苏宁生活广场店)265 条点评准四星商户人均 ¥21邯郸路585号苏宁生活广场B1层口味7.0 环境7.2 ...265217.07.27.2
3美食鮨谷•Aburiya(合生汇店)2748 条点评准五星商户人均 ¥142翔殷路1099号合生广场5楼23、28铺位口味8.9 环境8.5 ...27481428.98.58.4
5美食麦当劳(万达店)785 条点评准四星商户人均 ¥24邯郸路600号万达商业广场B1楼A05号铺口味7.4 环境7.2 ...785247.47.27.2
6美食蒸年青STEAMYOUNG(百联又一城购物中心店)3779 条点评准五星商户人均 ¥70淞沪路8号百联又一城购物中心7层口味8.6 环境8.6 ...3779708.68.68.6

pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装。
pickle模块实现了基本的数据序列化和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

# 4、结果存为.pkl文件

# 数据存储.pkl数据

import pickle
pic = open('data.pkl','wb')
pickle.dump(df_new,pic)
pic.close()
print('finished!')
# 将数据存成了pkl文件
finished!
  • 通过本次实践,锻炼了操作DataFrame格式的数据能力,也更加熟练掌握了数据分片、数据清洗、处理的基本思路。

你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值