数据科学是计算领域一个令人兴奋的新领域,它围绕分析,可视化,关联和解释我们的计算机收集的有关世界的无限信息而建立。 当然,称其为“新”领域有点不屑一顾,因为该学科是统计,数据分析和单纯的老式强迫性科学观察的衍生。

但是,数据科学是这些学科的形式化分支,拥有自己的流程和工具,并且可以广泛应用于以前从未产生过大量不可管理数据的学科(例如视觉效果)。 数据科学是一个全新的机会,可以重新审视海洋学,气象学,地理学,制图学,生物学,医学与健康以及娱乐行业的数据,并更好地了解模式,影响和因果关系。

像其他大型且看似包罗万象的领域一样,知道从哪里开始探索数据科学可能会令人生畏。 有很多资源可以帮助数据科学家使用他们喜欢的编程语言来实现其目标,其中包括最流行的编程语言之一:Python。 使用Pandas , Matplotlib和Seaborn库,您可以学习数据科学的基本工具集。

如果您还不熟悉Python的基础知识,请先阅读我对Python的介绍,然后再继续。

创建Python虚拟环境

要使用venv激活虚拟环境, 请为您的环境创建一个名称(我将使用example )并使用以下命令创建它:

$  python3 -m venv example 
$  python3 -m venv example

来源环境的bin目录来激活它的激活文件:

$ 
     
     source . 
     
     / example 
     
     / bin 
     
     / activate 
     
     
( example 
     
     ) $

现在,您“处于”虚拟环境中,这是一个干净的状态,您可以在其中构建针对问题的自定义解决方案-额外增加了自觉需要安装所需库的负担。

安装Pandas和NumPy

您必须在新环境中安装的第一个库是Pandas和NumPy。 这些库在数据科学中很常见,因此这不是您最后一次安装它们。 它们也不是您在数据科学中唯一需要的库,但是它们是一个好的开始。

Pandas是BSD许可的开源库,可轻松处理数据结构以进行分析。 它取决于NumPy,这是一个提供多维数组,线性代数,傅立叶变换等的科学图书馆。 使用pip3安装两者:

( example ) $ pip3 install pandas 
( example ) $ pip3 install pandas

安装Pandas还会安装NumPy,因此您无需同时指定两者。 一旦将它们安装到虚拟环境中,安装包就会被缓存,这样,当您再次安装它们时,就不必从Internet下载它们。

这些是您现在唯一需要的库。 接下来,您需要一些样本数据。

生成样本数据集

数据科学是关于数据的,幸运的是,科学,计算和政府组织可以提供许多免费和开放的数据集。 虽然这些数据集是教育的重要资源,但它们具有比此简单示例所需的数据更多的数据。 您可以使用Python快速创建示例和可管理的数据集:

#!/usr/bin/env python3 
     
     

import 
     
     random 
     
     

def rgb 
     
     ( 
     
     ) :
     
     

    NUMBER 
     
     = 
     
     random . 
     
     randint 
     
     ( 
     
     0 
     
     , 
     
     255 
     
     ) / 
     
     255 
     
     

    
     
     return NUMBER
     
     


FILE 
     
     = 
     
     open 
     
     ( 
     
     'sample.csv' 
     
     , 
     
     'w' 
     
     ) 
     
     

FILE. 
     
     write 
     
     ( 
     
     '"red","green","blue"' 
     
     ) 
     
     
for COUNT 
     
     in 
     
     range 
     
     ( 
     
     10 
     
     ) :
     
     

    FILE. 
     
     write 
     
     ( 
     
     ' \n {:0.2f},{:0.2f},{:0.2f}' . 
     
     format 
     
     ( rgb 
     
     ( 
     
     ) 
     
     , rgb 
     
     ( 
     
     ) 
     
     , rgb 
     
     ( 
     
     ) 
     
     ) 
     
     )

这将生成一个名为sample.csv的文件,该文件由随机生成的浮点数组成,这些浮点数在本示例中代表RGB值(在视觉效果中通常是数百个跟踪值)。 您可以将CSV文件用作熊猫的数据源。

用熊猫摄取数据

