数据告诉你答案

python数据分析:商铺数据加载及存储

2019-07-22  本文已影响18人  小刘的老刘

人生苦短,我用Python

首先导入os模块,设置默认路径

import os
os.chdir('C:/Users/花伦同学/Desktop/01/')#根据自己的文件存放路径修改

读取数据,并查看数据

f = open('商铺数据.csv','r',encoding='utf8')
print(f.readlines())
商铺数据

根据读取的原始数据进行分析,可将数据用逗号(' ,')拆分。根据拆分后的数据特点进行数据清洗处理。对不存在的数据替换为"缺失数据"。
这里先设置3个清洗函数。

#清洗数据comment
def fcom(d):
    if "条" in d:
        return int(d.split(' ')[0])
    else:
        return '缺失数据'
#清洗数据price    
def fpri(d):
    if "¥" in d:
        return float(d.split("¥")[-1])
    else:
        return '缺失数据'
#清洗数据commentlist    
def fcml(d):
    if ' ' in d:
        flavor = d.split('                                ')[0][2:]          #口味
        environment = d.split('                                ')[1][2:]     #环境
        service = d.split('                                ')[2][2:-1]       #服务
        return flavor,environment,service
    else:
        return '缺失数据'

下一步就可以开始数据清洗。但在开始清洗之前有个重要的步骤:就将读取光标移动到数据的最开始位置,代码为"f.seek(0)"。
重要的事情说三遍:光标移到开始位置!光标移到开始位置!光标移到开始位置!

f.seek(0)

创建空列表,用以存储数据

m = []
m0 = []

开始数据清洗。

for line in f.readlines()[1:10]:#这里只加载了部分数据,可修改为[1:]清洗全部数据
    m = line.split(',')
    classify = m[0]
    name = m[1]
    comment = fcom(m[2])
    star = m[3]
    price = fpri(m[4])
    address = m[5]
    flavor = fcml(m[6])[0]
    environment = fcml(m[6])[1]
    service = fcml(m[6])[2]
    
    if '缺失数据' in m:
        continue
    else:
        n += 1
        m1 = [['classify',classify],
             ['name',name],
             ['comment',comment],
             ['star',star],
             ['price',price],
             ['address',address],
             ['flavor',flavor],
             ['environment',environment],
             ['service',service]]
        m0.append(dict(m1))

print(m0)
print('一共加载%s次数据' %n)

然后将清洗好的数据存为pickle模式

import pickle#导入pickle模块

pic = open ('商铺数据.pkl','wb')
pickle.dump(m0,pic)#存储
#print (pic)
pic.close()#关闭文件

试着读取一下刚刚存的数据

pic2 = open ('商铺数据.pkl','rb')
data1 = pickle.load(pic2)
print(data1)
清洗后的商铺数据

说明数据清洗成功了!

上一篇 下一篇

猜你喜欢

热点阅读