命令行上的数据科学第二版 三、获取数据

原文:https://datascienceatthecommandline.com/2e/chapter-3-obtaining-data.html

贡献者:Ting-xin

本章讨论 OSEMN 模型的第一步:获取数据。毕竟,没有任何数据,我们就没有多少数据科学可以做。我假设你已经有了解决数据科学问题所需的数据,第一步你需要把这些数据放到你的电脑上(也可能放到 Docker 容器里)。

在 Unix 哲学中,文本是一个通用接口。几乎每个命令行工具都将文本作为输入,或者以文本作为输出,或者两者都有。这就是为什么命令行工具可以很好地协同工作的主要原因。然而,正如我们将看到的,即使只是文本也可以有多种形式。

我们可以通过多种方式获取数据,例如从服务器下载数据、查询数据库或连接到 Web API。有时,数据以压缩的形式或二进制格式出现,如 Microsoft Excel 电子表格。在这一章中,我们将讨论了几个有助于从命令行解决这个问题的工具,包括:curlin2csvsql2csv,以及tar

3.1 概述

在本章中,你将学习如何:

  • 将本地文件复制到 Docker 镜像
  • 从互联网下载数据
  • 解压缩文件
  • 从电子表格中提取数据
  • 查询关系数据库
  • 调用 Web API

首先打开第三章的目录:

$ cd /data/ch03

$ l
total 924K
-rw-r--r-- 1 dst dst 627K Mar  3 10:41 logs.tar.gz
-rw-r--r-- 1 dst dst 189K Mar  3 10:41 r-datasets.db
-rw-r--r-- 1 dst dst  149 Mar  3 10:41 tmnt-basic.csv
-rw-r--r-- 1 dst dst  148 Mar  3 10:41 tmnt-missing-newline.csv
-rw-r--r-- 1 dst dst  181 Mar  3 10:41 tmnt-with-header.csv
-rw-r--r-- 1 dst dst  91K Mar  3 10:41 top2000.xlsx

获取这些文件已经在第二章中做过了。任何其他文件都是使用命令行工具下载或生成的。

3.2 将本地文件复制到 Docker 容器

一种常见的情况是,你自己的计算机上已经有了需要的文件,本节介绍了如何将这些文件放入 Docker 容器。

我在第二章提到 Docker 容器是一个隔离的虚拟环境。但是有一个例外:文件可以在 Docker 容器中进出传输。运行docker run的本地目录会被映射到 Docker 容器中的一个目录。这个目录叫做/data。注意这不是主目录,主目录是/home/dst

如果你的本地计算机上有一个或多个文件,并且你想对它们应用一些命令行工具,那么你需要将这些文件复制或移动到那个映射的目录中。假设你的下载目录中有一个名为logs.csv的文件,现在我们来复制文件。

如果你正在运行 Windows,请打开命令提示符或 PowerShell 并运行以下两个命令:

> cd %UserProfile%\Downloads
> copy logs.csv MyDataScienceToolbox\

如果你运行的是 Linux 或 macOS,请打开一个终端并在你的操作系统上执行以下命令(而不是在 Docker 容器中):

$ cp ~/Downloads/logs.csv ~/my-data-science-toolbox

你也可以使用图形文件管理器(如 Windows Explorer 或 macOS Finder)将文件拖放到正确的目录中。

3.3 从互联网上下载数据

毫无疑问,互联网已经成为了数据的最大来源。当从互联网下载数据时,命令行工具curl被认为是命令行中的瑞士军刀。

3.3.1 curl介绍

当你浏览到一个代表统一资源定位符的 URL 时,你的浏览器会渲染它下载的数据。例如,浏览器会呈现 HTML 文件,自动播放视频文件,显示 PDF 文件。然而,当你使用curl来访问一个 URL 时,它会下载数据,并在默认情况下将其打印出来。curl不会做任何解释和渲染,但幸运的是可以使用其他命令行工具来进一步处理数据。

最简单的调用curl是指定一个 URL 作为命令行参数。现在让我们试着从维基百科下载一篇文章:

$ curl "https://en.wikipedia.org/wiki/List_of_windmills_in_the_Netherlands" |
> trim # ➊
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0



List of windmills in the Netherlands - Wikipedia


                    
                    

你可能感兴趣的:(docker,容器,运维)