【数据分析项目实战】商铺数据加载及存储
'''
【项目】 商铺数据加载及存储要求:
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 inlineimport warnings
warnings.filterwarnings('ignore')
df = pd.read_csv("商铺数据.csv")
df
classify | name | comment | star | price | address | commentlist | |
---|---|---|---|---|---|---|---|
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 | 购物 | obdear | 1 条点评 | 准四星商户 | 人均 - | 五角场合生汇广场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()
classify | name | comment | star | price | address | commentlist | comment_new | price_new | |
---|---|---|---|---|---|---|---|---|---|
0 | 美食 | 望蓉城老坛酸菜鱼(合生汇店) | 我要点评 | 该商户暂无星级 | 人均 ¥125 | 翔殷路1099号合生汇5F | 口味8.3 环境8.4 ... | 0 | 125 |
1 | 美食 | 泰国街边料理 | 74 条点评 | 准四星商户 | 人均 ¥48 | 黄兴路合生汇B2美食集市内 | 口味7.4 环境7.6 ... | 74 | 48 |
2 | 美食 | 壹面如故(苏宁生活广场店) | 265 条点评 | 准四星商户 | 人均 ¥21 | 邯郸路585号苏宁生活广场B1层 | 口味7.0 环境7.2 ... | 265 | 21 |
3 | 美食 | 鮨谷•Aburiya(合生汇店) | 2748 条点评 | 准五星商户 | 人均 ¥142 | 翔殷路1099号合生广场5楼23、28铺位 | 口味8.9 环境8.5 ... | 2748 | 142 |
4 | 美食 | 我们的烤肉我们的馕 | 5 条点评 | 准四星商户 | 人均 - | 邯郸路399-D3号 | 口味7.5 环境6.8 ... | 5 | 0 |
df1 = df[df['price_new'] > 0]
df_new = df1[df1['comment_new'] > 0]
df_new
classify | name | comment | star | price | address | commentlist | comment_new | price_new | |
---|---|---|---|---|---|---|---|---|---|
1 | 美食 | 泰国街边料理 | 74 条点评 | 准四星商户 | 人均 ¥48 | 黄兴路合生汇B2美食集市内 | 口味7.4 环境7.6 ... | 74 | 48 |
2 | 美食 | 壹面如故(苏宁生活广场店) | 265 条点评 | 准四星商户 | 人均 ¥21 | 邯郸路585号苏宁生活广场B1层 | 口味7.0 环境7.2 ... | 265 | 21 |
3 | 美食 | 鮨谷•Aburiya(合生汇店) | 2748 条点评 | 准五星商户 | 人均 ¥142 | 翔殷路1099号合生广场5楼23、28铺位 | 口味8.9 环境8.5 ... | 2748 | 142 |
5 | 美食 | 麦当劳(万达店) | 785 条点评 | 准四星商户 | 人均 ¥24 | 邯郸路600号万达商业广场B1楼A05号铺 | 口味7.4 环境7.2 ... | 785 | 24 |
6 | 美食 | 蒸年青STEAMYOUNG(百联又一城购物中心店) | 3779 条点评 | 准五星商户 | 人均 ¥70 | 淞沪路8号百联又一城购物中心7层 | 口味8.6 环境8.6 ... | 3779 | 70 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
1217 | 购物 | 屈臣氏(苏宁电器广场店) | 22 条点评 | 三星商户 | 人均 ¥75 | 邯郸路585号苏宁电器广场内 | 质量7.5 环境7.1 ... | 22 | 75 |
1232 | 购物 | 澳人坊(万达店) | 12 条点评 | 准四星商户 | 人均 ¥37 | 淞沪路77号万达广场1层 | 质量7.5 环境7.1 ... | 12 | 37 |
1237 | 购物 | 奥卡索(东方商厦店) | 6 条点评 | 准四星商户 | 人均 ¥333 | 四平路2500号东方商厦B1层 | 质量7.1 环境7.1 ... | 6 | 333 |
1240 | 购物 | TISSOT(巴黎春天店) | 17 条点评 | 三星商户 | 人均 ¥4671 | 淞沪路1号巴黎春天1层 | 质量7.1 环境7.1 ... | 17 | 4671 |
1259 | 购物 | as女鞋店(巴黎春天店) | 11 条点评 | 准四星商户 | 人均 ¥921 | 淞沪路1号巴黎春天1层 | 质量7.1 环境6.9 ... | 11 | 921 |
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()
classify | name | comment | star | price | address | commentlist | comment_new | price_new | quality | environment | service | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 美食 | 泰国街边料理 | 74 条点评 | 准四星商户 | 人均 ¥48 | 黄兴路合生汇B2美食集市内 | 口味7.4 环境7.6 ... | 74 | 48 | 7.4 | 7.6 | 7.4 |
2 | 美食 | 壹面如故(苏宁生活广场店) | 265 条点评 | 准四星商户 | 人均 ¥21 | 邯郸路585号苏宁生活广场B1层 | 口味7.0 环境7.2 ... | 265 | 21 | 7.0 | 7.2 | 7.2 |
3 | 美食 | 鮨谷•Aburiya(合生汇店) | 2748 条点评 | 准五星商户 | 人均 ¥142 | 翔殷路1099号合生广场5楼23、28铺位 | 口味8.9 环境8.5 ... | 2748 | 142 | 8.9 | 8.5 | 8.4 |
5 | 美食 | 麦当劳(万达店) | 785 条点评 | 准四星商户 | 人均 ¥24 | 邯郸路600号万达商业广场B1楼A05号铺 | 口味7.4 环境7.2 ... | 785 | 24 | 7.4 | 7.2 | 7.2 |
6 | 美食 | 蒸年青STEAMYOUNG(百联又一城购物中心店) | 3779 条点评 | 准五星商户 | 人均 ¥70 | 淞沪路8号百联又一城购物中心7层 | 口味8.6 环境8.6 ... | 3779 | 70 | 8.6 | 8.6 | 8.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格式的数据能力,也更加熟练掌握了数据分片、数据清洗、处理的基本思路。
你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步
【数据分析项目实战】商铺数据加载及存储相关推荐
- python数据分析实例_python数据分析实例3-商铺数据加载及存储
商铺数据加载及存储 在data文件夹存放有商铺数据.csv文件,路径:path = '../data/商铺数据.csv' 要求: 1.成功读取"商铺数据.csv"文件,并展示打印出 ...
- 《利用Python进行数据分析·第2版》第6章 数据加载、存储与文件格式
第1章 准备工作 第2章 Python语法基础,IPython和Jupyter 第3章 Python的数据结构.函数和文件 第4章 NumPy基础:数组和矢量计算 第5章 pandas入门 第6章 数 ...
- 利用Python进行数据分析(四):数据加载、存储与文件格式
标题利用Python进行数据分析(四):数据加载.存储与文件格式 学习笔记来源于:简书https://www.jianshu.com/p/047d8c1c7e14 输入输出通常可以划分为几个大类:读取 ...
- 《利用python进行数据分析》——第6章 数据加载、存储与文件格式——读书笔记
第6章 数据加载.存储与文件格式 6.1 读写文本格式的数据 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数. 其中read_csv和read_talbe用得最多 panda ...
- pandas入门(6)——数据加载、存储与文件格式
pandas入门(6)--数据加载.存储与文件格式 输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用Web API操作网络资源 一.读取文本格式数据 函 ...
- pandas数据加载与存储
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.数据加载与存储 1.引入库 2.读入数据 2.1 读取Excel文件 2.2 读取 tx ...
- Python之pandas数据加载、存储
Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 利用Web API操作网络资源 1. 读 ...
- 动手学数据分析(一)- 数据加载及探索性数据分析
1 初心 本系列笔记用于记录自己第一次参加Datawhale的组队学习.自己马上开启研究生学习生涯,因此熟练掌握数据分析这一重要技能对未来的学习能够提供很大的帮助,Datawhale团队在项目初衷里说 ...
- 第六篇 数据加载、存储与⽂件格式
输⼊输出通常可以划分为⼏个⼤类:读取⽂本⽂件和其他更⾼效的磁盘存储格式,加载数据库中的数据,利⽤Web API操作⽹络资源. 一.读写文本格式的数据 pandas提供了⼀些⽤于将表格型数据读取为Dat ...
最新文章
- django基本操作
- 原理分析之一:从JDBC到Mybatis
- 我马上会重新利用这个博客的
- HaaS 物联网极客大赛来了!奖金丰厚等你来!
- linux设置登录次多过多锁定时间
- Vue.js 相关知识(动画)
- 一步步编写操作系统 49 加载内核2
- chrome应用程序无法启动因为并行配置不正确_Win8打不开软件提示并行配置不正确的解决方法...
- 计算机视觉论文-2021-09-07
- matlab中求最大似然估计,matlab求最大似然估计
- c语言合数的分解编程,C语言 · 分解质因数
- 「吕本富」交易的四个阶段
- SSH项目,failed to lazily initialize a collection of role
- 智能快递柜的密码模块
- 员工转正申请书_有限公司新员工转正申请书
- SpringBoot日志文件
- 安霸预发布14nm工艺的ISP芯片
- mt4下载正规的渠道才安全
- 足下教育日精进自动提交
- 【HTML】原生js实现的图书馆管理系统
热门文章
- C语言 union类型
- 中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)
- 我们父辈关于房子的事情(r11笔记第93天)
- matlab subplot子图丢失,Matlab绘制子图subplot使用操作方法
- 善用 SPINWAIT 处理 线程空转 以利提升效能
- ural 1804 The Machinegunners in a Playoff
- 学习英语01——听力——剑雅12 T8S2
- Java初学者作业——使用记事本编写Java程序
- HWC blending mode
- 肯德基问题鸡事件新进展