第2章 特征理解:我们的数据集里有什么?
主要内容:
结构化数据和非结构化数据
定量数据与定性数据
数据的4个等级
探索性数据分析和数据可视化
描述性统计
2.1 数据结构的有无
结构化数据:可以分成观察值和特征数据,一般以表格的形式组织(行是观察值。列是特征)。
非结构化数据:作为自由流动的实体,不遵循标准组织结构的数据。通常,非结构数据在我们看来就是一团数据,或者就是一个特征。
#导入数据转换包pandas import pandas as pd #从服务器日志中创建pandas DataFrame logs = pd.read_table("../data/server_logs.txt",header = None,names = ['info']) #header = None 代表数据的第一行是第一个数据点,而不是列名 #names = ['info'] 表示我再DataFrame中手动设置了列名,方便使用。 logs.head() #可以用.head()方法看一下前5行
2.2 定量数据和定性数据
定量数据本质上是数值,应你是衡量某样东西的数量。
定性数据本质上是类别,应该是描述某样东西的性质。
#导入探索性数据分析所需要的包 #存储表格数据 import pands as pd #数学计算包 import numpy as np #流行的数据可视化包 import matplotlib.pyplot as plt #另一个流行的数据可视化包 import seaborn as sns #允许行内渲染图形 %matplotlib inline #流行的数据可视化主题 plt.style.use('fivethirtyeight') #导入收据集 salary_ranges = pd.read_csv ("../data/salary.csv') #查看前几行 salary_ranges.head() #用.info()方法了解数据有多少行 #查看数据有多少行,是否有缺失值,以及每一列数的类型 salary_ranges.info() #缺失值数量的另一种统计方法 salary_ranges.isnull().sum() #用describe方法查看一些定量数据描述性统计。注意,describe方法默认描述定量列,但是如果没有定量列,也会描述定性列 salary_ranges.describe()
当处理定量数据的时候,一般使用整数或者浮点数作为类型;定性数据一般使用字符串或Unicode对象
2.3 数据的4个等级
定类等级
定序等级
定距等级
定比等级
2.3.1 定类等级
定类等级是数据的第一个等级,其结构是最弱的。这个等级的数据就是按名称进行分类的。
# 对工作的种类进行计数 用.value_counts()方法 salary_ranges['Grade'].value_counts().head()
2.3.2 定序等级
定序等级继承了定类等级的所有属性,而且有重要的附加属性:
定序等级的数据可以自然排序;
这就意味着,可以认为列中的某些数据比其他数据更好或更大。
2.3.3 定距等级
在定类和定序等级,一直处理的是定性数据,即使其内容是数,也不能代表真实的数量。在定距等级中,数值数据不仅可以像定序数据一样排序,而且值之间的差异也有意义。这就意味着,在定距等级,我们不仅可以对值进行排序和比较,还可以进行加减(所以可以引入算数平均数和标准差)。
2.3.4定比等级
在这个等级上,拥有最高程度的控制和数学运算能力。在定距等级的基础上,增加了绝对零点的概念,可以做乘除运算。