Pandas的基本功能之一是它具有摄取和处理数据的能力,而无需程序员编写仅用于解析输入的新功能。 如果您习惯于自动执行此操作的应用程序,那么这似乎不是很特别,但请想象一下在LibreOffice中打开CSV并必须编写公式以在每个逗号处拆分值。 熊猫使您免受诸如此类的低级操作的影响。 以下是一些简单的代码,可用于提取和打印以逗号分隔的值的文件:

#!/usr/bin/env python3 
     
     

from pandas 
     
     import read_csv 
     
     , DataFrame
     
     
import pandas 
     
     as pd 
     
     


FILE 
     
     = 
     
     open 
     
     ( 
     
     'sample.csv' 
     
     , 
     
     'r' 
     
     ) 
     
     

DATAFRAME 
     
     = pd. 
     
     read_csv 
     
     ( FILE 
     
     ) 
     
     
print 
     
     ( DATAFRAME 
     
     )

前几行导入了Pandas库的组件。 Pandas库是一个广泛的库,因此在查找除本文基本功能之外的功能时,您会经常参考其文档。

接下来,通过打开您创建的sample.csv文件来创建变量f 。 Pandas模块read_csv (在第二行中导入)使用该变量创建一个dataframe 。 在Pandas中,数据框是二维数组,通常被认为是表格。 将数据放入数据框中后,您可以按列和行进行操作,查询其范围,然后执行更多操作。 目前,示例代码仅将数据帧输出到终端。

运行代码。 您的输出将与此样本输出略有不同,因为数字是随机生成的,但是格式是相同的:

( example 
     
     ) $ python3 . 
     
     / parse.py 
     
     

    
     
     red  green  blue
     
     
0  
     
     0.31   
     
     0.96  
     
     0.47 
     
     
1  
     
     0.95   
     
     0.17  
     
     0.64 
     
     
2  
     
     0.00   
     
     0.23  
     
     0.59 
     
     
3  
     
     0.22   
     
     0.16  
     
     0.42 
     
     
4  
     
     0.53   
     
     0.52  
     
     0.18 
     
     
5  
     
     0.76   
     
     0.80  
     
     0.28 
     
     
6  
     
     0.68   
     
     0.69  
     
     0.46 
     
     
7  
     
     0.75   
     
     0.52  
     
     0.27 
     
     
8  
     
     0.53   
     
     0.76  
     
     0.96 
     
     
9  
     
     0.01   
     
     0.81  
     
     0.79

假设您只需要数据集中的红色值。 您可以通过声明数据框的列名称并有选择地仅打印您感兴趣的列来做到这一点:

from pandas 
     
     import read_csv 
     
     , DataFrame
     
     
import pandas 
     
     as pd 
     
     


FILE 
     
     = 
     
     open 
     
     ( 
     
     'sample.csv' 
     
     , 
     
     'r' 
     
     ) 
     
     

DATAFRAME 
     
     = pd. 
     
     read_csv 
     
     ( FILE 
     
     ) 
     
     

# define columns 
     
     

DATAFRAME. 
     
     columns 
     
     = 
     
     [ 
     
     'red' 
     
     , 
     
     'green' 
     
     , 
     
     'blue' 
     
     ] 
     
     

print 
     
     ( DATAFRAME 
     
     [ 
     
     'red' 
     
     ] 
     
     )

现在运行代码,您将只看到红色的列:

( example 
     
     ) $ python3 . 
     
     / parse.py 
     
     
0    
     
     0.31 
     
     
1    
     
     0.95 
     
     
2    
     
     0.00 
     
     
3    
     
     0.22 
     
     
4    
     
     0.53 
     
     
5    
     
     0.76 
     
     
6    
     
     0.68 
     
     
7    
     
     0.75 
     
     
8    
     
     0.53 
     
     
9    
     
     0.01 
     
     

Name: 
     
     red , dtype: float64

处理数据表是习惯如何使用Pandas解析数据的好方法。 从数据框中选择数据的方法有很多,而您尝试的次数越多,数据就越自然。

可视化数据

许多人喜欢可视化信息已不是什么秘密。 这是因为图表是与高层管理人员开会的主要内容,也是“信息图表”在新闻界如此流行的原因。 数据科学家的工作之一是帮助其他人理解大量数据样本,并且有一些图书馆可以帮助您完成这项任务。 将熊猫与可视化库结合使用可以对数据进行可视化解释。 Seaborn是一种流行的可视化开源库,它基于开源Matplotlib 。

