python使用numpy清洗爬取后的数据

6 篇文章 1 订阅
5 篇文章 0 订阅

对于刚爬取的数据,数据一般不会全部按照你的格式,整整齐齐的排列,比如:
在这里插入图片描述

这时候,需要我们对数据进行清洗。

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.结论

数据清洗,主要是对数据进行分析,再进行相关的操作即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值