最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas 層次化索引的實(shí)現(xiàn)方法

 更新時(shí)間:2019年07月06日 09:58:28   作者:平淡才是真~~  
這篇文章主要介紹了pandas 層次化索引的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

層次化索引是pandas的一項(xiàng)重要功能,它使你能在一個(gè)軸上擁有多個(gè)(兩個(gè)以上)索引級(jí)別。

創(chuàng)建一個(gè)Series,并用一個(gè)由列表或數(shù)組組成的列表作為索引。

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,2,3]])

data
Out[6]: 
a 1  -2.842857
  2  0.376199
  3  -0.512978
b 1  0.225243
  2  -1.242407
  3  -0.663188
c 1  -0.149269
  2  -1.079174
d 2  -0.952380
  3  -1.113689
dtype: float64

這就是帶MultiIndex索引的Series的格式化輸出形式。索引之間的“間隔”表示“直接使用上面的標(biāo)簽”。

data.index
Out[7]: 
MultiIndex(levels=[['a', 'b', 'c', 'd'], [1, 2, 3]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])

對(duì)于一個(gè)層次化索引的對(duì)象,選取數(shù)據(jù)子集的操作很簡(jiǎn)單:

data['b']
Out[8]: 
1  0.225243
2  -1.242407
3  -0.663188
dtype: float64


data['b':'c']
Out[10]: 
b 1  0.225243
  2  -1.242407
  3  -0.663188
c 1  -0.149269
  2  -1.079174
dtype: float64

data.ix[['b','d']]
__main__:1: DeprecationWarning: 
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
Out[11]: 
b 1  0.225243
  2  -1.242407
  3  -0.663188
d 2  -0.952380
  3  -1.113689
dtype: float64

甚至可以在“內(nèi)層”中進(jìn)行選?。?/p>

data[:,2]
Out[12]: 
a  0.376199
b  -1.242407
c  -1.079174
d  -0.952380
dtype: float64

層次化索引在數(shù)據(jù)重塑和基于分組的操作中扮演重要角色。

可以通過unstack方法被重新安排到一個(gè)DataFrame中:

data.unstack()
Out[13]: 
     1     2     3
a -2.842857 0.376199 -0.512978
b 0.225243 -1.242407 -0.663188
c -0.149269 -1.079174    NaN
d    NaN -0.952380 -1.113689


#unstack的逆運(yùn)算是stack
data.unstack().stack()
Out[14]: 
a 1  -2.842857
  2  0.376199
  3  -0.512978
b 1  0.225243
  2  -1.242407
  3  -0.663188
c 1  -0.149269
  2  -1.079174
d 2  -0.952380
  3  -1.113689
dtype: float64

對(duì)于DataFrame,每條軸都可以有分層索引:

frame=DataFrame(np.arange(12).reshape((4,3)),
index=[['a','a','b','b'],[1,2,1,2]],
columns=[['Ohio','Ohio','Colorado'],
['Green','Red','Green']])

frame
Out[16]: 
   Ohio   Colorado
  Green Red  Green
a 1   0  1    2
 2   3  4    5
b 1   6  7    8
 2   9 10    11