安装Seaborn和Matplotlib

您的Python虚拟环境还没有Seaborn和Matplotlib,因此请使用pip3安装它们。 Seaborn还安装了Matplotlib以及许多其他库:

( example ) $ pip3 install seaborn 
( example ) $ pip3 install seaborn

为了使Matplotlib显示图形,您还必须安装PyGObject和Pycairo 。 这涉及到编译代码,只要您安装了必需的头文件和库,pip3便可以为您执行此操作。 您的Python虚拟环境不了解这些支持库,因此您可以在环境内部或外部执行安装命令。

在Fedora和CentOS上:

( example 
     
     ) $ 
     
     sudo dnf 
     
     install 
     
     -y 
     
     gcc zlib-devel 
     
     bzip2 bzip2-devel readline-devel \
     
     

sqlite sqlite-devel openssl-devel tk-devel 
     
     git python3-cairo-devel \
     
     

cairo-gobject-devel gobject-introspection-devel

在Ubuntu和Debian上:

( example 
     
     ) $ 
     
     sudo apt 
     
     install 
     
     -y libgirepository1.0-dev build-essential \
     
     

libbz2-dev libreadline-dev libssl-dev zlib1g-dev libsqlite3-dev 
     
     wget \
     
     

curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libcairo2-dev

安装它们之后,您可以安装Matplotlib所需的GUI组件:

( example ) $ pip3 install PyGObject pycairo 
( example ) $ pip3 install PyGObject pycairo

使用Seaborn和Matplotlib显示图

在您喜欢的文本编辑器中打开一个名为vizualize.py的文件。 要创建数据的折线图可视化,首先,您必须导入必要的Python模块:在前面的代码示例中使用的Pandas模块:

#!/usr/bin/env python3 
     
     

from pandas 
     
     import read_csv 
     
     , DataFrame
     
     
import pandas 
     
     as pd

接下来,导入Seaborn,Matplotlib和Matplotlib的几个组件,以便您可以配置生成的图形:

import seaborn 
     
     as sns
     
     
import matplotlib
     
     
import matplotlib. 
     
     pyplot 
     
     as plt
     
     
from matplotlib 
     
     import rcParams

Matplotlib可以将其输出导出为多种格式,包括PDF,SVG或桌面上的GUI窗口。 对于此示例,将输出发送到桌面很有意义,因此必须将Matplotlib后端设置为GTK3Agg。 如果您不使用Linux,则可能需要使用TkAgg后端。

在为GUI窗口设置后端后,设置窗口的大小和Seaborn预设样式:

matplotlib. 
     
     use 
     
     ( 
     
     'GTK3Agg' 
     
     ) 
     
     

rcParams 
     
     [ 
     
     'figure.figsize' 
     
     ] 
     
     = 
     
     11 
     
     , 
     
     8 
     
     

sns. 
     
     set_style 
     
     ( 
     
     'darkgrid' 
     
     )

现在,您的显示已配置完毕,代码已经很熟悉了。 使用Pandas摄取sample.csv文件,并定义数据框的列:

FILE 
     
     = 
     
     open 
     
     ( 
     
     'sample.csv' 
     
     , 
     
     'r' 
     
     ) 
     
     

DATAFRAME 
     
     = pd. 
     
     read_csv 
     
     ( FILE 
     
     ) 
     
     

DATAFRAME. 
     
     columns 
     
     = 
     
     [ 
     
     'red' 
     
     , 
     
     'green' 
     
     , 
     
     'blue' 
     
     ]

使用有用格式的数据,您可以将其绘制在图形中。 将每一列用作绘图的输入,然后使用plt.show()在GUI窗口中绘制图形。 plt.legend()参数将列标题与图形上的每一行相关联( loc参数将图例放置在图表之外而不是在图表之上):

for i 
     
     in DATAFRAME. 
     
     columns :
     
     

    DATAFRAME 
     
     [ i 
     
     ] . 
     
     plot 
     
     ( 
     
     ) 
     
     


plt. 
     
     legend 
     
     ( bbox_to_anchor 
     
     = 
     
     ( 
     
     1 
     
     , 
     
     1 
     
     ) 
     
     , loc 
     
     = 
     
     2 
     
     , borderaxespad 
     
     = 
     
     1 
     
     ) 
     
     

