九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Pandas:匯總和計(jì)算描述統(tǒng)計(jì)

pandas對(duì)象擁有一組常用的數(shù)學(xué)和統(tǒng)計(jì)方法,大部分都屬于約簡(jiǎn)和匯總統(tǒng)計(jì),用于從Series中提取單個(gè)的值,或者從DataFrame中的行或列中提取一個(gè)Series。相比Numpy而言,Numpy都是基于沒(méi)有缺失數(shù)據(jù)的假設(shè)而構(gòu)建的。

來(lái)看一個(gè)簡(jiǎn)單的例子

In [6]: df=DataFrame([[1.4,np.nan],[7,-4],[np.nan,np.nan],[0.75,-1.3]],index=['a

   ...: ','b','c','d'],columns=['one','two'])

df中,有些行的數(shù)據(jù)是空的,沒(méi)有實(shí)際意義

In [7]: df

Out[7]: 

    one  two

a  1.40  NaN

b  7.00 -4.0

c   NaN  NaN

d  0.75 -1.3

但是在用sum計(jì)算的時(shí)候依然能夠計(jì)算出每一列的值

In [8]: df.sum()

Out[8]: 

one    9.15

two   -5.30

dtype: float64

傳入axis1會(huì)按照行的方式進(jìn)行計(jì)算

In [9]: df.sum(axis=1)

Out[9]: 

a    1.40

b    3.00

c    0.00

d   -0.55

dtype: float64

約簡(jiǎn)方法的選項(xiàng):

間接統(tǒng)計(jì)(比如達(dá)到最小值和最大值的索引)

In [10]: df.idxmax()

Out[10]: 

one    b

two    d

dtype: object

In [11]: df.max()

Out[11]: 

one    7.0

two   -1.3

dtype: float64

累加型:

In [12]: df.cumsum()

Out[12]: 

    one  two

a  1.40  NaN

b  8.40 -4.0

c   NaN  NaN

d  9.15 -5.3

還有一種比較強(qiáng)大的方法describe用于一次性產(chǎn)生多個(gè)匯總統(tǒng)計(jì)。其中mean為平均值,std為標(biāo)準(zhǔn)差

In [13]: df.describe()

Out[13]: 

            one       two

count  3.000000  2.000000

mean   3.050000 -2.650000

std    3.436204  1.909188

min    0.750000 -4.000000

25%    1.075000 -3.325000

50%    1.400000 -2.650000

75%    4.200000 -1.975000

max    7.000000 -1.300000

描述和匯總的方法:

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

還有一類方法可以從一維Series的值中抽取信息。以下面這個(gè)Series為例

In [15]: obj=Series(['c','a','d','a','a','b','d','c','c'])

In [16]: uni=obj.unique()

In [17]: uni

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

返回的結(jié)果是未排序的,如果需要排序的話可以對(duì)uni采用sort的方法。

In [18]: uni.sort()

In [19]: uni

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

value_counts統(tǒng)計(jì)Serises中各值出現(xiàn)的概率

In [21]: obj.value_counts()

Out[21]: 

c    3

a    3

d    2

b    1

dtype: int64

同樣的得到的結(jié)果也是未排序的,如果要排序的話按照下面的方法進(jìn)行

In [22]: pd.value_counts(obj.values,sort=False)

Out[22]: 

a    3

c    3

b    1

d    2

dtype: int64

那么這些功能也是可以針對(duì)DataFrame使用的,使用方法如下

In [23]: data=DataFrame({'qu1':[1,3,4,3,4],'qu2':[2,3,1,2,3],'qu3':[1,5,2,4,4]})

    ...: 

In [24]: data

Out[24]: 

   qu1  qu2  qu3

0    1    2    1

1    3    3    5

2    4    1    2

3    3    2    4

4    4    3    4

pandasvalue_counts傳給該DataFrameapply函數(shù)。

In [25]: result=data.apply(pd.value_counts).fillna(0)

得到的是

In [26]: result

Out[26]: 

   qu1  qu2  qu3

1  1.0  1.0  1.0

2  0.0  2.0  1.0

3  2.0  2.0  0.0

4  2.0  0.0  2.0

5  0.0  0.0  1.0

處理缺失數(shù)據(jù)

pandas使用浮點(diǎn)值NaN表示浮點(diǎn)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù)。NA的處理方法如下:

In [27]: data=Series(['abc','antick',np.nan,'avocado'])

In [28]: data.isnull()

Out[28]: 

0    False

1    False

2     True

3    False

dtype: bool

In [29]: data.fillna('zero')

Out[29]: 

0        abc

1     antick

2       zero

3    avocado

dtype: object

In [30]: data.notnull()

Out[30]: 

0     True

1     True

2    False

3     True

dtype: bool

丟棄全為空的數(shù)據(jù)

In [31]: data.dropna()

Out[31]: 

0        abc

1     antick

3    avocado

dtype: object

但在DataFrame中,如果直接采用dropna的話將會(huì)默認(rèn)丟棄任何含有缺省值的行。

In [32]: data=DataFrame([[1,6.5,3],[1,None,None],[None,None,None],[None,6.4,3]])

    ...: 

In [33]: data

Out[33]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  NaN  NaN

2  NaN  NaN  NaN

3  NaN  6.4  3.0

In [34]: clean=data.dropna()

In [35]: clean

Out[35]: 

     0    1    2

0  1.0  6.5  3.0

傳入how=’all’將只丟棄全為NA的那些行

In [36]: clean=data.dropna(how='all')

In [37]: clean

Out[37]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  NaN  NaN

3  NaN  6.4  3.0

加入axis=1將會(huì)丟棄全為None的列

In [38]: clean=data.dropna(axis=1,how='all')

In [39]: clean

Out[39]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  NaN  NaN

2  NaN  NaN  NaN

3  NaN  6.4  3.0

填充缺失數(shù)據(jù)

有些時(shí)候其實(shí)并不想要丟棄為空的數(shù)據(jù),只是想換個(gè)顯示名稱或者通過(guò)其他方式來(lái)填補(bǔ)這些空洞。這個(gè)方法在前面其實(shí)也用過(guò)就是fillna

In [40]: data.fillna(0)

Out[40]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  0.0  0.0

2  0.0  0.0  0.0

3  0.0  6.4  3.0

如果想差異化的填充,比如第一列的空數(shù)據(jù)填充0,第二列的空數(shù)據(jù)填充-1.fillna也是有方法的。傳入一個(gè)字典即可

In [41]: data

Out[41]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  NaN  NaN

2  NaN  NaN  NaN

3  NaN  6.4  3.0

字典的鍵值就代表列的索引,下面這個(gè)就是將第一列的空值填充為0,第二列的空值填充為-1

In [42]: data.fillna({1:0,2:-1})

Out[42]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  0.0 -1.0

2  NaN  0.0 -1.0

3  NaN  6.4  3.0

再看下前向插值和后向插值。method=ffill是前向插值,也就是根據(jù)空值的前面的值進(jìn)行插入

In [43]: data.fillna(method='ffill')

Out[43]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  6.5  3.0

2  1.0  6.5  3.0

3  1.0  6.4  3.0

method=backfill為后向插值,也就是根據(jù)空值后面的值進(jìn)行插入

In [44]: data.fillna(method='backfill')

Out[44]: 

     0    1    2

0  1.0  6.5  3.0

1  1.0  6.4  3.0

2  NaN  6.4  3.0

3  NaN  6.4  3.0

fillna函數(shù)的參數(shù)

層次化索引

層次化索引是pandas的一個(gè)很重要的功能。它能使你在一個(gè)軸上擁有多個(gè)索引級(jí)別,也就是以低維度形式處理高維度的數(shù)據(jù)

In [50]: data=Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c'

    ...: ,'d','d',],[1,2,3,1,2,3,1,2,1,2]])

