Python加載數(shù)據(jù)的5種不同方式(收藏)
數(shù)據(jù)是數(shù)據(jù)科學家的基礎(chǔ),因此了解許多加載數(shù)據(jù)進行分析的方法至關(guān)重要。在這里,我們將介紹五種Python數(shù)據(jù)輸入技術(shù),并提供代碼示例供您參考。
作為初學者,您可能只知道一種使用p andas.read_csv函數(shù)讀取數(shù)據(jù)的方式(通常以CSV格式)。它是最成熟,功能最強大的功能之一,但其他方法很有幫助,有時肯定會派上用場。
我要討論的方法是:
Manual 函數(shù) loadtxt 函數(shù) genfromtxtf 函數(shù) read_csv 函數(shù) Pickle我們將用于加載數(shù)據(jù)的數(shù)據(jù)集可以在此處找到 。它被稱為100-Sales-Records。
Imports
我們將使用Numpy,Pandas和Pickle軟件包,因此將其導入。
1. Manual Function
這是最困難的,因為您必須設(shè)計一個自定義函數(shù),該函數(shù)可以為您加載數(shù)據(jù)。您必須處理Python的常規(guī)歸檔概念,并使用它來讀取 .csv 文件。
讓我們在100個銷售記錄文件上執(zhí)行此操作。
嗯,這是什么????似乎有點復雜的代碼!!!讓我們逐步打破它,以便您了解正在發(fā)生的事情,并且可以應用類似的邏輯來讀取 自己的 .csv文件。
在這里,我創(chuàng)建了一個 load_csv 函數(shù),該函數(shù)將要讀取的文件的路徑作為參數(shù)。
我有一個名為data 的列表, 它將具有我的CSV文件數(shù)據(jù),而另一個列表 col 將具有我的列名。現(xiàn)在,在手動檢查了csv之后,我知道列名在第一行中,因此在我的第一次迭代中,我必須將第一行的數(shù)據(jù)存儲在 col中, 并將其余行存儲在 data中。
為了檢查第一次迭代,我使用了一個名為checkcol 的布爾變量, 它為False,并且在第一次迭代中為false時,它將第一行的數(shù)據(jù)存儲在 col中 ,然后將checkcol 設(shè)置 為True,因此我們將處理 數(shù)據(jù)列表并將其余值存儲在 數(shù)據(jù)列表中。
邏輯
這里的主要邏輯是,我使用readlines() Python中的函數(shù)在文件中進行了迭代 。此函數(shù)返回一個列表,其中包含文件中的所有行。
當閱讀標題時,它會將新行檢測為 n 字符,即行終止字符,因此為了刪除它,我使用了 str.replace 函數(shù)。
由于這是一個 的.csv 文件,所以我必須要根據(jù)不同的東西 逗號 ,所以我會各執(zhí)一個字符串, 用 string.split(“”) 。對于第一次迭代,我將存儲第一行,其中包含列名的列表稱為 col。然后,我會將所有數(shù)據(jù)附加到名為data的列表中 。
為了更漂亮地讀取數(shù)據(jù),我將其作為數(shù)據(jù)框格式返回,因為與numpy數(shù)組或python的列表相比,讀取數(shù)據(jù)框更容易。
輸出量
利弊
重要的好處是您具有文件結(jié)構(gòu)的所有靈活性和控制權(quán),并且可以以任何想要的格式和方式讀取和存儲它。
您也可以使用自己的邏輯讀取不具有標準結(jié)構(gòu)的文件。
它的重要缺點是,特別是對于標準類型的文件,編寫起來很復雜,因為它們很容易讀取。您必須對需要反復試驗的邏輯進行硬編碼。
僅當文件不是標準格式或想要靈活性并且以庫無法提供的方式讀取文件時,才應使用它。
2. Numpy.loadtxt函數(shù)
這是Python中著名的數(shù)字庫Numpy中的內(nèi)置函數(shù)。加載數(shù)據(jù)是一個非常簡單的功能。這對于讀取相同數(shù)據(jù)類型的數(shù)據(jù)非常有用。
當數(shù)據(jù)更復雜時,使用此功能很難讀取,但是當文件簡單時,此功能確實非常強大。
要獲取單一類型的數(shù)據(jù),可以下載 此處 虛擬數(shù)據(jù)集。讓我們跳到代碼。
這里,我們簡單地使用了在傳入的定界符中 作為 ’,’的 loadtxt 函數(shù) , 因為這是一個CSV文件。
現(xiàn)在,如果我們打印 df,我們將看到可以使用的相當不錯的numpy數(shù)組中的數(shù)據(jù)。
由于數(shù)據(jù)量很大,我們僅打印了前5行。
利弊
使用此功能的一個重要方面是您可以將文件中的數(shù)據(jù)快速加載到numpy數(shù)組中。
缺點是您不能有其他數(shù)據(jù)類型或數(shù)據(jù)中缺少行。
3. Numpy.genfromtxt()
我們將使用數(shù)據(jù)集,即第一個示例中使用的數(shù)據(jù)集“ 100 Sales Records.csv”,以證明其中可以包含多種數(shù)據(jù)類型。
讓我們跳到代碼。
為了更清楚地看到它,我們可以以數(shù)據(jù)框格式看到它,即
這是什么?哦,它已跳過所有具有字符串數(shù)據(jù)類型的列。怎么處理呢?
只需添加另一個 dtype 參數(shù)并將dtype 設(shè)置 為None即可,這意味著它必須照顧每一列本身的數(shù)據(jù)類型。不將整個數(shù)據(jù)轉(zhuǎn)換為單個dtype。
然后輸出
比第一個要好得多,但是這里的“列”標題是“行”,要使其成為列標題,我們必須添加另一個參數(shù),即 名稱 ,并將其設(shè)置為 True, 這樣它將第一行作為“列標題”。
即
df3 = np.genfromtxt(’100 Sales Records.csv’, delimiter=’,’, dtype=None, names=True, encoding=’utf-8’)
我們可以將其打印為
4. Pandas.read_csv()
Pandas是一個非常流行的數(shù)據(jù)操作庫,它非常常用。read_csv()是非常重要且成熟的 功能 之一,它 可以非常輕松地讀取任何 .csv 文件并幫助我們進行操作。讓我們在100個銷售記錄的數(shù)據(jù)集上進行操作。
此功能易于使用,因此非常受歡迎。您可以將其與我們之前的代碼進行比較,然后進行檢查。
你猜怎么著?我們完了。這實際上是如此簡單和易于使用。Pandas.read_csv肯定提供了許多其他參數(shù)來調(diào)整我們的數(shù)據(jù)集,例如在我們的 convertcsv.csv 文件中,我們沒有列名,因此我們可以將其讀取為
我們可以看到它已經(jīng)讀取了沒有標題的 csv 文件。您可以在此處查看官方文檔中的所有其他參數(shù) 。
5. Pickle
如果您的數(shù)據(jù)不是人類可以理解的良好格式,則可以使用pickle將其保存為二進制格式。然后,您可以使用pickle庫輕松地重新加載它。
我們將獲取100個銷售記錄的CSV文件,并首先將其保存為pickle格式,以便我們可以讀取它。
這將創(chuàng)建一個新文件 test.pkl ,其中包含來自 Pandas 標題的 pdDf 。
現(xiàn)在使用pickle打開它,我們只需要使用 pickle.load 函數(shù)。
在這里,我們已成功從pandas.DataFrame 格式的pickle文件中加載了數(shù)據(jù) 。
到此這篇關(guān)于Python加載數(shù)據(jù)的5種不同方式(收藏)的文章就介紹到這了,更多相關(guān)Python 加載數(shù)據(jù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
