商铺数据的清洗

2019/8/9

#项目描述:将爬取下来的数据进行清洗,删除无效数据。

def c_comment(s):
    if "条" in s:
        return float(s.split("条")[0])
    else:
        return "缺失数据"

def c_price(s):
    if "¥" in s:
        return s.split("¥")[1]
    else:
        return "缺失数据"

def c_commentlist(s):
    st1 = s.split("                                ")
    if len(st1) == 3:
        a = float(st1[0][2:5])
        b = float(st1[1][2:5])
        c = float(st1[2][2:5])
        return ([a,b,c])
    else:
        return "缺失数据"

f = open("F:\\360MoveData\\Users\\20122\\Desktop\\商铺数据.csv","r",encoding="utf8")
data = []
n = 0 # 清洗后的总条数
f.seek(0)
for line in f.readlines()[1:]:
    st1 = line.split(",")
    classify = st1[0]
    name = st1[1]
    comment_num = c_comment(st1[2])
    star = st1[3]
    price_num = c_price(st1[4])
    address = st1[5]
    commentlist_kouwei = c_commentlist(st1[-1])[0]
    commentlist_huanjing = c_commentlist(st1[-1])[1]
    commentlist_fuwu = c_commentlist(st1[-1])[2]
    if "数据缺失" not in line:
        data_lst1 = [["classify",classify],
                     ["name",name],
                     ["comment_num",comment_num],
                     ["star",star],
                     ["price_num",price_num],
                     ["address",address],
                     ["commentlist_kouwei",commentlist_kouwei],
                     ["commentlist_huanjing",commentlist_huanjing],
                     ["commentlist_fuwu",commentlist_fuwu]]
        data.append(dict(data_lst1))
        n +=1
    else:
        continue
print(data)
print("成功加载%i条数据" %n)

import pickle
pic = open("F:\\360MoveData\\Users\\20122\\Desktop\\商铺数据1.pkl","wb")
pickle.dump(data,pic)
f.close()

总结:
1、通过函数的定义,将那些数据清洗的方法进行包装,方便代码的阅读。
2、记得在每次在打开文件后要将文件关闭。
3、记得将清洗后的数据保存为.pkl的格式。
要清晰的数据.scv的截图。
图片说明
清洗后的截图:
图片说明