In [51]: data

Out[51]: 

a  1    1.085711

   2    0.018760

   3   -0.357718

b  1    1.147850

   2   -0.065931

   3   -0.012061

c  1   -0.736660

   2   -1.483384

d  1   -0.403322

   2   -0.309897

dtype: float64

In [52]: data.index

Out[52]: 

MultiIndex(levels=[[u'a', u'b', u'c', u'd'], [1, 2, 3]],

           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 0, 1]])

在上面的這個(gè)例子中,a,b,c,d可以看做是外層索引。雙層索引的使用

In [53]: data['a']

Out[53]: 

1    1.085711

2    0.018760

3   -0.357718

dtype: float64

In [54]: data['a'][1]

Out[54]: 1.0857109651061458

In [55]: data['a'][2]

Out[55]: 0.018760105407126977

還可以在內(nèi)層中提取數(shù)據(jù)

In [58]: data[:,2]

Out[58]: 

a    0.018760

b   -0.065931

c   -1.483384

d   -0.309897

dtype: float64

In [67]: data['a':'b']

Out[67]: 

a  1    1.085711

   2    0.018760

   3   -0.357718

b  1    1.147850

   2   -0.065931

   3   -0.012061

dtype: float64

In [68]: data['a':'b'][2]

Out[68]: -0.3577177301843591

