Python安装及数据处理的快速入门指南

155 阅读13分钟

这个快速入门教程将让你在Python中为数据科学进行设置和编码。

如果你想学习世界上最需要的编程语言之一......你就来对地方了。

在本指南结束时,你将有一个坚实的基础,并能够跟随本网站的其他教程,即使你以前从未编程过。让我们直接跳入!

内容表

  1. 安装Anaconda
  2. 打开Jupyter笔记本
  3. 开始新的笔记本
  4. 尝试数学计算
  5. 导入数据科学库
  6. 导入你的数据集
  7. 探索你的数据
  8. 清洁你的数据集
  9. 设计功能
  10. 训练一个简单的模型
  11. 接下来的步骤

第一步:安装Anaconda

我们强烈建议安装Anaconda发行版,它包括Python、Jupyter Notebook(一种在数据科学家中非常流行的轻量级IDE)和所有主要的库。

这是最接近于一站式服务的东西,可以满足你所有的设置需求。

只需下载Anaconda和最新版本的Python 3,然后按照向导操作即可。

Anaconda Installation Screenshot (Python for Data Science Quickstart Guide)

第2步:启动Jupyter笔记本

Jupyter笔记本是我们最喜欢的 集成开发环境(集成开发环境),用于Python中的数据科学。集成开发环境只是一个高级文本编辑器的花名,用于编码。

(作为一个类比,把Excel想象成一个 "电子表格的IDE"。例如,它有标签、插件、键盘快捷键和其他有用的附加功能)。

好消息是,Jupyter Notebook已经和Anaconda一起安装了。为协同作用欢呼三声吧!要打开它,在命令提示符(Windows)或终端(Mac/Linux)中运行以下命令。

jupyter notebook

或者,你也可以打开Anaconda的 "Navigator "应用程序,然后从那里启动笔记本。

Launching from Anaconda Navigator

你应该看到这个仪表板在你的浏览器中打开。

Jupyter Notebook Dashboard

注意:如果你收到一条关于 "登录 "的信息,只需按照浏览器中的说明进行操作。你只需要从命令提示符/终端粘贴一个标记。

第3步:打开新的笔记本

首先,导航到你想保存笔记本的文件夹。对于初学者,我们建议有一个单一的 "数据科学 "文件夹,你也可以用它来存储你的数据集。

Navigating to Data Science Folder

然后,通过点击右上方的 "新建 "打开一个新的笔记本。它将在你的默认网络浏览器中打开。你应该看到一个充满潜力的空白画布。

New Jupyter Notebook

第四步:尝试数学计算

接下来,让我们写一些代码。Python非常棒,因为它的用途非常广泛。例如,你可以用Python作为计算器。

import math

# Area of circle with radius 5
25*math.pi

# Two to the fourth
2**4

# Length of triangle's hypotenuse
math.sqrt(3**2 + 4**2)

(要运行一个代码单元,点击该单元,使其高亮,然后按 Shift + Enter键盘)。

