創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
公司主營業(yè)務(wù):網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出城固免費做網(wǎng)站回饋大家。這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Python數(shù)據(jù)分析 | pandas匯總和計算描述統(tǒng)計,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1. 聚合計算
pandas對象擁有一組常用的數(shù)學(xué)和統(tǒng)計方法。它們大部分都屬于約簡和匯總統(tǒng)計,用于從Series中提取單個值(如sum或mean)或從DataFrame的行或列中提取一個Series。跟對應(yīng)的NumPy數(shù)組方法相比,它們都是基于沒有缺失數(shù)據(jù)的假設(shè)而構(gòu)建的??匆粋€簡單的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
調(diào)用DataFrame的sum方法將會返回一個含有列的和的Series:
df.sum() #默認axis=0/'index'
傳入axis='columns'或axis=1將會按行進行求和運算:
df.sum(axis='columns') #axis=1
NA值會自動被排除,除非整個切片(這里指的是行或列)都是NA。通過skipna選項可以禁用該功能:
print(df) print("-----") print(df.mean(axis='columns', skipna=False)) #axis=1 print("-----") print(df.mean(axis='columns')) #axis=1 自動跳過na
下表列出了這些約簡方法的常用選項:
有些方法(如idxmin和idxmax)返回的是間接統(tǒng)計(比如達到最小值或大 值的索引):
print(df) print("-------") df.idxmax() #axis=0
另一些方法則是累計型的:
print(df) print("-------") df.cumsum() #axis=0
還有一種方法,它既不是約簡型也不是累計型。describe就是一個例子,它 用于一次性產(chǎn)生多個匯總統(tǒng)計:
df.describe() #默認忽略空值
對于非數(shù)值型數(shù)據(jù),describe會產(chǎn)生另外一種匯總統(tǒng)計:
obj = pd.Series(['a', 'a', 'b', 'c'] * 4) obj.describe()
下表列出了所有與描述統(tǒng)計相關(guān)的方法。
2. 相關(guān)系數(shù)與協(xié)方差
有些匯總統(tǒng)計(如相關(guān)系數(shù)和協(xié)方差)是通過參數(shù)對計算出來的。我們來看 幾個DataFrame,它們的數(shù)據(jù)來自Yahoo!Finance的股票價格和成交量,使 用的是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())
現(xiàn)在計算價格的百分數(shù)變化,時間序列的操作后續(xù)會介紹:
returns = price.pct_change() returns.tail()
Series的corr方法用于計算兩個Series中重疊的、非NA的、按索引對齊的值 的相關(guān)系數(shù)。與此類似,cov用于計算協(xié)方差:
print(returns['MSFT'].corr(returns['IBM'])) print(returns['MSFT'].cov(returns['IBM']))
因為MSTF是一個合理的Python屬性,我們還可以用更簡潔的語法選擇列:
returns.MSFT.corr(returns.IBM)
另一方面,DataFrame的corr和cov方法將以DataFrame的形式分別返回完整 的相關(guān)系數(shù)或協(xié)方差矩陣:
print(returns.corr()) print("-----------") print(returns.cov())
利用DataFrame的corrwith方法,你可以計算其列或行跟另一個Series或DataFrame之間的相關(guān)系數(shù)。傳入一個Series將會返回一個相關(guān)系數(shù)值Series(針對各列進行計算)
returns.corrwith(returns.IBM)
傳入一個DataFrame則會計算按列名配對的相關(guān)系數(shù)。這里,我計算百分比 變化與成交量的相關(guān)系數(shù):
print(returns.head()) print(volume.head()) returns.corrwith(volume) #按列配對
傳入axis='columns'/1即可按行進行計算。無論如何,在計算相關(guān)系數(shù)之前,所 有的數(shù)據(jù)項都會按標(biāo)簽對齊。
3. 唯一值、值計數(shù)以及成員資格
還有一類方法可以從一維Series的值中抽取信息??聪旅娴睦?
obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c']) obj
第一個函數(shù)是unique,它可以得到Series中的唯一值數(shù)組:
uniques = obj.unique() uniques
返回的唯一值是未排序的,如果需要的話,可以對結(jié)果再次進行排序 (uniques.sort())。相似的,value_counts用于計算一個Series中各值出現(xiàn) 的頻率:
obj.value_counts()
為了便于查看,結(jié)果Series是按值頻率降序排列的。value_counts還是一個 頂級pandas方法,可用于任何數(shù)組或序列:
pd.value_counts(obj.values, sort=False)
isin用于判斷矢量化集合的成員資格,可用于過濾Series中或DataFrame列中 數(shù)據(jù)的子集:
print(obj) print("-----------") mask = obj.isin(['b', 'c']) print(mask) print("-----------") obj[mask]
與isin類似的是Index.get_indexer方法,它可以給你一個索引數(shù)組,從可能包 含重復(fù)值的數(shù)組到另一個不同值的數(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)
下表給出了這幾個方法的一些參考信息:
有時,你可能希望得到DataFrame中多個相關(guān)列的一張柱狀圖。例如:
data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4], 'Qu2': [2, 3, 1, 2, 3], 'Qu3': [1, 5, 2, 4, 4]}) data
將pandas.value_counts傳給該DataFrame的apply函數(shù),就會出現(xiàn):
result = data.apply(pd.value_counts).fillna(0) result
這里,結(jié)果中的行標(biāo)簽是所有列的唯一值。后面的頻率值是每個列中這些值的相應(yīng)計數(shù)。
上述就是小編為大家分享的Python數(shù)據(jù)分析 | pandas匯總和計算描述統(tǒng)計了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。