這篇文章給大家介紹DataFrame怎么在Pandas庫中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)是專業(yè)的鹽亭網(wǎng)站建設(shè)公司,鹽亭接單;提供網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鹽亭網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!1 簡介
DataFrame是Python中Pandas庫中的一種數(shù)據(jù)結(jié)構(gòu),它類似excel,是一種二維表。
或許說它可能有點像matlab的矩陣,但是matlab的矩陣只能放數(shù)值型值(當(dāng)然matlab也可以用cell存放多類型數(shù)據(jù)),DataFrame的單元格可以存放數(shù)值、字符串等,這和excel表很像。
同時DataFrame可以設(shè)置列名columns與行名index,可以通過像matlab一樣通過位置獲取數(shù)據(jù)也可以通過列名和行名定位,具體方法在后面細(xì)說。
2 創(chuàng)建DataFrame
首先聲明一下,以下都是使用的Python 3.6.5版本為例,Python2應(yīng)該也差不多吧(大概
在所有操作之前當(dāng)然要先import必要的pandas庫,因為pandas常與numpy一起配合使用,所以也一起import吧。
import pandas as pd import numpy as np
如果還沒安裝直接在cmd里pip安裝吧,如果有版本選擇問題,參看之前的帖子。
pip install pandas pip install numpy
2.1 直接創(chuàng)建
可以直接使用pandas的DataFrame函數(shù)創(chuàng)建,比如接下來我們隨機(jī)創(chuàng)建一個4*4的DataFrame。
df1=pd.DataFrame(np.random.randn(4,4),index=list('ABCD'),columns=list('ABCD'))
其中第一個參數(shù)是存放在DataFrame里的數(shù)據(jù),第二個參數(shù)index就是之前說的行名(或者應(yīng)該叫索引?),第三個參數(shù)columns是之前說的列名。
后兩個參數(shù)可以使用list輸入,但是注意,這個list的長度要和DataFrame的大小匹配,不然會報錯。當(dāng)然,這兩個參數(shù)是可選的,你可以選擇不設(shè)置。
而且發(fā)現(xiàn),這兩個list是可以一樣的,但是每行每列的名字在index或columns里要是唯一的。
使用python自己的shell展示創(chuàng)建的結(jié)果是這樣的:
或者在jupyter里面更酷點的樣子,接下來都使用jupyter輸出展示吧。
當(dāng)然,如果你的數(shù)據(jù)量賊小,也可以自己輸入創(chuàng)建,類似這樣。
df2=pd.DataFrame([[1,2,3,4],[2,3,4,5], [3,4,5,6],[4,5,6,7]], index=list('ABCD'),columns=list('ABCD'))
這樣也可以得到這樣子的DataFrame:
2.2 使用字典創(chuàng)建
仍然是使用DataFrame這個函數(shù),但是字典的每個key的value代表一列,而key是這一列的列名。比如這樣。
dic1={'name':['小明','小紅','狗蛋','鐵柱'],'age':[17,20,5,40],'gender':['男','女','女','男']} df3=pd.DataFrame(dic1)
輸出結(jié)果是這樣的
3 查看與篩選數(shù)據(jù)
python沒有matlab的工作區(qū)直接查看變量與內(nèi)容,這大概是python科學(xué)計算的一個缺點。所以需要格外的代碼來查看,最基本的直接寫變量名與print就不說了。
3.1 查看列的數(shù)據(jù)類型
使用dtypes方法可以查看各列的數(shù)據(jù)類型,比如說剛剛的df3。
df3.dtypes
輸出的結(jié)果是這樣:
3.2 查看DataFrame的頭尾
使用head可以查看前幾行的數(shù)據(jù),默認(rèn)的是前5行,不過也可以自己設(shè)置。
使用tail可以查看后幾行的數(shù)據(jù),默認(rèn)也是5行,參數(shù)可以自己設(shè)置。
比如隨意設(shè)置一個6*6的數(shù)據(jù),只看前5行。
df4=pd.DataFrame(np.random.randn(6,6)) df4.head()
比如只看前3行。
df4.head(3)
比如看后5行。
df4.tail()
比如只看后2行。
df4.tail(2)
3.3 查看行名與列名
使用index查看行名,columns查看列名。具體由例子感受吧。
查看行名。
df1.index
查看列名。
df3.columns
3.4 查看數(shù)據(jù)值
使用values可以查看DataFrame里的數(shù)據(jù)值,返回的是一個數(shù)組。
比如說查看所有的數(shù)據(jù)值。
df3.values
比如說查看某一列所有的數(shù)據(jù)值。
df3['name'].values
還有另一種操作,使用loc或者iloc查看數(shù)據(jù)值(但是好像只能根據(jù)行來查看?)。區(qū)別是loc是根據(jù)行名,iloc是根據(jù)數(shù)字索引(也就是行號)。
比如說這樣。
df1.loc['A']
或者這樣。
df1.iloc[0]
按列進(jìn)行索引查看數(shù)據(jù)還能直接使用列名,但這種方法對行索引不適用。
df3['name']
3.5 查看行列數(shù)
使用shape查看行列數(shù),參數(shù)為0表示查看行數(shù),參數(shù)為1表示查看列數(shù)。
df3.shape[0]
df3.shape[1]
4 基本操作
DataFrame有些方法可以直接進(jìn)行數(shù)據(jù)統(tǒng)計,矩陣計算之類的基本操作。
4.1 轉(zhuǎn)置
直接字母T,線性代數(shù)上線。
比如說把之前的df2轉(zhuǎn)置一下。
df3.T
4.2 描述性統(tǒng)計
使用describe可以對數(shù)據(jù)根據(jù)列進(jìn)行描述性統(tǒng)計。
比如說對df1進(jìn)行描述性統(tǒng)計。
df1.describe()
如果有的列是非數(shù)值型的,那么就不會進(jìn)行統(tǒng)計。
如果想對行進(jìn)行描述性統(tǒng)計,請參看4.1(轉(zhuǎn)置后進(jìn)行describe呀?。?/p>
4.3 計算
使用sum默認(rèn)對每列求和,sum(1)為對每行求和。比如
df3.sum()
可以發(fā)現(xiàn)就算元素是字符串,使用sum也會加起來。
df3.sum(1)
而一行中,有字符串有數(shù)值則只計算數(shù)值。
數(shù)乘運(yùn)算使用apply,比如。
df2.apply(lambda x:x*2)
如果元素是字符串,則會把字符串再重復(fù)一遍。
乘方運(yùn)算跟matlab類似,直接使用兩個*,比如。
df2**2
乘方運(yùn)算如果有元素是字符串的話,就會報錯。
4.4 新增
擴(kuò)充列可以直接像字典一樣,列名對應(yīng)一個list,但是注意list的長度要跟index的長度一致。
df2['E']=['999','999','999','999']df2
還可以使用insert,使用這個方法可以指定把列插入到第幾列,其他的列順延。
df2['E']=['999','999','999','999'] df2
4.5 合并
使用join可以將兩個DataFrame合并,但只根據(jù)行列名合并,并且以作用的那個DataFrame的為基準(zhǔn)。如下所示,新的df7是以df2的行號index為基準(zhǔn)的。
df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G')) df6 df7=df2.join(df6) df7
但是,join這個方法還有how這個參數(shù)可以設(shè)置,合并兩個DataFrame的交集或并集。參數(shù)為'inner'表示交集,'outer'表示并集。
df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G')) df6 df7=df2.join(df6) df7
如果要合并多個Dataframe,可以用list把幾個Dataframe裝起來,然后使用concat轉(zhuǎn)化為一個新的Dataframe。
df6=pd.DataFrame(['my','name','is','a'],index=list('ACDH'),columns=list('G')) df6 df7=df2.join(df6) df7
關(guān)于DataFrame怎么在Pandas庫中使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
當(dāng)前文章:DataFrame怎么在Pandas庫中使用-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://aaarwkj.com/article38/cdpgpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)建站、定制網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容