Python机器学习之一:导入数据(CSV、NumPy、Pandas)

审查CSV文件:

CSV 文件是用逗号分隔的文本文件,历史数据通常会以CSV的格式来存储,或者能够方便地转化为CSV格式。
(1)是否有文件头
如果CSV的文件里包括文件头的信息,可以很方便地使用文件头信息来设置读入数据字段的属性名称。如果文件里不含有文件头信息,需要自己手动设定读入文件的字段属性名称。数据导入时,设置字段属性名称,有助于提高数据处理程序的可读性。
(2)文件中的注释
在 CSV 文件中,注释行是以“井”号(#)开头的。是否需要对读入的注释行做处理,取决于采用什么方式读入CSV文件。
(3)分隔符
CSV文件的标准分隔符是逗号(,),当然也可以使用Tab键或空格键作为自定义的分隔符。当使用这两种分隔符时,文件读取是要指明分隔符的。
(4)引号(空值)
当有的字段值中有空白时,这些值通常都会被引号引起来,默认使用双引号来标记这些字段值。如果采用自定义格式,那么在文件读取时要明确在文件中采用的自定义格式。

在此介绍三种CSV数据导入方法:
· 通过标准Python类库导入CSV文件。
· 通过NumPy导入CSV文件。
· 通过Pandas导入CSV文件。

在进行机器学习项目实践时,建议采用Pandas方式导入数据

案例使用Pima Indians数据集,下载链接(https://gitee.com/biabianm/pima-indians-diabetes)。这是一个分类问题的数据集,主要记录了印第安人最近五年内是否患糖尿病的医疗数据。这些数据都是以数字的方式记录的,并且输出结果是 0 或 1,使我们在机器学习的算法中建立模型变得非常方便。

1. 采用标准Python类库导入数据

Python提供了一个标准类库CSV,用来处理CSV文件。这个类库中的reader函数用来读入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型。首先下载数据文件到应用目录下,并命名文件为pima.csv。

# 采用标准Python类库导入数据
import csv
import numpy as np
filename="pima_data.csv"
with open(filename,'rt') as f:
    readers=csv.reader(f,delimiter=',')
    x=list(readers)
    head=x.pop(0)#文件第一行为文件头
    dataset=np.array(x).astype('float64')
    print(head,data.shape)

2.采用NumPy导入数据

也可以使用NumPy库loadtxt函数导入数据。使用这个函数处理的数据没有文件头,并且所有的数据结构是一样的,也就是说,数据类型是一样的。

#通过NumPy导入CSV文件
#numpy.loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
import numpy as np
filename="pima_data.csv"
with open(filename,'rt') as f:
    dataset=np.loadtxt(f,delimiter=',',skiprows=1)
    print(data.shape)

3.采用Pandas导入数据

通过Pandas来导入CSV文件要使用read_csv函数。这个函数的返回值是 DataFrame,可以很方便地进行下一步的处理。这个函数的名称非常直观,便于代码的阅读和后续对数据的处理。在机器学习的项目中,经常利用 Pandas来做数据清洗与数据准备工作。因此,在导入 CSV 文件时,推荐使用这个方法。

#通过Pandas导入CSV文件
import pandas as pd
filename="pima_data.csv"
dataset=pd.read_csv(filename)
print(data.shape)

参考文献:

[1] 魏贞原. 机器学习:Python实践[M]. 电子工业出版社, 2018-01.

你可能感兴趣的:(机器学习:python实践,python,pandas,数据分析)