各層都可以有名字。如果指定了名稱,它們會(huì)顯示在控制臺(tái)中(不要將索引名稱和軸標(biāo)簽混為一談?。?/p>

frame.index.names=['key1','key2']
frame.columns.names=['state','color']

frame
Out[22]: 
state   Ohio   Colorado
color   Green Red  Green
key1 key2          
a  1    0  1    2
   2    3  4    5
b  1    6  7    8
   2    9 10    11

由于有了分部的列索引,可以輕松選取列分組:

frame['Ohio']
Out[23]: 
color   Green Red
key1 key2      
a  1     0  1
   2     3  4
b  1     6  7
   2     9  10

重排分級(jí)排序

有時(shí)需要重新調(diào)整某條軸上各級(jí)別的順序,或根據(jù)指定級(jí)別上的值對(duì)數(shù)據(jù)進(jìn)行排序。swaplevel接受兩個(gè)級(jí)別編號(hào)或名稱,并返回一個(gè)互換了級(jí)別的新對(duì)象(但數(shù)據(jù)不會(huì)發(fā)生變化):

frame.swaplevel('key1','key2')
Out[24]: 
state   Ohio   Colorado
color   Green Red  Green
key2 key1          
1  a    0  1    2
2  a    3  4    5
1  b    6  7    8
2  b    9 10    11

sortlevel則根據(jù)單個(gè)級(jí)別中的值對(duì)數(shù)據(jù)進(jìn)行排序。交換級(jí)別時(shí),常用得到sortlevel,這樣最終結(jié)果也是有序的了:

frame.swaplevel(0,1)
Out[27]: 
state   Ohio   Colorado
color   Green Red  Green
key2 key1          
1  a    0  1    2
2  a    3  4    5
1  b    6  7    8
2  b    9 10    11

#交換級(jí)別0,1(也就是key1,key2)
#然后對(duì)axis=0進(jìn)行排序
frame.swaplevel(0,1).sortlevel(0)
__main__:1: FutureWarning: sortlevel is deprecated, use sort_index(level= ...)
Out[28]: 
state   Ohio   Colorado
color   Green Red  Green
key2 key1          
1  a    0  1    2
   b    6  7    8
2  a    3  4    5
   b    9 10    11

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

有時(shí)需要重新調(diào)整某條軸上各級(jí)別的順序,或根據(jù)指定級(jí)別上的值對(duì)數(shù)據(jù)進(jìn)行排序。swaplevel接受兩個(gè)級(jí)別編號(hào)或名稱,并返回一個(gè)互換了級(jí)別的新對(duì)象(但數(shù)據(jù)不會(huì)發(fā)生變化):

frame.sum(level='key2')
Out[29]: 
state Ohio   Colorado
color Green Red  Green
key2          
1     6  8    10
2    12 14    16

frame.sum(level='color',axis=1)
Out[30]: 
color   Green Red
key1 key2      
a  1     2  1
   2     8  4
b  1    14  7
   2    20  10

使用DataFrame的列

將DataFrame的一個(gè)或多個(gè)列當(dāng)做行索引來用,或?qū)⑿兴饕兂蒁ataframe 的列。

frame=DataFrame({'a':range(7),'b':range(7,0,-1),
'c':['one','one','one','two','two','two','two'],
'd':[0,1,2,0,1,2,3]})

frame
Out[32]: 
  a b  c d
0 0 7 one 0
1 1 6 one 1
2 2 5 one 2
3 3 4 two 0
4 4 3 two 1
5 5 2 two 2
6 6 1 two 3

DataFrame的set_index函數(shù)會(huì)將其一個(gè)或多個(gè)列轉(zhuǎn)換為行索引,并創(chuàng)建一個(gè)新的DataFrame:

frame2=frame.set_index(['c','d'])

frame2
Out[34]: 
    a b
c  d   
one 0 0 7
  1 1 6
  2 2 5
two 0 3 4
  1 4 3
  2 5 2
  3 6 1

默認(rèn)情況下,那些列會(huì)從DataFrame中移除,但也可以將其保留下來:

frame.set_index(['c','d'],drop=False)
Out[35]: 
    a b  c d
c  d       
one 0 0 7 one 0
  1 1 6 one 1
  2 2 5 one 2
two 0 3 4 two 0
  1 4 3 two 1
  2 5 2 two 2
  3 6 1 two 3

reset_index的功能和set_index剛好相反,層次化索引的級(jí)別會(huì)被轉(zhuǎn)移到列里面:

frame2.reset_index()
Out[36]: 
   c d a b
