Python如何實(shí)現(xiàn)加載數(shù)據(jù)-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python如何實(shí)現(xiàn)加載數(shù)據(jù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了木蘭免費(fèi)建站歡迎大家使用!

數(shù)據(jù)是數(shù)據(jù)科學(xué)家的基礎(chǔ),因此了解許多加載數(shù)據(jù)進(jìn)行分析的方法至關(guān)重要。在這里,我們將介紹五種Python數(shù)據(jù)輸入技術(shù),并提供代碼示例供您參考。

作為初學(xué)者,您可能只知道一種使用p andas.read_csv函數(shù)讀取數(shù)據(jù)的方式(通常以CSV格式)。它是最成熟,功能最強(qiáng)大的功能之一,但其他方法很有幫助,有時(shí)肯定會(huì)派上用場。

我要討論的方法是:

  • Manual 函數(shù)
  • loadtxt 函數(shù)
  • genfromtxtf 函數(shù)
  • read_csv 函數(shù)
  • Pickle

我們將用于加載數(shù)據(jù)的數(shù)據(jù)集可以在此處找到 。它被稱為100-Sales-Records。

Imports

我們將使用Numpy,Pandas和Pickle軟件包,因此將其導(dǎo)入。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

1. Manual Function

這是最困難的,因?yàn)槟仨氃O(shè)計(jì)一個(gè)自定義函數(shù),該函數(shù)可以為您加載數(shù)據(jù)。您必須處理Python的常規(guī)歸檔概念,并使用它來讀取 .csv 文件。

讓我們在100個(gè)銷售記錄文件上執(zhí)行此操作。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

嗯,這是什么????似乎有點(diǎn)復(fù)雜的代碼?。。∽屛覀冎鸩酱蚱扑?,以便您了解正在發(fā)生的事情,并且可以應(yīng)用類似的邏輯來讀取 自己的 .csv文件。

在這里,我創(chuàng)建了一個(gè) load_csv 函數(shù),該函數(shù)將要讀取的文件的路徑作為參數(shù)。

我有一個(gè)名為data 的列表, 它將具有我的CSV文件數(shù)據(jù),而另一個(gè)列表 col 將具有我的列名?,F(xiàn)在,在手動(dòng)檢查了csv之后,我知道列名在第一行中,因此在我的第一次迭代中,我必須將第一行的數(shù)據(jù)存儲(chǔ)在 col中, 并將其余行存儲(chǔ)在 data中。

為了檢查第一次迭代,我使用了一個(gè)名為checkcol 的布爾變量, 它為False,并且在第一次迭代中為false時(shí),它將第一行的數(shù)據(jù)存儲(chǔ)在 col中 ,然后將checkcol 設(shè)置 為True,因此我們將處理 數(shù)據(jù)列表并將其余值存儲(chǔ)在 數(shù)據(jù)列表中。

邏輯

這里的主要邏輯是,我使用readlines() Python中的函數(shù)在文件中進(jìn)行了迭代 。此函數(shù)返回一個(gè)列表,其中包含文件中的所有行。

當(dāng)閱讀標(biāo)題時(shí),它會(huì)將新行檢測為 \ n 字符,即行終止字符,因此為了刪除它,我使用了 str.replace 函數(shù)。

由于這是一個(gè) 的.csv 文件,所以我必須要根據(jù)不同的東西 逗號 ,所以我會(huì)各執(zhí)一個(gè)字符串, 用 string.split(“”) 。對于第一次迭代,我將存儲(chǔ)第一行,其中包含列名的列表稱為 col。然后,我會(huì)將所有數(shù)據(jù)附加到名為data的列表中 。

為了更漂亮地讀取數(shù)據(jù),我將其作為數(shù)據(jù)框格式返回,因?yàn)榕cnumpy數(shù)組或python的列表相比,讀取數(shù)據(jù)框更容易。

輸出量

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

利弊

重要的好處是您具有文件結(jié)構(gòu)的所有靈活性和控制權(quán),并且可以以任何想要的格式和方式讀取和存儲(chǔ)它。

您也可以使用自己的邏輯讀取不具有標(biāo)準(zhǔn)結(jié)構(gòu)的文件。

它的重要缺點(diǎn)是,特別是對于標(biāo)準(zhǔn)類型的文件,編寫起來很復(fù)雜,因?yàn)樗鼈兒苋菀鬃x取。您必須對需要反復(fù)試驗(yàn)的邏輯進(jìn)行硬編碼。

僅當(dāng)文件不是標(biāo)準(zhǔn)格式或想要靈活性并且以庫無法提供的方式讀取文件時(shí),才應(yīng)使用它。

2. Numpy.loadtxt函數(shù)

這是Python中著名的數(shù)字庫Numpy中的內(nèi)置函數(shù)。加載數(shù)據(jù)是一個(gè)非常簡單的功能。這對于讀取相同數(shù)據(jù)類型的數(shù)據(jù)非常有用。

當(dāng)數(shù)據(jù)更復(fù)雜時(shí),使用此功能很難讀取,但是當(dāng)文件簡單時(shí),此功能確實(shí)非常強(qiáng)大。

要獲取單一類型的數(shù)據(jù),可以下載 此處 虛擬數(shù)據(jù)集。讓我們跳到代碼。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

這里,我們簡單地使用了在傳入的定界符中 作為 ','的 loadtxt 函數(shù) , 因?yàn)檫@是一個(gè)CSV文件。

現(xiàn)在,如果我們打印 df,我們將看到可以使用的相當(dāng)不錯(cuò)的numpy數(shù)組中的數(shù)據(jù)。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

由于數(shù)據(jù)量很大,我們僅打印了前5行。

利弊

使用此功能的一個(gè)重要方面是您可以將文件中的數(shù)據(jù)快速加載到numpy數(shù)組中。

缺點(diǎn)是您不能有其他數(shù)據(jù)類型或數(shù)據(jù)中缺少行。

3. Numpy.genfromtxt()

我們將使用數(shù)據(jù)集,即第一個(gè)示例中使用的數(shù)據(jù)集“ 100 Sales Records.csv”,以證明其中可以包含多種數(shù)據(jù)類型。

讓我們跳到代碼。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

為了更清楚地看到它,我們可以以數(shù)據(jù)框格式看到它,即

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

這是什么?哦,它已跳過所有具有字符串?dāng)?shù)據(jù)類型的列。怎么處理呢?

只需添加另一個(gè) dtype 參數(shù)并將dtype 設(shè)置 為None即可,這意味著它必須照顧每一列本身的數(shù)據(jù)類型。不將整個(gè)數(shù)據(jù)轉(zhuǎn)換為單個(gè)dtype。

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

然后輸出

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

Python如何實(shí)現(xiàn)加載數(shù)據(jù)

比第一個(gè)要好得多,但是這里的“列”標(biāo)題是“行”,要使其成為列標(biāo)題,我們必須添加另一個(gè)參數(shù),即 名稱 ,并將其設(shè)置為 True, 這樣它將第一行作為“列標(biāo)題”。

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

當(dāng)前文章:Python如何實(shí)現(xiàn)加載數(shù)據(jù)-創(chuàng)新互聯(lián)
文章來源:http://bm7419.com/article20/diocco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、營銷型網(wǎng)站建設(shè)做網(wǎng)站、網(wǎng)站維護(hù)、響應(yīng)式網(wǎng)站網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)