利用python进行列表数据清洗

上进小菜猪 发表于 2022/01/11 14:36:23 2022/01/11
【摘要】 @[toc] 一.准备利用scrapy crawl 从某网站爬取到近28000组数据,如下表,观察发现,在景区类型一列,有的是普通景区不是A级景区,那么如果我们需要一个都是A级的景区的表格怎么办,手动对于如此庞大的数据量显然不合适,那么,使用python将会非常简单。观察上图,发现没有景区的一栏没有任何数据,这显然不利于我们对数据的处理,我们利用wsp的查找替换功能,将None的数据随意替换...

@[toc]

一.准备

利用scrapy crawl 从某网站爬取到近28000组数据,如下表,观察发现,在景区类型一列,有的是普通景区不是A级景区,那么如果我们需要一个都是A级的景区的表格怎么办,手动对于如此庞大的数据量显然不合适,那么,使用python将会非常简单。

在这里插入图片描述
观察上图,发现没有景区的一栏没有任何数据,这显然不利于我们对数据的处理,我们利用wsp的查找替换功能,将None的数据随意替换为一个方便区分的数据。
在这里插入图片描述
如图这48155处数据就是我们不需要的垃圾数据,接下来我们使用python对其进行清洗。

二.利用csv库,读取我们的待处理列表。

因为我是直接把列表放入了py文件的目录下,所以不需要写路径,如果不是同目录需要,写明路径。

import csv
with open('1.csv',"r") as a:
    reader = csv.reader(a)
    list=[]
    for row in reader:
            list.append(row)

这样,我就成功的把csv里面的数据转换为python对象,并成功的将其存入列表list里面。下面我们输出查看一下list里面是什么内容:
在这里插入图片描述
如图,现在我们的list里面是一个二维列表,里面有每一组的数据。
接下来我们观察发现,我们需要区分的景区类别在每一组的第二个位置,也就是类别的第一个下表a[1]。
所以我们写一个循环来遍历这个list,这样就可以在里面的一维列表里面以a[1]来进行筛选我们需要的数据。

三.创建一个新的列表list1=[]

来储存我们筛选之后的数据。

list1=[]
for a in list:
    if a[1] !='无':
        list1.append(a)

我们来看一下list1是不是成功的筛选出来了;
在这里插入图片描述
观察发现,现在每组的第二个数据都是A级景点,说明我们已经筛选成功了,现在我们需要把list1列表里面的数据存入一个新的表格文件就完成了我们需求。
使用pandas库将其转换为DataFrame,之后方便我们存入文件。

name=['名称','景区类型','位置','评分','门票','人气','省份']
test = DataFrame(list1, columns=name)
test.to_csv('e:/testcsv.csv',encoding='gbk')

在这里插入图片描述
如上图所示,我们的对列表清洗的需求完美的实现了。

四.下面贴出完整代码供大家学习


import csv
import numpy as np
from pandas import DataFrame
with open('1.csv',"r") as a:
    reader = csv.reader(a)
    list=[]
    for row in reader:
        list.append(row)
list1=[]
for a in list:
    if a[1] !='无':
        list1.append(a)
        print(a)
x = np.array(list1, dtype = str)
name=['名称','景区类型','位置','评分','门票','人气','省份']
test = DataFrame(list1, columns=name)
test.to_csv('e:/testcsv.csv',encoding='gbk')

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。