人生苦短,我用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)
清洗后的商铺数据
说明数据清洗成功了!
网友评论