Python數(shù)據(jù)分析|pandas匯總和計(jì)算描述統(tǒng)計(jì)-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出城固免費(fèi)做網(wǎng)站回饋大家。

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1. 聚合計(jì)算

pandas對(duì)象擁有一組常用的數(shù)學(xué)和統(tǒng)計(jì)方法。它們大部分都屬于約簡(jiǎn)和匯總統(tǒng)計(jì),用于從Series中提取單個(gè)值(如sum或mean)或從DataFrame的行或列中提取一個(gè)Series。跟對(duì)應(yīng)的NumPy數(shù)組方法相比,它們都是基于沒有缺失數(shù)據(jù)的假設(shè)而構(gòu)建的??匆粋€(gè)簡(jiǎn)單的DataFrame:

df = pd.DataFrame([[1.4, np.nan], [7.1, -4.5],
    [np.nan, np.nan], [0.75, -1.3]],
    index=['a', 'b', 'c', 'd'],
    columns=['one', 'two'])
df

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

調(diào)用DataFrame的sum方法將會(huì)返回一個(gè)含有列的和的Series:

df.sum()  #默認(rèn)axis=0/'index'

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

傳入axis='columns'或axis=1將會(huì)按行進(jìn)行求和運(yùn)算:

df.sum(axis='columns') #axis=1

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

NA值會(huì)自動(dòng)被排除,除非整個(gè)切片(這里指的是行或列)都是NA。通過skipna選項(xiàng)可以禁用該功能:

print(df)
print("-----")
print(df.mean(axis='columns', skipna=False)) #axis=1
print("-----")
print(df.mean(axis='columns')) #axis=1 自動(dòng)跳過na

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

下表列出了這些約簡(jiǎn)方法的常用選項(xiàng):

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

有些方法(如idxmin和idxmax)返回的是間接統(tǒng)計(jì)(比如達(dá)到最小值或大 值的索引):

print(df)
print("-------")
df.idxmax() #axis=0

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

另一些方法則是累計(jì)型的:

print(df)
print("-------")
df.cumsum() #axis=0

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

還有一種方法,它既不是約簡(jiǎn)型也不是累計(jì)型。describe就是一個(gè)例子,它 用于一次性產(chǎn)生多個(gè)匯總統(tǒng)計(jì):

df.describe() #默認(rèn)忽略空值

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

對(duì)于非數(shù)值型數(shù)據(jù),describe會(huì)產(chǎn)生另外一種匯總統(tǒng)計(jì):

obj = pd.Series(['a', 'a', 'b', 'c'] * 4)
obj.describe()

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

下表列出了所有與描述統(tǒng)計(jì)相關(guān)的方法。

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

2. 相關(guān)系數(shù)與協(xié)方差

有些匯總統(tǒng)計(jì)(如相關(guān)系數(shù)和協(xié)方差)是通過參數(shù)對(duì)計(jì)算出來的。我們來看 幾個(gè)DataFrame,它們的數(shù)據(jù)來自Yahoo!Finance的股票價(jià)格和成交量,使 用的是pandas-datareader包(可以用conda或pip安裝):

pip install pandas-datareader

我使用pandas_datareader模塊下載了一些股票數(shù)據(jù):

import pandas_datareader.data as web 
all_data = {ticker: web.get_data_yahoo(ticker) for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
 
price = pd.DataFrame({ticker: data['Adj Close'] for ticker, data in all_data.items()}) 
volume = pd.DataFrame({ticker: data['Volume'] for ticker, data in all_data.items()})
print(price.head())
print(volume.head())

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

現(xiàn)在計(jì)算價(jià)格的百分?jǐn)?shù)變化,時(shí)間序列的操作后續(xù)會(huì)介紹:

returns = price.pct_change()
returns.tail()

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

Series的corr方法用于計(jì)算兩個(gè)Series中重疊的、非NA的、按索引對(duì)齊的值 的相關(guān)系數(shù)。與此類似,cov用于計(jì)算協(xié)方差:

