数据是数据科学家的根底,因而理解许多加载数据进行剖析的办法至关重要。在这里,咱们将介绍五种Python数据输出技术,并提供代码示例供您参考。

作为初学者,您可能只晓得一种应用_p andas.read_csv_ 函数读取数据的形式(通常以CSV_格局)_。它是最成熟,性能最弱小的性能之一,但其余办法很有帮忙,有时必定会派上用场。

我要探讨的办法是:

  • Manual 函数
  • loadtxt 函数
  • genfromtxtf 函数
  • read_csv 函数
  • Pickle

咱们将用于加载数据的数据集能够在此处找到 。它被称为100-Sales-Records。

Imports

咱们将应用Numpy,Pandas和Pickle软件包,因而将其导入。

1. Manual Function

这是最艰难的,因为您必须设计一个自定义函数,该函数能够为您加载数据。您必须解决Python的惯例归档概念,并应用它来读取 .csv 文件。

让咱们在100个销售记录文件上执行此操作。

嗯,这是什么????仿佛有点简单的代码!!!让咱们逐渐突破它,以便您理解正在产生的事件,并且能够利用相似的逻辑来读取 本人的 _.csv_文件。

在这里,我创立了一个 load_csv 函数,该函数将要读取的文件的门路作为参数。

我有一个名为_data_ 的列表, 它将具备我的CSV文件数据,而另一个列表 col 将具备我的列名。当初,在手动查看了csv之后,我晓得列名在第一行中,因而在我的第一次迭代中,我必须将第一行的数据存储在 col中, 并将其余行存储在 _data中_。

为了查看第一次迭代,我应用了一个名为_checkcol_ 的布尔变量, 它为False,并且在第一次迭代中为false时,它将第一行的数据存储在 col中 ,而后将_checkcol_ 设置 为True,因而咱们将解决 _数据_列表并将其余值存储在 _数据_列表中。

逻辑

这里的次要逻辑是,我应用_readlines()_ Python中的函数在文件中进行了迭代 。此函数返回一个列表,其中蕴含文件中的所有行。

当浏览题目时,它会将新行检测为 n 字符,即行终止字符,因而为了删除它,我应用了 str.replace 函数。

因为这是一个 的.csv 文件,所以我必须要依据不同的货色 逗号 ,所以我会各执一个字符串_,_ 用 string.split(“”) 。对于第一次迭代,我将存储第一行,其中蕴含列名的列表称为 _col_。而后,我会将所有数据附加到名为_data的_列表中 。

为了更丑陋地读取数据,我将其作为数据框格局返回,因为与numpy数组或python的列表相比,读取数据框更容易。

输出量

利弊

重要的益处是您具备文件构造的所有灵活性和控制权,并且能够以任何想要的格局和形式读取和存储它。

您也能够应用本人的逻辑读取不具备规范构造的文件。

它的重要毛病是,特地是对于规范类型的文件,编写起来很简单,因为它们很容易读取。您必须对须要重复试验的逻辑进行硬编码。

仅当文件不是规范格局或想要灵活性并且以库无奈提供的形式读取文件时,才应应用它。

2. Numpy.loadtxt函数

这是Python中驰名的数字库Numpy中的内置函数。加载数据是一个非常简单的性能。这对于读取雷同数据类型的数据十分有用。

当数据更简单时,应用此性能很难读取,然而当文件简略时,此性能的确十分弱小。

要获取繁多类型的数据,能够下载 此处 虚构数据集。让咱们跳到代码。

这里,咱们简略地应用了在传入的_定界符中_ 作为 ','_的 _loadtxt 函数 因为这是一个CSV文件。

当初,如果咱们打印 _df_,咱们将看到能够应用的相当不错的numpy数组中的数据。

因为数据量很大,咱们仅打印了前5行。

利弊

应用此性能的一个重要方面是您能够将文件中的数据疾速加载到numpy数组中。

毛病是您不能有其余数据类型或数据中短少行。

3. Numpy.genfromtxt()

咱们将应用数据集,即第一个示例中应用的数据集“ 100 Sales Records.csv”,以证实其中能够蕴含多种数据类型。

让咱们跳到代码。

为了更分明地看到它,咱们能够以数据框格局看到它,即

这是什么?哦,它已跳过所有具备字符串数据类型的列。怎么解决呢?

只需增加另一个 dtype 参数并将_dtype_ 设置 为None即可,这意味着它必须关照每一列自身的数据类型。不将整个数据转换为单个dtype。

而后输入

比第一个要好得多,然而这里的“列”题目是“行”,要使其成为列题目,咱们必须增加另一个参数,即 名称 ,并将其设置为 True, 这样它将第一行作为“列题目”。

df3 = np.genfromtxt('100 Sales Records.csv', delimiter=',', dtype=None, names=True, encoding='utf-8')

咱们能够将其打印为

4. Pandas.read_csv()

Pandas是一个十分风行的数据操作库,它十分罕用。_read_csv()_是十分重要且成熟的 性能 之一,它  能够十分轻松地读取任何 .csv 文件并帮忙咱们进行操作。让咱们在100个销售记录的数据集上进行操作。

此性能易于应用,因而十分受欢迎。您能够将其与咱们之前的代码进行比拟,而后进行查看。

你猜怎么着?咱们完了。这实际上是如此简略和易于应用。Pandas.read_csv必定提供了许多其余参数来调整咱们的数据集,例如在咱们的 convertcsv.csv 文件中,咱们没有列名,因而咱们能够将其读取为

咱们能够看到它曾经读取了没有题目的 csv 文件。您能够在此处查看官网文档中的所有其余参数 。

5. Pickle

如果您的数据不是人类能够了解的良好格局,则能够应用pickle将其保留为二进制格局。而后,您能够应用pickle库轻松地从新加载它。

咱们将获取100个销售记录的CSV文件,并首先将其保留为pickle格局,以便咱们能够读取它。

这将创立一个新文件 test.pkl ,其中蕴含来自 Pandas 题目的 pdDf

当初应用pickle关上它,咱们只须要应用 pickle.load 函数。

在这里,咱们已胜利从_pandas.DataFrame_ 格局的pickle文件中加载了数据 。

学习成绩

您当初晓得了5种不同的形式来在Python中加载数据文件,这能够在您解决日常我的项目时以不同的形式帮忙您加载数据集。

往期精彩链接:

《统计学习根底:数据挖掘、推理和预测》-斯坦福大学人工智能学科专用教材

看完别走还有惊喜!

我精心整顿了计算机/Python/机器学习/深度学习相干的2TB视频课与书籍,价值1W元。关注微信公众号“计算机与AI”,点击下方菜单即可获取网盘链接。