内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

使用pandas進(jìn)行數(shù)據(jù)處理之DataFrame篇

相關(guān)學(xué)習(xí)推薦:python教程

十余年的應(yīng)城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整應(yīng)城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“應(yīng)城網(wǎng)站設(shè)計(jì)”,“應(yīng)城網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

這是pandas數(shù)據(jù)處理專題的第二篇文章,我們一起來聊聊pandas當(dāng)中最重要的數(shù)據(jù)結(jié)構(gòu)——DataFrame。

上一篇文章當(dāng)中我們介紹了Series的用法,也提到了Series相當(dāng)于一個(gè)一維的數(shù)組,只是pandas為我們封裝了許多方便好用的api。而DataFrame可以簡單了理解成Series構(gòu)成的dict,這樣就將數(shù)據(jù)拼接成了二維的表格。并且為我們提供了許多表級別數(shù)據(jù)處理以及批量數(shù)據(jù)處理的接口,大大降低了數(shù)據(jù)處理的難度。

創(chuàng)建DataFrame

DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它擁有兩個(gè)索引,分別是行索引以及列索引,使得我們可以很方便地獲取對應(yīng)的行以及列。這就大大降低了我們查找數(shù)據(jù)處理數(shù)據(jù)的難度。

首先,我們先從最簡單的開始,如何創(chuàng)建一個(gè)DataFrame。

從字典創(chuàng)建

我們創(chuàng)建了一個(gè)dict,它的key是列名,value是一個(gè)list,當(dāng)我們將這個(gè)dict傳入DataFrame的構(gòu)造函數(shù)的時(shí)候,它將會以key作為列名,value作為對應(yīng)的值為我們創(chuàng)建一個(gè)DataFrame。

當(dāng)我們在jupyter輸出的時(shí)候,它會自動為我們將DataFrame中的內(nèi)容以表格的形式展現(xiàn)。

從numpy數(shù)據(jù)創(chuàng)建

我們也可以從一個(gè)numpy的二維數(shù)組來創(chuàng)建一個(gè)DataFrame,如果我們只是傳入numpy的數(shù)組而不指定列名的話,那么pandas將會以數(shù)字作為索引為我們創(chuàng)建列:

我們在創(chuàng)建的時(shí)候?yàn)閏olumns這個(gè)字段傳入一個(gè)string的list即可為它指定列名:

從文件讀取

pandas另外一個(gè)非常強(qiáng)大的功能就是可以從各種格式的文件當(dāng)中讀取數(shù)據(jù)創(chuàng)建DataFrame,比如像是常用的excel、csv,甚至是數(shù)據(jù)庫也可以。

對于excel、csv、json等這種結(jié)構(gòu)化的數(shù)據(jù),pandas提供了專門的api,我們找到對應(yīng)的api進(jìn)行使用即可:

如果是一些比較特殊格式的,也沒有關(guān)系,我們使用read_table,它可以從各種文本文件中讀取數(shù)據(jù),通過傳入分隔符等參數(shù)完成創(chuàng)建。比如在上一篇驗(yàn)證PCA降維效果的文章當(dāng)中,我們從.data格式的文件當(dāng)中讀取了數(shù)據(jù)。該文件當(dāng)中列和列之間的分隔符是空格,而不是csv的逗號或者是table符。我們通過傳入sep這個(gè)參數(shù),指定分隔符就完成了數(shù)據(jù)的讀取。

這個(gè)header參數(shù)表示文件的哪些行作為數(shù)據(jù)的列名,默認(rèn)header=0,也即會將第一行作為列名。如果數(shù)據(jù)當(dāng)中不存在列名,需要指定header=None,否則會產(chǎn)生問題。我們很少會出現(xiàn)需要用到多級列名的情況,所以一般情況下最常用的就是取默認(rèn)值或者是令它等于None。

在所有這些創(chuàng)建DataFrame的方法當(dāng)中最常用的就是最后一種,從文件讀取。因?yàn)槲覀冏鰴C(jī)器學(xué)習(xí)或者是參加kaggle當(dāng)中的一些比賽的時(shí)候,往往數(shù)據(jù)都是現(xiàn)成的,以文件的形式給我們使用,需要我們自己創(chuàng)建數(shù)據(jù)的情況很少。如果是在實(shí)際的工作場景,雖然數(shù)據(jù)不會存在文件當(dāng)中,但是也會有一個(gè)源頭,一般是會存儲在一些大數(shù)據(jù)平臺當(dāng)中,模型從這些平臺當(dāng)中獲取訓(xùn)練數(shù)據(jù)。

所以總體來說,我們很少使用其他創(chuàng)建DataFrame的方法,我們有所了解,著重掌握從文件讀取的方法即可。

常用操作