print(returns['MSFT'].corr(returns['IBM']))
print(returns['MSFT'].cov(returns['IBM']))

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

因?yàn)镸STF是一個(gè)合理的Python屬性,我們還可以用更簡(jiǎn)潔的語法選擇列:

returns.MSFT.corr(returns.IBM)

另一方面,DataFrame的corr和cov方法將以DataFrame的形式分別返回完整 的相關(guān)系數(shù)或協(xié)方差矩陣:

print(returns.corr())
print("-----------")
print(returns.cov())

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

利用DataFrame的corrwith方法,你可以計(jì)算其列或行跟另一個(gè)Series或DataFrame之間的相關(guān)系數(shù)。傳入一個(gè)Series將會(huì)返回一個(gè)相關(guān)系數(shù)值Series(針對(duì)各列進(jìn)行計(jì)算)

returns.corrwith(returns.IBM)

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

傳入一個(gè)DataFrame則會(huì)計(jì)算按列名配對(duì)的相關(guān)系數(shù)。這里,我計(jì)算百分比 變化與成交量的相關(guān)系數(shù):

print(returns.head())
print(volume.head())
returns.corrwith(volume) #按列配對(duì)

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

傳入axis='columns'/1即可按行進(jìn)行計(jì)算。無論如何,在計(jì)算相關(guān)系數(shù)之前,所 有的數(shù)據(jù)項(xiàng)都會(huì)按標(biāo)簽對(duì)齊。

3. 唯一值、值計(jì)數(shù)以及成員資格

還有一類方法可以從一維Series的值中抽取信息。看下面的例子:

obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
obj

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

第一個(gè)函數(shù)是unique,它可以得到Series中的唯一值數(shù)組:

uniques = obj.unique()
uniques

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

返回的唯一值是未排序的,如果需要的話,可以對(duì)結(jié)果再次進(jìn)行排序 (uniques.sort())。相似的,value_counts用于計(jì)算一個(gè)Series中各值出現(xiàn) 的頻率:

obj.value_counts()

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

為了便于查看,結(jié)果Series是按值頻率降序排列的。value_counts還是一個(gè) 頂級(jí)pandas方法,可用于任何數(shù)組或序列:

pd.value_counts(obj.values, sort=False)

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

isin用于判斷矢量化集合的成員資格,可用于過濾Series中或DataFrame列中 數(shù)據(jù)的子集:

print(obj)
print("-----------")
mask = obj.isin(['b', 'c'])
print(mask)
print("-----------")
obj[mask]

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

與isin類似的是Index.get_indexer方法,它可以給你一個(gè)索引數(shù)組,從可能包 含重復(fù)值的數(shù)組到另一個(gè)不同值的數(shù)組:

to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])
unique_vals = pd.Series(['c', 'b', 'a'])
pd.Index(unique_vals).get_indexer(to_match)

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

下表給出了這幾個(gè)方法的一些參考信息:

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

有時(shí),你可能希望得到DataFrame中多個(gè)相關(guān)列的一張柱狀圖。例如:

data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
    'Qu2': [2, 3, 1, 2, 3],
    'Qu3': [1, 5, 2, 4, 4]})
data

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

將pandas.value_counts傳給該DataFrame的apply函數(shù),就會(huì)出現(xiàn):

result = data.apply(pd.value_counts).fillna(0)
result

Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)

這里,結(jié)果中的行標(biāo)簽是所有列的唯一值。后面的頻率值是每個(gè)列中這些值的相應(yīng)計(jì)數(shù)。

上述就是小編為大家分享的Python數(shù)據(jù)分析 | pandas匯總和計(jì)算描述統(tǒng)計(jì)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

本文名稱:Python數(shù)據(jù)分析|pandas匯總和計(jì)算描述統(tǒng)計(jì)-創(chuàng)新互聯(lián)
文章位置:http://www.muchs.cn/article36/diejsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、App開發(fā)、建站公司、小程序開發(fā)、靜態(tài)網(wǎng)站、動(dòng)態(tài)網(wǎng)站

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司