pandas入門(2):匯總和計(jì)算描述統(tǒng)計(jì)

常用的數(shù)學(xué)和統(tǒng)計(jì)方法

pandas對(duì)象擁有一組常用的數(shù)學(xué)和統(tǒng)計(jì)方法男杈。他們大都屬于約簡(jiǎn)和匯總統(tǒng)計(jì)拌屏,用于從Series提取單個(gè)值(如summean)或從DataFrame的行或列中提取一個(gè)Series庞溜。它們都是基于沒有缺失數(shù)據(jù)的假設(shè)而構(gòu)建的。

例:

In [4]: df = 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'])

In [5]: df
Out[5]: 
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

In [6]: df.sum()
Out[6]: 
one    9.25
two   -5.80
dtype: float64

In [7]: df.sum(axis=1)
Out[7]: 
a    1.40
b    2.60
c    0.00
d   -0.55
dtype: float64

NA值會(huì)自動(dòng)被排除芦昔,除非整個(gè)切片都是NA栽惶。通過(guò)skipna(skip NA)選項(xiàng)可以禁用該功能:

In [8]: df.mean(axis=1, skipna=False)
Out[8]: 
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64

約簡(jiǎn)方法的選項(xiàng):axisskipna芍殖、level(如果軸是層次化索引的豪嗽,則根據(jù)level分組約簡(jiǎn))。

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

In [9]: df.idxmax()
Out[9]: 
one    b
two    d
dtype: object

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

In [10]: df.cumsum()
Out[10]: 
    one  two
a  1.40  NaN
b  8.50 -4.5
c   NaN  NaN
d  9.25 -5.8

還有一些豌骏,比如describe龟梦,用于一次性產(chǎn)生多個(gè)匯總統(tǒng)計(jì):

In [11]: df.describe()
Out[11]: 
            one       two
count  3.000000  2.000000
mean   3.083333 -2.900000
std    3.493685  2.262742
min    0.750000 -4.500000
25%    1.075000 -3.700000
50%    1.400000 -2.900000
75%    4.250000 -2.100000
max    7.100000 -1.300000

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

In [12]: obj = Series(['a', 'a', 'b', 'c'] * 4)
In [14]: obj.describe()
Out[14]: 
count     16
unique     3
top        a
freq       8
dtype: object

所有與描述統(tǒng)計(jì)相關(guān)的方法:見#2467

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

通過(guò)參數(shù)對(duì)計(jì)算出來(lái)的:
Seriescorr方法用來(lái)計(jì)算兩個(gè)Series中重疊的窃躲、非NA的计贰、按索引對(duì)齊的值的相關(guān)系數(shù),cov用于計(jì)算協(xié)方差:

In [39]: test.describe()
Out[39]: 
              Open         High          Low        Close    Adj Close  \
count  1594.000000  1594.000000  1594.000000  1594.000000  1594.000000   
mean      4.681644     4.759398     4.611951     4.688137     4.515610   
std       1.280538     1.327283     1.237487     1.285679     1.240624   
min       2.980000     2.990000     2.960000     2.980000     2.886848   
25%       3.550000     3.580000     3.510000     3.550000     3.433305   
50%       4.545000     4.605000     4.470000     4.540000     4.412471   
75%       5.450000     5.540000     5.360000     5.450000     5.212986   
max      10.430000    10.740000     9.850000    10.540000    10.383811   

             Volume  
count  1.594000e+03  
mean   1.460281e+08  
std    1.729750e+08  
min    0.000000e+00  
25%    5.921724e+07  
50%    9.124301e+07  
75%    1.464500e+08  
max    1.644112e+09  

In [40]: returns.tail()
Out[40]: 
            000001.SS  399001.SZ
Date                            
2016-12-26   0.003992   0.003290
2016-12-27  -0.002532  -0.000278
2016-12-28  -0.003990  -0.004243
2016-12-29  -0.001979  -0.002720
2016-12-30   0.002435   0.001741

