对于刚爬取的数据,数据一般不会全部按照你的格式,整整齐齐的排列,比如:
这时候,需要我们对数据进行清洗。
1.读取数据出来
data = []
with open("51job.csv",encoding='gbk') as csvfile:
csv_reader = csv.reader(csvfile) # 使用csv.reader读取csvfile中的文件
data_header = next(csv_reader) # 读取第一行每一列的标题 ['职位', '薪资', '公司', '公司信息', '公司地址', '地区', '工作经验', '学历', '人数', '时间', '岗位信息']
# 将csv 文件中的数据保存到data中
for row in csv_reader:
data.append(row)
2.进行清洗
data = np.array(data) # 将list数组转化成array数组便于查看数据结构
flag = 0 # 设置结束整个过程循环的标志
while True:
if flag == 1:
break
flag1 = 0 # 设置结束整个数据循环的标志
for index in range(len(data)):
for i in range(len(data[index])):
# 清洗掉缺少某项数据的那条数据
if data[index][i] == '':
data = np.delete(data, index, axis=0)
flag1 = 1
break
if i == len(data[index]) - 1:
# 岗位信息一般比较详细,设定相关阈值,进对应的数据也清洗
if len(data[index][i]) <= 36:
data = np.delete(data, index, axis=0)
flag1 = 1
if flag1 == 1:
break
if index == len(data)-1:
flag = 1
3.写入数据
# 将清洗后的数据,写入新的文件
fp = open('51job1.csv', 'wt', newline='', encoding='GBK', errors='ignore')
writer = csv.writer(fp)
writer.writerow(('职位', '薪资', '公司', '公司信息', '公司地址', '地区', '工作经验', '学历', '人数', '时间', '岗位信息'))
for d in data:
writer.writerow((d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10]))
4.具体代码
import csv
import numpy as np
data = []
with open("51job.csv",encoding='gbk') as csvfile:
csv_reader = csv.reader(csvfile) # 使用csv.reader读取csvfile中的文件
data_header = next(csv_reader) # 读取第一行每一列的标题 ['职位', '薪资', '公司', '公司信息', '公司地址', '地区', '工作经验', '学历', '人数', '时间', '岗位信息']
# 将csv 文件中的数据保存到data中
for row in csv_reader:
data.append(row)
data = np.array(data) # 将list数组转化成array数组便于查看数据结构
flag = 0 # 设置结束整个过程循环的标志
while True:
if flag == 1:
break
flag1 = 0 # 设置结束整个数据循环的标志
for index in range(len(data)):
for i in range(len(data[index])):
# 清洗掉缺少某项数据的那条数据
if data[index][i] == '':
data = np.delete(data, index, axis=0)
flag1 = 1
break
if i == len(data[index]) - 1:
# 岗位信息一般比较详细,设定相关阈值,进对应的数据也清洗
if len(data[index][i]) <= 36:
data = np.delete(data, index, axis=0)
flag1 = 1
if flag1 == 1:
break
if index == len(data)-1:
flag = 1
# 将清洗后的数据,写入新的文件
fp = open('51job1.csv', 'wt', newline='', encoding='GBK', errors='ignore')
writer = csv.writer(fp)
writer.writerow(('职位', '薪资', '公司', '公司信息', '公司地址', '地区', '工作经验', '学历', '人数', '时间', '岗位信息'))
for d in data:
writer.writerow((d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10]))
5.运行效果
6.结论
数据清洗,主要是对数据进行分析,再进行相关的操作即可。