亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Pandas 索引和數(shù)據(jù)查詢(xún)

Pandas 索引和數(shù)據(jù)查詢(xún)的操作實(shí)例

在本章中,我們將討論如何對(duì)日期進(jìn)行切片和切塊,并獲得Pandas對(duì)象的子集。
Python和NumPy索引運(yùn)算符“[]”和屬性運(yùn)算符“.”??梢栽诟鞣N用例中快速輕松地訪(fǎng)問(wèn)Pandas數(shù)據(jù)結(jié)構(gòu)。但是,由于事先不知道要訪(fǎng)問(wèn)的數(shù)據(jù)類(lèi)型,因此直接使用標(biāo)準(zhǔn)運(yùn)算符存在一些優(yōu)化限制。對(duì)于生產(chǎn)代碼,我們建議您利用本章中介紹的優(yōu)化的熊貓數(shù)據(jù)訪(fǎng)問(wèn)方法。
Pandas現(xiàn)在支持三種類(lèi)型的多軸索引:下表中提到了三種類(lèi)型-

索引說(shuō)明
.loc()基于標(biāo)簽
.iloc()基于整數(shù)
.ix()基于標(biāo)簽和整數(shù)

.loc()

Pandas 提供了多種方法來(lái)具有純粹基于標(biāo)簽的索引。切片時(shí),還包括起始邊界。整數(shù)是有效的標(biāo)簽,但它們引用的是標(biāo)簽而不是位置。

.loc() 具有多種訪(fǎng)問(wèn)方法,例如:

一個(gè)標(biāo)量標(biāo)簽 標(biāo)簽列表 切片對(duì)象 布爾數(shù)組

loc 需要兩個(gè)單/列表/范圍運(yùn)算符,以“,”分隔。第一個(gè)指示行,第二個(gè)指示列。

案例 1

# 導(dǎo)入pandas庫(kù)并起別名pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 選擇特定列的所有行
 print(df.loc[:,'A'])

運(yùn)行結(jié)果:

  a   0.391548
b  -0.070649
c  -0.317212
d  -2.162406
e   2.202797
f   0.613709
g   1.050559
h   1.122680
Name: A, dtype: float64

實(shí)例 2

   
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 為多個(gè)列選擇所有行,比如list[]
 print(df.loc[:,['A','C']])

運(yùn)行結(jié)果:

          A           C
a    0.391548    0.745623
b   -0.070649    1.620406
c   -0.317212    1.448365
d   -2.162406   -0.873557
e    2.202797    0.528067
f    0.613709    0.286414
g    1.050559    0.216526
h    1.122680   -1.621420

實(shí)例 3

# 導(dǎo)入pandas庫(kù)并起別名pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 為多個(gè)列選擇幾行,比如list[]
 print(df.loc[['a','b','f','h'],['A','C']])

運(yùn)行結(jié)果:

         A          C
a   0.391548   0.745623
b  -0.070649   1.620406
f   0.613709   0.286414
h   1.122680  -1.621420

實(shí)例 4

# 導(dǎo)入pandas庫(kù)并起別名pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 為所有列選擇行范圍
 print(df.loc['a':'h'])

運(yùn)行結(jié)果:

          A           B          C          D
a    0.391548   -0.224297   0.745623   0.054301
b   -0.070649   -0.880130   1.620406   1.419743
c   -0.317212   -1.929698   1.448365   0.616899
d   -2.162406    0.614256  -0.873557   1.093958
e    2.202797   -2.315915   0.528067   0.612482
f    0.613709   -0.157674   0.286414  -0.500517
g    1.050559   -2.272099   0.216526   0.928449
h    1.122680    0.324368  -1.621420  -0.741470

實(shí)例 5

# 導(dǎo)入pandas庫(kù)并起別名pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4),
 index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
 # 用于使用布爾數(shù)組獲取值
 print(df.loc['a']>0)

運(yùn)行結(jié)果:

   A  False
 B  True
 C  False
 D  False
 Name: a, dtype: bool

.iloc()

Pandas 提供了多種方法來(lái)獲得純粹基于整數(shù)的索引。像python和numpy一樣,它們都是基于0的索引。
各種訪(fǎng)問(wèn)方法如下:

