数据挖掘的传统步骤一般为,数据预处理,特征工程,模型训练,模型检验等。但是,在数据预处理之前,有一个很重要的步骤,就是探索数据。
顾名思义,数据探索就是在数据挖掘之前,弄清楚我们所要处理的对象的情况。在这里有一本书可以推荐一下,python数据分析与挖掘实战,里面很详细的讲解了如何探索数据。同时,也可以查看pandas,matplotlib,numpy等库的讲解,也会有很多相关知识的涉及。由于这次的学习是基于我的毕业设计,所以也可以视作我学习过程的一个记录。
首先我们需要读取数据,python提供了很多库给我们使用,其中pandas就是一个很好用的数据分析工具,主要处理对象为DataFram
对象。DataFram
可以看做是在内存中的二维表格(类似电子表格,包含列名和行标签)。表格中的很多属性都可以进行编程,例如创建数据透视表,基于行或列的计算,绘制数据图等。还可以按照列值进行行分组,或者像SQL一样连接表。Pandas在处理时间序列上也很有优势。读取完数据后,通过一些方法,可以打印出数据集的整体信息,列名以及属性,数据集的大小等。
代码如下:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np;
import time
import statsmodels.api as sm
DataPath='dataset/'
FilePath=DataPath+'train.csv'
def load_nba_data(filePath=FilePath):
return pd.read_csv(filePath,nrows=100000)
nbaData = load_nba_data()
print(nbaData.info())
print(nbaData.head())
print(nbaData.describe())
plt.show()
这里就是通过dataframe对象,展示出了数据集的很多信息。从展示的信息里,我们可以了解到很多关于数据集的信息。
我的数据集信息如上,由此可以看出,这样子能很直观的查看数据信息。
当然,光看文字不是很直观,我们需要图标,来让数据看起来更加直观。我们可以使用hist()这个方法。
nbaData.hist(bins=100,figsize=(30, 60))
这是一个关于频率分布直方图的方法,很好的展示了不同数据出现的频率,非常强大。
这样子,很明显的展现出数据分布情况。
除此之外还有很多其他的方法,很实用有效。我做了笔记,就不一一运行。
df[""].value_counts() //查看某一列的统计情况 ; df[""].value_counts(ascending = True) 升序
df.boxplot(column="") //查看某一列的频率箱图
df.boxplot(column="",by="") //根据一列查看另一列的箱图
df[""].hist(bins= z,figsize=(x,y)) ;df.hist(bins= z,figsize=(x,y)) //查看频率分布直方图
df.pivot_table() //透视表 values:要聚合的值 index:要聚合的index columns:要聚合的columns aggfunc:聚合方式。 mean()求曲平均值
plt.figure(figsize=(x,y)) //创建自定义图像
fig.add_subplot()创建子图
pd.crosstab(df[""],df[""]) //交叉表 交叉表是用于统计分组频率的特殊透视表
df.apply() //axis=0 表示列 axis=1 表示行
这是我在学习过程中,记录的一些有价值的方法,比较实用高效。其中交叉表,apply方法和plot子图的创建非常常用。
数据挖掘中,探索数据这一步很重要,为后面的预处理和特征工程起着铺垫作用。