数据分析之基础数据清洗

要求:

1.读取商铺数据csv文件

2.解析数据,存为列表字典格式:[{key1:value1,key2:value2.。。。}]

3.数据清洗:

   3.1.comment,price两个字段完成数据清洗

  3.2.清除字段缺失的数据

  3.3.commentlist拆分成三个字段,并且清洗成数字

  4.结果存为。pkl文件

 

  拿到cvs文件,并且使用python打开文件,查看文件信息,先查看文件的最开始六行数据,看看文件的结构是怎么样子的,这里将文件内容以逗号进行分割

f = open("D:\\BaiduNetdiskDownload\\数据分析网易\\【非常重要】课程资料等多个文件\\【非常重要】课程资料\\CLASSDATA_ch02基础语言入门:从零开始学习Python\\CLASSDATA_ch02基础语言入门:从零开始学习Python\\商铺数据.csv", "r", encoding="utf8")
for i in f.readlines()[:6]:
    print(i.split(","))
View Code

 

 

 从得到的结果查看:comment(点评数),price(人均价格),commentlist(综合评分),三个字段的结构:

comment:展示方式为:1、我要点评       2、点评的条数数据,如果有点评的数据的话中间有空格分割

price:统一展示位人均+空格+金额

commentlist:口味数据+环境数据+服务数据

 

对三个数据写对应的函数进行清洗

comment清洗:

1 def fcm(s):
2     if "" in s:
3         return(int(s.split(" ")[0]))
4     else:
5         return("缺失数据")
View Code

price清洗:

1 def fpr(s):
2     if "" in s:
3         return(int(s.split("")[-1]))
4     else:
5         return("缺失数据")
View Code

commentlist清洗:

 1 def fcl(s):
 2     if len(s) == 3:
 3         quality = float(s[0][2:])
 4         envi = float(s[1][2:])
 5         service = float(s[2][2:])
 6         return(quality,envi,service)
 7     else:
 8         quality = "缺失数据"
 9         envi = "缺失数据"
10         service = "缺失数据"
11         return(quality,envi,service)
View Code

将原始的数据清洗:1、去除缺失的数据,2、拆分综合评分信息为三个字段,3、价格只取数字

最后保留字段:类别,店名,点评数,星级,人均价格,地址,口味,环境,服务,将他作为字典的形式保存

 1 datalist = []
 2 # 为了友好,设置一个变量n来查看处理的数据条数
 3 n = 0
 4 由于之前读取过文件信息所以将光标移动回文件开头
 5 f.seek(0)
 6 
 7 for i in f.readlines()[1:]:
 8     # 这里逗号要区分中文和英文的格式,具体看文件里面的逗号格式
 9     data = i.split(",")
10     classify = data[0]
11     name = data[1]
12     com_count = fcm(data[2])
13     star = data[3]
14     price = fpr(data[4])
15     add = data[5]
16     qua = fcl(data[-1].split("                                "))[0]
17     env = fcl(data[-1].split("                                "))[1]
18     service = fcl(data[-1].split("                                "))[2]
19     if "缺失数据" not in [com_count,price,qua]:
20         n += 1
21         datalist2 = [["classify", classify],
22                      ["name", name],
23                      ["com_count", com_count],
24                      ["star", star],
25                      ["price", price],
26                      ["address", add],
27                      ["quality", qua],
28                      ["environment", env],
29                      ["service", service]]
30         datalist.append(dict(datalist2))
31         print("成功清洗第{}条数据".format(n))
32         print(datalist2)
33     else:
34         continue
35 print(datalist)
36 print("数据清洗完毕,一共清洗%d条数据" % n)
37 # 文件处理结束一定记住关闭文件,关闭文件,关闭文件,重要事情说三遍
38 f.close()
View Code

至此,数据清洗完成,首先查看清洗完的数据是怎么样子的

 

 将清洗成功的数据转换成字典的格式,并且最终保存到列表中的形式

 

 至此数据清洗完成,然后把数据通过pickle保存到文件中

1 import pickle
2 pic = open("D:\\BaiduNetdiskDownload\\数据分析网易\\【非常重要】课程资料等多个文件\\【非常重要】课程资料\\CLASSDATA_ch02基础语言入门:从零开始学习Python\\CLASSDATA_ch02基础语言入门:从零开始学习Python\\商铺数据.pk1", "wb")
3 pickle.dump(datalist,pic)
4 pic.close()
5 print("pk1文件保存完成")
View Code

 

总结:

1.要了解文件中的数据储存的格式,根据要求对文件中的每个字段进行对应的清洗处理并保存

2.主要用到的python知识为:字符串的索引与切片,列表的索引,文件的读取,字典的生成,列表数据的添加,pickel写入文件的方式

 

 

posted @ 2020-09-19 22:29  骑驴追赶世界  阅读(338)  评论(0)    收藏  举报