用 Python 載入資料的 5 種不同方式

starkbl發表於2021-09-09

資料是資料科學家的基礎,因此瞭解許多載入資料進行分析的方法至關重要。在這裡,我們將介紹五種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中載入資料檔案,這可以在您處理日常專案時以不同的方式幫助您載入資料集。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3705/viewspace-2826429/,如需轉載,請註明出處,否則將追究法律責任。

相關文章