下面介紹一些pandas的常用操作,這些操作是我在沒有系統(tǒng)學(xué)習(xí)pandas的使用方法之前就已經(jīng)了解的。了解的原因也很簡單,因?yàn)樗鼈兲S昧?,可以說是必知必會的常識性內(nèi)容。

查看數(shù)據(jù)

我們在jupyter當(dāng)中執(zhí)行運(yùn)行DataFrame的實(shí)例會為我們打出DataFrame中所有的數(shù)據(jù),如果數(shù)據(jù)行數(shù)過多,則會以省略號的形式省略中間的部分。對于數(shù)據(jù)量很大的DataFrame,我們一般不會直接這樣輸出展示,而是會選擇展示其中的前幾條或者是后幾條數(shù)據(jù)。這里就需要用到兩個(gè)api。

展示前若干條數(shù)據(jù)的方法叫做head,它接受一個(gè)參數(shù),允許我們制定讓它從頭開始展示我們指定條數(shù)的數(shù)據(jù)。

既然有展示前面若干條自然也有展示最后若干條的api,這樣的api叫做tail。通過它我們可以查看DataFrame最后指定條數(shù)的數(shù)據(jù):

列的增刪改查

前面我們曾經(jīng)提到過,對于DataFrame而言,它其實(shí)相當(dāng)于Series組合成的dict。既然是dict我們自然可以根據(jù)key值獲取指定的Series。

DataFrame當(dāng)中有兩種方法獲取指定的列,我們可以通過.加列名的方式或者也可以通過dict查找元素的方式來查詢:

我們也可以同時(shí)讀取多列,如果是多列的話,只支持一種方法就是通過dict查詢元素的方法。它允許接收傳入一個(gè)list,可以查找出這個(gè)list當(dāng)中的列對應(yīng)的數(shù)據(jù)。返回的結(jié)果是這些新的列組成的新DataFrame。

我們可以用del刪除一個(gè)我們不需要的列:

我們要?jiǎng)?chuàng)建一個(gè)新的列也很簡單,我們可以像是dict賦值一樣,直接為DataFrame賦值即可:

賦值的對象并不是只能是實(shí)數(shù),也可以是一個(gè)數(shù)組:

我們要修改某一列也非常簡單,也是通過賦值一樣的方法覆蓋原數(shù)據(jù)即可。

轉(zhuǎn)成numpy數(shù)組

有時(shí)候我們使用pandas不方便,想要獲取它對應(yīng)的原始數(shù)據(jù),可以直接使用.values獲取DataFrame對應(yīng)的numpy數(shù)組:

由于在DataFrame當(dāng)中每一列單獨(dú)一個(gè)類型,而轉(zhuǎn)化成numpy的數(shù)組之后所有數(shù)據(jù)共享類型。那么pandas會為所有的列找一個(gè)通用類型,這就是為什么經(jīng)常會得到一個(gè)object類型的原因。所以在使用.values之前最好先查看一下類型,保證一下不會因?yàn)轭愋投鲥e(cuò)。

總結(jié)

在今天的文章當(dāng)中我們了解了DataFrame與Series的關(guān)系,也學(xué)習(xí)了一些DataFrame的基礎(chǔ)和常用的用法。雖然DataFrame可以近似看成是Series組合成的dict,但實(shí)際上它作為一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu),也擁有許多自己的api,支持許多花式的操作,是我們處理數(shù)據(jù)強(qiáng)有力的工具。

有專業(yè)機(jī)構(gòu)做過統(tǒng)計(jì),對于一個(gè)算法工程師而言,大約70%的時(shí)間會被投入在數(shù)據(jù)的處理上。真正編寫模型、調(diào)參的時(shí)間可能不到20%,從這當(dāng)中我們可以看到數(shù)據(jù)處理的必要性和重要程度。在Python領(lǐng)域當(dāng)中,pandas是數(shù)據(jù)處理最好用的手術(shù)刀和工具箱,希望大家都能將它掌握。

想了解更多編程學(xué)習(xí),敬請關(guān)注php培訓(xùn)欄目!

分享題目:使用pandas進(jìn)行數(shù)據(jù)處理之DataFrame篇
當(dāng)前URL:http://www.rwnh.cn/article46/cpiceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、全網(wǎng)營銷推廣、品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(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)

都江堰市| 涟源市| 克东县| 商南县| 洛川县| 漠河县| 石台县| 余姚市| 天全县| 金昌市| 无锡市| 林周县| 佛坪县| 勐海县| 德保县| 铅山县| 鲁甸县| 松溪县| 南和县| 闽侯县| 海丰县| 辛集市| 乡宁县| 唐河县| 古交市| 昌吉市| 广东省| 樟树市| 碌曲县| 吴忠市| 临清市| 汪清县| 大城县| 九江市| 三亚市| 若尔盖县| 佛坪县| 陆河县| 日照市| 唐河县| 姚安县|