python 数据挖掘 之 对数据进行简单预处理(1)

python 数据挖掘 之 对数据进行简单预处理

在我们对数据集进行数据挖掘之前,需要先对数据集进行简单的处理,让数据集变得更规范更具有代表性。
对数据集进行的预处理又许多种,接下来我就简单说几种常用的。

光说不如边做边说,我这里有一个在网上找到的数据集,我们可以拿它来做例子。
seeds_dataset.txt

数据集介绍

三种不同品种小麦籽粒几何性状的测定。软X射线技术和GRAINS包用于构建所有七个实值属性
数据集来源: https://archive.ics.uci.edu/ml/datasets/seeds
数据集特征:多变量
实例数:210
检查组包括属于三种不同品种小麦的籽粒:Kama,Rosa和Canadian,每种70个元素,随机选择用于实验。
使用软X射线技术检测内部核结构的高质量可视化。
它是非破坏性的,并且比其他更复杂的成像技术(如扫描显微镜或激光技术)便宜得多。
将图像记录在13×18cm X射线KODAK板上。
使用来自实验田的联合收获的小麦谷粒进行研究,在卢布林的波兰科学院的农业生物学研究所进行了探索。

上面是凑字数的, 下面是重点:
为了构建数据,测量了小麦籽粒的七个几何参数:

1 面积A
2 周长P
3 紧凑度C = 4 pi A / P ^ 2
4 籽粒长度
5 籽粒宽度
6 不对称系数
7 核槽的长度
所有这些参数都是实值连续的。然后第八项是小麦的品种,取值1,2,3分别代表不同的小麦品种。

这是一些数据样例:
14.29 14.09 0.905 5.291 3.337 2.699 4.825 1
13.84 13.94 0.8955 5.324 3.379 2.259 4.805 1
16.17 15.38 0.8588 5.762 3.387 4.286 5.703 2
12.21 13.47 0.8453 5.357 2.893 1.661 5.178 3
.
.
.

用python将数据集提取成列表

from pandas import Series,DataFrame,np
from numpy import nan as NA
import pandas as pd
from scipy.interpolate import lagrange
#部分可能用不上,但多了不出错。。。

#打开文件并读取
filename = r"seeds_dataset.txt"
#这里用绝对路径相对路径均可,看情况而定

a=[]#创建一个列表准备承载数据
try:
    fp=open(filename,"r")
    print('%s 文件打开成功' % filename)
    for line in fp.readlines():   
        line=line.strip('\n')
        #因为在每一行后面都有换行符所以需要先删掉
        
        line=line.split('\t')
        #这个文档中数据与数据之间是缩进符,所以是以 '\t' 为为分隔符
        #其他的有 ','' ' 等以分隔符,换成对应的即可
                    
        a.append(line)#把每一行加入到列表中

    fp.close()
    print("文件内容为:")
    print(a)
except IOError:
    print("文件打开失败,%s文件不存在" % filename)

运行后发现a里面已经塞进了数据。

删除重复数据

有些数据集中有一些数据是重复的,这可能会对之后的数据挖掘产生一定的误差,所以我们需要先把重复的部分删除。


b=[]
for i in a :
    if i not in b :
        b.append(i)
a=b
#print('删除重复数据后b的长度',len(a))

这里运用一个新建列表进行迁移的方式来删除重复部分。

删除所有带有缺失数据的数据行

print('未处理前数据长度为',len(a))
s=[]
for q in range(len(a)):    #首先找出有问题的坐标
    for i in a[q]:
        if (i=='0' or i==''):#这里输入不合格的数据,可以用or继续扩展
            s.append(q)
            break
print(s)
for i in range(len(s)):#倒序一个一个的把有问题的删除
    del a[s[-1]
    s.pop()
print('删除带有缺失的数据行后数据长度为',len(a))

下面是结果示意,可以看到已经删掉部分数据了

python 数据挖掘 之 对数据进行简单预处理(1)_第1张图片
当然也有其他的方法处理有数据异常的数据,比如检测后替换异常值,替换的值可以选用数据平均值等数据,这里不再赘述。

实际上数据的预处理还可以有许多步骤,像是数据规范化,归一化,可以选择最大最小规范化,零均值规范化,小数定标规范化等方式处理(相关概念可以问度娘。网络是个好东西,得好好利用。说白了是我懒得写了),这个数据集我感觉可以不用这样处理,所以就不加了。
这些就是关于数据集的一些简单的预处理, 如果有机会的话我还会写写其他的预处理方式的。欢迎大家讨论和发言啊。。,,

你可能感兴趣的:(python,数据挖掘,python基本操作,python,数据分析)