数据导入和数据理解以及数据可视化

1.CSV文件
  CSV文件是用逗号(,)分隔的文本文件,在数据导入之前,通常会审查CSV文件中的内容。通常注意以下几个方面。

1.1文件头

  如果CSV的文件里包括文件头的信息,可以很方便地使用地使用文件头信息来设置读入数据字段的属性名称。如果文件里不含有文件头信息,需要自己手动设定读入文件地字段属性名称。数据导入时,设置字段属性名称,有助于提高数据处理程序地可读性。

1.2.文件中的注释

  在CSV文件中,注释行以“#”号开头的。是否需要对读入的注释行做处理,取决于采用什么方式读入CSV文件。

1.3.分隔符

  CSV文件的标准分隔符是逗号(,),当然也可以使用Tab键或空格键作为自定义的分隔符。当使用这两种分隔符时,文件读取是要指明分隔符的。

1.4.引号

  当有的字段值中有空白时,这些值通常会被引号引起来,默认使用双引号来标记这些字段值。如果采用自定义格式,那么在文件读取时候要明确在文件中采用的自定义格式。

  通常采用Pandas导入数据

from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
print(data.shape)

2.理解数据
  理解数据的七种方法:
  2.1简单的查看数据

from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
peek = data.head(10)
print(peek)

  2.2审查数据的维度
  在机器学习中要注意数据的行和列,必须对所拥有的数据非常了解,要知道有多少行和多少列,这是因为:a.太多的行会导致花费大量时间来训练算法得到模型;太少的数据会导致对算法的训练不充分,得不到合适的模型。b.如果数据具有太多的特征,会引起某些算法性能低下的问题。

from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
print(data.shape)

  2.3.审查数据的类型和属性
  数据的类型是很重要的一个属性。字符串会被转化成浮点数或整数,以便于计算和分类。

from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
print(data.dtypes)

  2.4.通过描述性统计分析数据
  描述性统计可以给出一个更加直观,更加清晰的视角,以加强对数据的理解。

from pandas import set_option
from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
set_option('display.width',100)#横向最多显示多少个字符
set_option('precision',4)#显示小数点后的位数
print(data.describe())

  2.5总结查看数据分类的分布情况
  在分类算法中,需要知道每个分类的数据大概有多少条记录,以及数据分布是否平衡。如果数据分布的平衡性很差,需要在数据加工阶段进行数据处理,以提高数据分布的平衡性。

from pandas import set_option
from pandas import read_csv
filename = '/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
print(data.groupby('class').size())

  2.6理解数据属性的相关性
  数据属性的相关性是指数据的两个属性是否相互影响,以及这种影响是什么方式的。非常通用的计算两个属性的相关性的方法是皮尔逊相关系数,皮尔逊相关系数是指度量两个变量间相关程度的方法。它是一个介于1和-1之间的值,其中,1表示变量完全正想光,0表示无关,-1表示完全负相关。在自然科学领域中,该系数广泛用于度量两个变量之间的相关程度。在机器学习中,当数据的关联性比较高时,有些算法(如线性回归,逻辑回归)的性能会降低。所以在开始训练算法前,查看一下算法的关联性时一个很好的方法。当数据特征的相关性比较高时,应该考虑对特征进行降维处理。

from pandas import read_csv
from pandas import set_option
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
set_option('display.width',100)
set_option('precision',2)
print(data.corr(method='pearson'))#data.corr()方法计算皮尔逊相关系数

  2.7.审查数据的分布情况
  通过分析数据的高斯分布情况来确认数据的偏离情况。在很多机器学习算法中都会假定数据遵循高斯分布,先计算数据的高斯偏离情况,再根据偏离情况准备数据。

from pandas import read_csv
from pandas import set_option
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
print(data.skew())
#skew()函数的结果显示了数据分布时左偏还是右偏,当数据接近0时,表示数据的偏差非常小。

3.数据可视化
  3.1单一图表
  单一图表分为三种:1.直方图 2.密度图 3.箱线图
  3.1.1直方图
  直方图又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据的分布情况。一般用横轴表示数据类型,纵轴表示分布情况。直方图可以非常直观地展示每个属性地分布状况。通过图表可以很直观地看到数据是高斯分布,指数分布还是偏态分布。

from pandas import read_csv
import matplotlib.pyplot as plt
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
data.hist()
plt.show()

  3.1.2密度图
  密度图是一种表现与数据值对应的边界或域对象地图形表示方法,一般用于呈现连续变量。密度图类似于对直方图进行抽象,用平滑地线来描述数据的分布。这也是一种用来显示数据分布的图表。

from pandas import read_csv
import matplotlib.pyplot as plt
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
data.plot(kind='density',subplots=True,layout=(3,3),sharex=False)
plt.show()

  3.1.3箱线图
  箱线图是一种很好的用于显示数据分布状况的图形。首先画一条中位数线,然后以下四分位数和上四分位数画一个盒子,上下各有一条横线,表示上边缘和下边缘,通过横线来显示数据的伸展状况,游离在边缘之外的点为异常值。

from pandas import read_csv
import matplotlib.pyplot as plt
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
data.plot(kind='box',subplots=True,layout=(3,3),sharex=False)
plt.show()

  3.2多重图表
  多重图表显示不同属性之间的关联关系:相关矩阵图和散点矩阵图。
  3.2.1相关矩阵图
  相关矩阵图主要用来展示两个不同属性相互影响的程度。如果两个属性按照相同的方向变化,说明是正向影响。如果两个属性朝相反方向变化,说明是反向影响。把所有属性两两影响的关系展示出来的图表就叫做相关矩阵图。矩阵图法就是从多维问题的事件中找出成对的因素,排列成矩阵图,然后根据矩阵图来分析问题,确定关键点。

from pandas import read_csv
import matplotlib.pyplot as plt
import numpy as np
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
correlations = data.corr()
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations,vmin=-1,vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
plt.show()

  3.2.2散点矩阵图
  散点矩阵图表示因变量随自变量变化的大致趋势,据此可以选择合适的函数对数据进行拟合。用散点矩阵图来绘制各个变量之间的散点图,这样可以快速发现各个变量间的主要相关性,这在进行多元线性回归时显得尤为重要。

from pandas import read_csv
import matplotlib.pyplot as plt
import numpy as np
from pandas.plotting import scatter_matrix
filename='/home/hadoop/DataSet/pima indians.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
scatter_matrix(data)
plt.show()

猜你喜欢

转载自blog.csdn.net/heloiselt/article/details/80670967