0 one 0 0 7
1 one 1 1 6
2 one 2 2 5
3 two 0 3 4
4 two 1 4 3
5 two 2 5 2
6 two 3 6 1

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息

    python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python模塊匯總(常用第三方庫)

    Python模塊匯總(常用第三方庫)

    計(jì)算機(jī)在開發(fā)過程中,代碼越寫越多,也就越難以維護(hù),所以為了編寫可維護(hù)的代碼,我們會(huì)把函數(shù)進(jìn)行分組,放在不同的文件里。在python里,一個(gè).py文件就是一個(gè)模塊
    2019-10-10
  • Python3 requests模塊如何模仿瀏覽器及代理

    Python3 requests模塊如何模仿瀏覽器及代理

    這篇文章主要介紹了Python3 requests模塊如何模仿瀏覽器及代理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python-OpenCV實(shí)戰(zhàn):利用 KNN 算法識(shí)別手寫數(shù)字

    Python-OpenCV實(shí)戰(zhàn):利用 KNN 算法識(shí)別手寫數(shù)字

    K-最近鄰(KNN)是監(jiān)督學(xué)習(xí)中最簡(jiǎn)單的算法之一,KNN可用于分類和回歸問題。本文將為大家介紹的是通過KNN算法實(shí)現(xiàn)識(shí)別手寫數(shù)字。文中的示例代碼介紹詳細(xì),需要的朋友可以參考一下
    2021-12-12
  • Python用Try語句捕獲異常的實(shí)例方法

    Python用Try語句捕獲異常的實(shí)例方法

    在本篇文章中小編給大家整理了關(guān)于Python用Try語句如何捕獲異常的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-06-06
  • python 對(duì)字典按照value進(jìn)行排序的方法

    python 對(duì)字典按照value進(jìn)行排序的方法

    這篇文章主要介紹了python 對(duì)字典按照value進(jìn)行排序的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python 文件操作實(shí)現(xiàn)代碼

    Python 文件操作實(shí)現(xiàn)代碼

    文件操作是程序設(shè)計(jì)中不可或缺的重要部分。Python通過一個(gè)內(nèi)置函數(shù)open來打開文件。
    2009-10-10
  • Python使用Selenium獲取Web頁面信息的流程步驟

    Python使用Selenium獲取Web頁面信息的流程步驟

    在 Web 自動(dòng)化測(cè)試和數(shù)據(jù)抓取中,獲取頁面信息是一個(gè)基本且重要的操作,通過 Selenium,您可以輕松地獲取頁面的各種信息,這些信息不僅可以用于驗(yàn)證測(cè)試結(jié)果,還可以用于數(shù)據(jù)分析和處理,所以本文給大家介紹了Python使用Selenium獲取Web頁面信息的流程步驟
    2025-03-03
  • Python戀愛小助手之必拿下

    Python戀愛小助手之必拿下

    小編有個(gè)好兄弟最近在追妹子,跟妹子打得火熱!就差臨門一腳了,這一jio我?guī)兔ρa(bǔ)上去了!他問有沒有什么酷炫的表白方式,想要一次成功,表白的方式有許多種今天小編來給大家?guī)韮蓚€(gè)不得不同意的表白代碼
    2021-10-10
  • python異常基類BaseException詳解

    python異常基類BaseException詳解

    這篇文章主要為大家介紹了python異?;怋aseException詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論

望奎县| 潮州市| 崇信县| 津市市| 胶州市| 塔河县| 铜梁县| 巴中市| 温宿县| 霍林郭勒市| 望谟县| 瑞昌市| 唐河县| 南部县| 高雄县| 呼伦贝尔市| 紫金县| 黑水县| 海南省| 称多县| 江油市| 宁陕县| 凤山市| 新宁县| 古田县| 高尔夫| 韩城市| 武隆县| 清徐县| 达拉特旗| 乌鲁木齐县| 乌拉特前旗| 徐水县| 基隆市| 电白县| 历史| 封开县| 皋兰县| 丽水市| 大荔县| 马公市|