整數(shù) 整數(shù)列表 值范圍

實(shí)例1

# 導(dǎo)入pandas庫(kù)并起別名pd
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # 選擇特定列的所有行
 print(df.iloc[:4])

運(yùn)行結(jié)果:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251

實(shí)例 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # 整數(shù)切片
 print(df.iloc[:4]
 print(df.iloc[1:5, 2:4])

運(yùn)行結(jié)果:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251

           C          D
1  -0.813012   0.631615
2   0.025070   0.230806
3   0.826977  -0.026251
4   1.423332   1.130568

實(shí)例 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # 對(duì)值列表進(jìn)行切片
 print(df.iloc[[1, 3, 5], [1, 3]]
 print(df.iloc[1:3, :])
 print(df.iloc[:,1:3])

運(yùn)行結(jié)果:

         B           D
1   0.890791    0.631615
3  -1.284314   -0.026251
5  -0.512888   -0.518930

           A           B           C           D
1  -0.685354    0.890791   -0.813012    0.631615
2  -0.783192   -0.531378    0.025070    0.230806

           B           C
0   0.256239   -1.270702
1   0.890791   -0.813012
2  -0.531378    0.025070
3  -1.284314    0.826977
4  -0.460729    1.423332
5  -0.512888    0.581409
6  -1.204853    0.098060
7  -0.947857    0.641358

.ix()

除了基于純標(biāo)簽和基于整數(shù)的方法外,Pandas還提供了一種混合方法,用于使用.ix()運(yùn)算符選擇和子集對(duì)象。

實(shí)例 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # 整數(shù)切片
 print(df.ix[:4])

運(yùn)行結(jié)果:

         A          B           C           D
0   0.699435   0.256239   -1.270702   -0.645195
1  -0.685354   0.890791   -0.813012    0.631615
2  -0.783192  -0.531378    0.025070    0.230806
3   0.539042  -1.284314    0.826977   -0.026251

實(shí)例 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 # 索引切片
 print(df.ix[:,'A'])

運(yùn)行結(jié)果:

  0   0.699435
1  -0.685354
2  -0.783192
3   0.539042
4  -1.044209
5  -1.415411
6   1.062095
7   0.994204
Name: A, dtype: float64

符號(hào)的使用

通過(guò)多軸索引從Pandas對(duì)象獲取值使用以下符號(hào):

對(duì)象索引器返回類(lèi)型
Seriess.loc[indexer]標(biāo)量值
DataFramedf.loc[row_index,col_index]Series 對(duì)象
Panelp.loc[item_index,major_index, minor_index]p.loc[item_index,major_index, minor_index]

.iloc()和.ix()應(yīng)用相同的索引選項(xiàng)和返回值。

我們看看如何對(duì)DataFrame對(duì)象執(zhí)行每個(gè)操作。我們將使用基本索引運(yùn)算符'[]'-

實(shí)例 1

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df['A'])

運(yùn)行結(jié)果:

  0  -0.478893
1   0.391931
2   0.336825
3  -1.055102
4  -0.165218
5  -0.328641
6   0.567721
7  -0.759399
Name: A, dtype: float64

我們可以將值列表傳遞給[]以選擇那些列

實(shí)例 2

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df[['A','B']])

運(yùn)行結(jié)果:

         A           B
0  -0.478893   -0.606311
1   0.391931   -0.949025
2   0.336825    0.093717
3  -1.055102   -0.012944
4  -0.165218    1.550310
5  -0.328641   -0.226363
6   0.567721   -0.312585
7  -0.759399   -0.372696

實(shí)例 3

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df[2:2])

運(yùn)行結(jié)果:

   Columns: [A, B, C, D]
 Index: []

屬性訪(fǎng)問(wèn)

可以使用屬性運(yùn)算符“。”選擇列。

實(shí)例

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
 print(df.A)

運(yùn)行結(jié)果:

  0   -0.478893
1    0.391931
2    0.336825
3   -1.055102
4   -0.165218
5   -0.328641
6    0.567721
7   -0.759399
Name: A, dtype: float64