In [41]: returns['000001.SS'].corr(returns['399001.SZ'])
Out[41]: 0.93169755572940594

In [42]: returns['000001.SS'].cov(returns['399001.SZ'])
Out[42]: 0.00023805940957128392

DataFramecorrcov方法將以DataFrame的形式返回完整的相關(guān)系數(shù)或協(xié)方差矩陣:

In [43]: returns.corr()
Out[43]: 
           000001.SS  399001.SZ
000001.SS   1.000000   0.931698
399001.SZ   0.931698   1.000000

In [44]: returns.cov()
Out[44]: 
           000001.SS  399001.SZ
000001.SS   0.000217   0.000238
399001.SZ   0.000238   0.000301

利用DataFramecorrwith方法蒂窒,可以計(jì)算其列或行跟另一個(gè)SeriesDataFrame之間的相關(guān)系數(shù)躁倒。

傳入一個(gè)Series將會(huì)返回一個(gè)相關(guān)系數(shù)值Series(針對(duì)各列進(jìn)行計(jì)算):

In [46]: returns.corrwith(returns['000001.SS'])
Out[46]: 
000001.SS    1.000000
399001.SZ    0.931698
dtype: float64

傳入一個(gè)DataFrame則會(huì)計(jì)算按列名配對(duì)的相關(guān)系數(shù):

這里計(jì)算百分比變化與成交量的相關(guān)系數(shù):

In [47]: returns.corrwith(volume)
Out[47]: 
000001.SS    0.066091
399001.SZ   -0.007895
dtype: float64

唯一值(unique)、值計(jì)數(shù)(value_counts)以及成員資格(isin):

從一維Series的值中抽取信息:

例:

In [48]: obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
In [49]: uniques = obj.unique()

In [50]: uniques
Out[50]: array(['c', 'a', 'd', 'b'], dtype=object)

value_counts用于計(jì)算一個(gè)Series中各值出現(xiàn)的頻率:

結(jié)果是按值頻率降序排列:

In [51]: obj.value_counts()
Out[51]: 
c    3
a    3
b    2
d    1
dtype: int64

isin用于判斷矢量化集合的成員資格洒琢,可用于選取子集:

In [52]: mask = obj.isin(['b', 'c'])

In [53]: mask
Out[53]: 
0     True
1    False
2    False
3    False
4    False
5     True
6     True
7     True
8     True
dtype: bool

In [54]: obj[mask]
Out[54]: 
0    c
5    b
6    b
7    c
8    c
dtype: object
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秧秉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衰抑,更是在濱河造成了極大的恐慌象迎,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呛踊,死亡現(xiàn)場(chǎng)離奇詭異砾淌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谭网,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門拇舀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜻底,你說(shuō)我怎么就攤上這事骄崩。” “怎么了薄辅?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵要拂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我站楚,道長(zhǎng)脱惰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任窿春,我火速辦了婚禮拉一,結(jié)果婚禮上采盒,老公的妹妹穿的比我還像新娘。我一直安慰自己蔚润,他們只是感情好磅氨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嫡纠,像睡著了一般烦租。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上除盏,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天叉橱,我揣著相機(jī)與錄音,去河邊找鬼者蠕。 笑死窃祝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踱侣。 我是一名探鬼主播粪小,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泻仙!你這毒婦竟也來(lái)了糕再?” 一聲冷哼從身側(cè)響起量没,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玉转,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后殴蹄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體究抓,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年袭灯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刺下。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稽荧,死狀恐怖橘茉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姨丈,我是刑警寧澤畅卓,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站蟋恬,受9級(jí)特大地震影響翁潘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歼争,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一拜马、第九天 我趴在偏房一處隱蔽的房頂上張望渗勘。 院中可真熱鬧,春花似錦俩莽、人聲如沸旺坠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)价淌。三九已至,卻和暖如春瞒津,著一層夾襖步出監(jiān)牢的瞬間蝉衣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工巷蚪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留病毡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓屁柏,卻偏偏與公主長(zhǎng)得像啦膜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淌喻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351