在上一篇文章中,我们通过决策树模型,对机器学习有了初步的认识;但是在整个数据分析的生命周期中,建模并不是第一位的,当我们拿到数据后,首先要对数据进行观察、解读,从中发现我们所需要的特征变量,本文将简要介绍如何通过Pandas对数据进行观察与探索。
Pandas
就像我们前面提到的,任何机器学习、数据分析的第一步都是要先了解数据、解读数据, Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。它纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
有了Pandas,我们能快速便捷地处理数据,你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
通常我们在使用中将pandas缩写为pd
,而Numpy缩写为np
import pandas as pd
import numpy as np
Pandas中最重要的部分莫过于DataFrame了,有过数据库基础的读者可以将它视为一个Excel的Sheet或SQL数据表。
Pandas 提供了许多强大的方法供您进行数据操作。
例如,接下来我们将演示如何使用Pandas观察澳大利亚墨尔本的房价数据;Kaggle提供了一套爱荷华州的房价数据供您练习,您可以稍后在练习环境中回顾本文学到的知识。
示例数据路径在:../input/melbourne-housing-snapshot/melb_data.csv
我们通过下面的代码来加载数据:
# 将路径保存到变量,防止多处硬编码
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
# 从csv文件中读取数据,保存在名为 melbourne_data的DataFrame中
melbourne_data = pd.read_csv(melbourne_file_path)
# 输出数据的统计信息,包含无缺数据量,最大值、最小值、均值、标准差,四分位数,下面将会详细介绍。
melbourne_data.describe()
解释数据
describe输出了一个8行n列的数据表
count
count
行统计了此列共有多少行没有缺失值,即:
某列具有缺失值的行 = 总行数 - count;
出现缺失值可能有很多原因,例如调查1室1厅的房屋时,不会询问是否有第二个卧室。
mean
平均值,即是算术平均值,反应此列特征的一般水平。
std
标准差,反应此列数据的离散程度,一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。
min、25%、50%、75%、max
min max分别是最小值和最大值。
25%、50%、75%为四分位数,分位数是将总体的全部数据按大小顺序排列后,处于各等分位置的变量值。如果将全部数据分成相等的两部分,它就是中位数;如果分成四等分,就是四分位数。
第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
第二四分位数 (Q2),又称“[中位数]”,等于该样本中所有数值由小到大排列后第50%的数字。
第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第三四分位数与第一四分位数的差距又称[四分位距](InterQuartile Range,IQR)。
通过四分位数,可以看出一个变量的分布情况是左偏、右偏或对称分布。
进入练习
点击下面的网址进入练习题,您可能先要注册并登录kaggle
https://www.kaggle.com/kernels/fork/1258954
本练习将测试您读取数据和对数据进行统计观察的能力,对有基础的读者来说,这可能很简单,但本教程是一个循序渐进的过程,后面将会有更多更深入的数据预处理、模型构建、模型改进的练习。
课程中使用了墨尔本的数据,为了保证练习效果,避免直接抄袭课件,您必须使用新的数据集,来自爱荷华州的房价数据。
在此练习中,你要学习使用Notebook
编码环境,如果您不熟悉,可以观看一个90秒的介绍视频(有墙)
首先要将这段初始化代码运行一下,鼠标点进去按Shift+Enter
,下方显示 Setup Complete,表示执行成功。
# Set up code checking
from learntools.core import binder
binder.bind(globals())
from learntools.machine_learning.ex2 import *
print("Setup Complete")
如果不执行这段代码,下面的代码将无法执行,例如:
第一步,加载数据
您需要完善下面的代码,然后按Shift+Enter执行代码,加载数据
import pandas as pd
# Path of the file to read
iowa_file_path = '../input/home-data-for-ml-course/train.csv'
# Fill in the line below to read the file into a variable home_data
home_data = pd.read_csv(_)
# Call line below with no argument to check that you've loaded the data correctly
step_1.check()
step_1.check()
会对您的结果进行检查,如果填写正确,将会有绿色的Correct
字样
当然,如果您不知道怎么做,可以取消下面这段二级提示代码的注释,运行它;其中第一级提示hint()
为您讲解需要使用什么技术,第二级提示Solution
给出了正确的源代码,如果您只是需要一点技术提示,请先看看hint()
的提示是否能够唤起你的记忆。
# Lines below will give you a hint or solution code
# step_1.hint()
# step_1.solution()
例如:
# Lines below will give you a hint or solution code
step_1.hint()
step_1.solution()
最后,通过本文,我们了解到Pandas的冰山一角,并且掌握了打开kaggle练习题的正确姿势,为了避免被喷,以后的文章中不再对这部分重复讲解。