一些重要的说明。

  • 首先,我们 进口 Python的数学模块,它提供了方便的函数(例如:

    math.sqrt()
    

    )和数学常量(例如:

    math.pi
    

    )。

  • 第二,2*2*2*2或 "2到4"被写成

    2**4
    

    如果你写成

    2^4
    

    你会得到一个非常不同的输出结果!

  • 最后,"标签"(#)后面的文字被称为 评论.正如它们的名字所暗示的那样,这些文本片段不会作为代码运行。

此外,Jupyter Notebook只会显示最后一行代码的输出。

Jupyter Only Last Output

要在一个输出中打印多个计算结果,请将每个计算结果包裹在print(...)函数中。

# Area of circle with radius 5
print( 25*math.pi )

# Two to the fourth
print( 2**4 )

# Length of triangle's hypotenuse
print( math.sqrt(3**2 + 4**2) )

另一个有用的提示是,你可以把东西储存在 对象(即变量)。看看你是否能跟上这段代码在做什么。

message = "The length of the hypotenuse is"
c = math.sqrt(3**2 + 4**2)
print( message, c )

顺便说一下,在上面的代码中,

message

被引号所包围,这意味着它是一个 字符串.字符串是由单引号或双引号包围的任何字符序列。

现在,我们现在不打算进一步深入研究。要学习更多的编程基础知识,请查看我们的Python for Data Science自学指南

与流行的看法相反,你实际上并不需要学习大量的编程来使用Python进行数据科学。 这是因为你所需要的大多数数据科学和机器学习功能已经被打包成了 或代码包,你可以导入并使用开箱即用。

第5步:导入数据科学库

把Jupyter Notebook看作是Python的一个大游乐场。现在你已经设置好了,你可以尽情地玩了。Anaconda几乎拥有所有你需要的库,所以测试一个新的库就像导入它一样简单。

这就带来了下一个步骤,让我们导入这些库!在一个新的代码单元中(插入>下面插入单元),写下以下代码。

import pandas as pd

import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.linear_model import LinearRegression

(第一次运行这段代码可能需要一些时间。)

那么,我们刚才做了什么?让我们把它分解一下。

  • 首先,我们导入了Pandas库。我们还将其命名为 别名

    pd
    

    。这意味着我们可以用

    pd
    

    来调用这个库。你很快就会看到它的作用。

  • 接下来,我们从matplotlib库中导入了pyplot 模块matplotlib库中导入。Matplotlib 是 Python 的主要绘图库。没有必要把整个库带进来,所以我们只导入了一个模块。同样,我们给它一个别名:

    plt
    

  • 哦,对了,还有

    %matplotlib inline
    

    这个命令?那是针对Jupyter笔记本的。它只是告诉笔记本在笔记本中显示我们的图,而不是在一个单独的屏幕中。

  • 最后,我们从scikit-learn导入了一个基本的线性回归算法。Scikit-learn有大量的算法可供选择。在本指南的末尾,我们将为你指出一些资源来学习更多关于这些算法的知识。

在数据科学方面还有很多其他优秀的库,但这些是最常用的。

第6步:导入你的数据集

接下来,我们来导入一个数据集。Pandas有一套IO工具,允许你读取和写入数据。你可以使用CSV、JSON、Excel、SQL数据库,甚至是原始文本文件等格式。

在本教程中,我们将从一个Excel文件中读取有关建筑物能源效率的数据。别担心--即使你没有安装Excel,你也可以跟着学。

首先,下载数据集,并把它放到与你当前Juptyer笔记本相同的文件夹中。

然后,使用下面的代码来读取文件,并将其内容存储在一个

df

对象中("df "是指 数据框架).

df = pd.read_excel( 'ENB2012_data.xlsx' )

如果你把数据集保存在一个子文件夹里,那么你就会像这样写代码。

df = pd.read_excel( 'subfolder_name/ENB2012_data.xlsx' )

很好!你已经成功地用Python导入了你的第一个数据集。

要看里面的内容,只需在你的笔记本中运行这段代码(它显示数据集的前5个观测值)。

df.head()

Example Observations from Dataset

对于这一步的额外练习,请随时从我们精心挑选的数据集列表中下载一些其他数据集。然后,尝试使用其他的IO工具(比如

pd.read_csv()

)来导入不同格式的数据集。

我们在《Python数据处理教程》中展示了更多你可以在Pandas中做的事情(在新标签中打开)。

第7步:探索你的数据

在第6步中,我们已经看到一些 观察实例数据框中的内容。现在我们准备看一下图。

我们现在不会去看整个探索性分析阶段的内容。相反,让我们快速浏览一下 分布我们的变量。我们将从 "X1 "变量开始,它指的是文件数据字典中描述的 "相对紧凑度"。

plt.hist( df.X1 )

Matplotlib Histogram Plot

正如你可能已经猜到的那样,

plt.hist()

产生一个 柱状图.

一般来说,这些类型的函数会有不同的 参数你可以把这些参数传给它们。这些参数控制着诸如颜色方案、使用的bin数量、坐标轴等等的东西。

没有必要记住所有的参数。相反,要养成检查文档页中可用选项的习惯。例如,plt.hist()的文档页指出,你可以改变直方图中的bin数。

Matplotlib Documentation Page

这意味着我们可以像这样改变分层的数量。

plt.hist( df.X1, bins=5 )

Matplotlib Histogram Plot with Bins

目前,我们不建议尝试对matplotlib进行太多花哨的操作。它是一个强大但复杂的库。

相反,我们更喜欢一个建立matplotlib之上的库,叫做seaborn。如果说matplotlib "试图让简单的事情变得简单,让困难的事情变得可能",那么seaborn则试图让一组定义明确的困难的事情变得简单。

在我们的Seaborn数据可视化教程中可以了解到更多关于它的信息。

第8步:清理你的数据集

在我们探索了数据集之后,是时候清理它了。幸运的是,这个数据集已经很干净了,因为它最初是从受控模拟中收集的。

即便如此,为了说明问题,我们至少要检查一下 缺失值.你只需用一行代码就可以做到这一点(但这一行中包含了大量很酷的东西)。

df.isnull().sum()

让我们来解开这个问题。

  • df
    

    是我们存储数据的地方。它被称为 "数据框架",它也是一个Python对象,就像步骤4中的变量。

  • .isnull()
    

    被称为 方法,这只是一个花哨的术语,指的是附加在一个对象上的函数。这个方法查看我们的整个数据框架,并将任何有缺失值的单元格标记为

    True
    

    。(提示:尝试运行

    df.head().isnull()
    

    ,看看你得到什么!)

  • 最后,

    .sum()
    

    是一个方法,对每一列的所有

    True
    

    值进行求和。嗯......严格地说,它对任何数字进行求和,同时将

    True
    

    作为1,将

    False
    

    作为0。

你可以在Pandas数据框架的文档页面上了解更多关于

.isnull()

.sum()

第9步:工程特征

特征工程通常是数据科学家花费最多时间的地方。在这里你可以使用 "领域知识 "来创建新的 输入特征 (即变量),这可以极大地提高模型的性能。

让我们从一个低垂的果实开始:创建 虚拟变量.

通常,你会有两种类型的特征:数值型和分类型...

  • 数值型 例如,"教育年限 "是一个数字特征。

  • 分类的 特征是那些有类而不是数值的。例如,"最高教育水平 "将是一个分类特征,其类别可以是:

    ['high school', 'some college', 'college', 'some graduate', 'graduate']
    

在这个例子中,"最高教育水平 "的分类特征也是顺序的.换句话说,它的类有一个隐含的顺序。例如,

['college']

意味着比

['high school']

更多的学校教育。

当分类特征不是序数时,就会出现一个问题。事实上,在我们目前的数据集中就有这个问题。

如果你还记得它的数据字典,特征X6(方向)和X8(釉面面积分布)实际上是分类的。例如,X6有四个可能的值。

2 == 'north',
3 == 'east',
4 == 'south',
5 == 'west'

然而,以目前的编码方式(即作为四个整数),一个算法将把 "东 "解释为 "比北多1","西 "解释为 "东值的2倍"。

这没有意义,对吗?

因此,我们应该为X6和X8创建 虚拟变量X6和X8。这些是全新的输入特征,只取0或1的值。你要为每个特征的每一个独特的类创建一个哑巴。

所以对于X6,我们要创建四个变量-X6_2、X6_3、X6_4和X6_5,代表其四个独特的类。我们可以为X6和X8一举完成这个任务。

df = pd.get_dummies( df, columns = ['X6', 'X8'] )

(提示:运行这段代码后,再次尝试运行

df.head()

这是你所期望的吗?)

我们暂时不会再介绍更多的功能工程,但你可以在我们的《功能工程最佳实践指南》中得到一份具体想法的清单。

第十步。训练一个简单的模型

你一直在跟随我们吗?很好!

在短短的几步之后,我们实际上已经准备好训练一个模型了。但是在我们开始之前,先声明一下:我们现在不会使用模型训练的最佳实践。相反,这段代码被简化到了极致。但从这些 "玩具问题 "开始作为学习工具是超级有帮助的。

在我们做其他事情之前,让我们把我们的数据集分成独立的对象,用于我们的 输入特征(X)和 目标变量(y).目标变量只是我们希望用我们的模型来预测的东西。

让我们来预测 "Y1",一栋楼的 "供暖负荷"。

# Target variable
y = df.Y1

# Input features
X = df.drop( ['Y1', 'Y2' ], axis=1)

在第一行代码中,我们将Y1从数据框架中复制到一个单独的

y

对象中。然后,在第二行代码中,我们把Y1和Y2以外的所有变量复制到

X

对象中。

.drop()

是另一个数据框架方法,它有两个重要的参数。

  • 要删除的变量(例如:

    ['Y1', 'Y2']
    

  • 是从索引 (

    axis=0
    

    ) 还是从列 (

    axis=1
    

    ) 中删除

现在我们准备训练一个简单的模型。这是一个两步的过程。

# Initialize model instance
model = LinearRegression()

# Train the model on the data
model.fit(X, y)

首先,我们初始化一个模型 例子.把它看作是模型的单一 "版本"。例如,如果你想训练一个单独的模型并对其进行比较,你可以初始化一个单独的实例(例如:

model_2 = LinearRegression()

)。

然后,我们调用

.fit()

方法,并将输入特征(X)和目标变量(y)作为参数传给他。

就这样了!

有许多很酷的机制在引擎盖下工作,但这基本上是你创建一个基本模型所需要的。事实上,你可以像这样获得预测结果并计算模型的R^2。

from sklearn.metrics import r2_score

# Get model R^2
y_hat = model.predict(X)
r2_score(y_hat, y)
# 0.9072741541257009

恭喜你!你现在已经正式开始运行Python。你现在已经正式开始运行用于数据科学的Python了。

说白了,完整的数据科学过程要更多一些。

  • 有更多的探索性分析、数据清洗和特征工程
  • 你会想尝试其他算法
  • 你还需要模型训练的最佳实践,如训练/测试分割、交叉验证和超参数调整,以防止过度拟合

但这是一个很好的开始,你已经在学习其他的东西的路上了。