plt. 
     
     show 
     
     ( 
     
     )

运行代码以显示结果。

Python3数据科学导论 python与数据科学_数据分析

您的图形可以准确显示CSV文件中包含的所有信息:值在Y轴上,索引号在X轴上,并且可以识别图形中的线,以便您知道它们代表什么。 但是,由于该代码正在跟踪颜色值(至少是假装),所以线条的颜色不仅不直观,而且违反直觉。 如果您永远不需要分析颜色数据,则可能永远不会遇到此问题,但是您一定会遇到类似的问题。 可视化数据时,必须考虑呈现数据的最佳方法,以防止查看者从呈现的内容中推断出虚假信息。

为了解决此问题(并展示一些可用的自定义设置),以下代码为每条绘制的线分配了特定的颜色:

import matplotlib
     
     
from pandas 
     
     import read_csv 
     
     , DataFrame
     
     
import pandas 
     
     as pd 
     
     
import seaborn 
     
     as sns
     
     
import matplotlib. 
     
     pyplot 
     
     as plt
     
     
from matplotlib 
     
     import rcParams
     
     


matplotlib. 
     
     use 
     
     ( 
     
     'GTK3Agg' 
     
     ) 
     
     

rcParams 
     
     [ 
     
     'figure.figsize' 
     
     ] 
     
     = 
     
     11 
     
     , 
     
     8 
     
     

sns. 
     
     set_style 
     
     ( 
     
     'whitegrid' 
     
     ) 
     
     


FILE 
     
     = 
     
     open 
     
     ( 
     
     'sample.csv' 
     
     , 
     
     'r' 
     
     ) 
     
     

DATAFRAME 
     
     = pd. 
     
     read_csv 
     
     ( FILE 
     
     ) 
     
     

DATAFRAME. 
     
     columns 
     
     = 
     
     [ 
     
     'red' 
     
     , 
     
     'green' 
     
     , 
     
     'blue' 
     
     ] 
     
     


plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'red' 
     
     ] 
     
     , 
     
     'r-' 
     
     ) 
     
     

plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'green' 
     
     ] 
     
     , 
     
     'g-' 
     
     ) 
     
     

plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'blue' 
     
     ] 
     
     , 
     
     'b-' 
     
     ) 
     
     

plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'red' 
     
     ] 
     
     , 
     
     'ro' 
     
     ) 
     
     

plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'green' 
     
     ] 
     
     , 
     
     'go' 
     
     ) 
     
     

plt. 
     
     plot 
     
     ( DATAFRAME 
     
     [ 
     
     'blue' 
     
     ] 
     
     , 
     
     'bo' 
     
     ) 
     
     


plt. 
     
     show 
     
     ( 
     
     )

这使用特殊的Matplotlib表示法为每列创建两个图。 每列的初始图分配了一种颜色( r代表红色, g代表绿色, b代表蓝色)。 这些是内置的Matplotlib设置。 -表示实线(双破折号,例如r--创建虚线)。 为每个具有相同颜色的列创建第二个图,但是使用o表示点或节点。 为了演示内置的Seaborn主题, 请将 sns.set_style的值更改为whitegrid 。

Python3数据科学导论 python与数据科学_数据分析_02

停用虚拟环境

探索完熊猫并完成绘图后,可以使用deactivate命令停用Python虚拟环境:

( example 
     
     ) $ deactivate
     
     

$

当您想重新使用它时,只需像在本文开始时一样重新激活它即可。 重新激活虚拟环境时,您必须重新安装模块,但是它们是从缓存安装的,而不是从Internet下载的,因此您不必在线。

无限可能

熊猫,Matplotlib,Seaborn和数据科学的真正力量是无穷的潜力,使您能够以有意义和启发性的方式解析,解释和构建数据。 下一步是使用您在本文中学到的新工具探索简单的数据集。 Matplotlib和Seaborn不仅具有折线图,还具有更多的功能,因此,请尝试创建条形图或饼图或完全创建其他图形。

一旦您了解了您的工具集并对如何关联数据有了一些想法,则可能性是无限的。 数据科学是一种寻找隐藏在数据中的故事的新方法。 让开源成为您的媒介。

翻译自: https://opensource.com/article/19/9/get-started-data-science-python