同樣的對(duì)于DataFrame也可以進(jìn)行類似的分層

In [69]: frame=DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[

    ...: 1,2,1,2]],columns=[['chengdu','chongqing','beijing'],['Green','Red','Gr

    ...: een']])

In [70]: frame

Out[70]: 

    chengdu chongqing beijing

      Green       Red   Green

a 1       0         1       2

  2       3         4       5

b 1       6         7       8

  2       9        10      11

索引方式如下:

In [73]: frame['chengdu']

Out[73]: 

     Green

a 1      0

  2      3

b 1      6

  2      9

In [74]: frame['chengdu']['Green']

Out[74]: 

a  1    0

   2    3

b  1    6

   2    9

Name: Green, dtype: int64

In [75]: frame['chengdu']['Green']['a']

Out[75]: 

1    0

2    3

還可以給各層進(jìn)行命名

In [79]: frame.index.names=['key1','key2']

In [80]: frame.columns.names=['city','color']

In [81]: frame

Out[81]: 

city      chengdu chongqing beijing

color       Green       Red   Green

key1 key2                          

a    1          0         1       2

     2          3         4       5

b    1          6         7       8

     2          9        10      11

根據(jù)級(jí)別匯總統(tǒng)計(jì)

我們可以根據(jù)行或列上的級(jí)別來(lái)進(jìn)行求和

對(duì)key2的列相同的值進(jìn)行求和計(jì)算

In [82]: frame.sum(level='key2')

Out[82]: 

city  chengdu chongqing beijing

color   Green       Red   Green

key2                           

1           6         8      10

2          12        14      16

也就是akey2列等于1的值和bkey2列等于1的值求和。akey2列等于2的值和bkey2列等于2的值求和

如果要針對(duì)ab分別求助,則采用level=key1的方式

In [83]: frame.sum(level='key1')

Out[83]: 

city  chengdu chongqing beijing

color   Green       Red   Green

key1                           

a           3         5       7

b          15        17      19

對(duì)color相同的進(jìn)行行求和。

In [87]: frame.sum(level='color',axis=1)

Out[87]: 

color      Green  Red

key1 key2            

a    1         2    1

     2         8    4

b    1        14    7

     2        20   10

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
pandas中的缺失值處理
小白也能看懂的Pandas實(shí)操演示教程(下)
pandas 缺失數(shù)據(jù)處理大全(附代碼)
python小技能-缺失數(shù)據(jù)處理
python3數(shù)據(jù)分析:Na值得數(shù)據(jù)處理
Python數(shù)據(jù)分析——Pandas數(shù)據(jù)結(jié)構(gòu)和操作
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服