欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pandas中DataFrame多層索引的實(shí)現(xiàn)

 更新時(shí)間:2024年12月31日 09:54:34   作者:m0_62172798  
本文主要介紹了pandas中DataFrame多層索引的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、創(chuàng)建

相較于一層索引,在創(chuàng)建多層索引時(shí)給字段添加關(guān)系,其創(chuàng)建方法包括運(yùn)用元組、數(shù)組、笛卡爾積,在普通DataFrame中創(chuàng)立。

 1.1方式一使用pd.MultiIndex.from_tuples創(chuàng)建索引

tuples為元組 含義就是使用pandas中用元組建立多層索引

import pandas as pd
import numpy as np

#這里創(chuàng)建的兩層索引,姓名、考試
index_lables=[('張三','期中'),('張三','期末'),('李四','期中'),('李四','期末')]

mult_index = pd.MultiIndex.from_tuples(index_lables,names=('name','exam'))

data = {
    'python':[98,149,130,147],
    'math':[95,78,143,104]
}
df=pd.DataFrame(data,index=mult_index)

1.2方式二:使用pd.MultiIndex.from_arrays(數(shù)組)

index_labels = [['張三','張三','李四','李四'],['期中','期末','期中','期末']]

mult_index=pd.MultiIndex.from_arrays(index_labels,names=('name','exam'))
df=pd.DataFrame(data,index=mult_index)

1.3方式三:使用pd.MultiIndex.from_product(笛卡爾積)

index_lables=pd.MultiIndex.from_product([['張三','李四','王五','趙六'],
                                        ['期中','期末']],
                                        names=['name','exam'])
df=pd.DataFrame(np.random.randint(80,150, size=(8,2)),
                index=index_lables,
                columns=['python','math']
                )

df1=pd.DataFrame(np.random.randint(80,150,size=(2,4)),
                 index=['張三','李四'],
                 columns=pd.MultiIndex.from_product([['python','math'],['期中','期末']]))

笛卡爾積使用的不同其創(chuàng)建的dataframe也不同

df1

df

1.4方式四在已有的DataFrame基礎(chǔ)上創(chuàng)建

使用set_index方法進(jìn)行創(chuàng)建

參數(shù)

keys,要設(shè)置為索引的列名(如有多個(gè)應(yīng)放在一個(gè)列表里)

drop: bool = True,將設(shè)置為索引的列刪除,默認(rèn)為True

append: bool = False,是否將新的索引追加到原索引后(即是否保留原索引),默認(rèn)為False

inplace: bool = False, 是否在原DataFrame上修改,默認(rèn)為False

verify_integrity: bool = False,是否檢查索引有無重復(fù),默認(rèn)為False

 示例:

import pandas as pd
import numpy as np

data={
    'year':[2020,2020,2021,2021,2022,2022],
    'quarter':[1,2,1,2,1,2],
    'sales':[100,150,120,130,140,180],
    'profit':[50,80,80,100,30,80]
}
df=pd.DataFrame(data)
print(df)
df.set_index(['year','quarter'],inplace=True)
print(df)

2、篩選數(shù)據(jù)

多層索引的DataFrame的index(每一行的下標(biāo))為元組

print(df.index)

在篩選數(shù)據(jù)時(shí),與普通的DataFrame一致,可以通過標(biāo)簽、位置、字段名、切片進(jìn)行篩選

根據(jù)標(biāo)簽索引

print(df.loc[[2020,2021]])
print(df.loc[(2020,1)])#與df.loc[2020].loc[1]一致
print(df.loc[[(2020,1),(2020,2)]])
print(df.loc[(2020,1):(2021,2)])

 根據(jù)位置索引

print(df.iloc[[0,1]])
print(df.iloc[0:4,[0]])#如果‘,'的0不加[],則該列為series

3、分層計(jì)算

 之前DataFrame的統(tǒng)計(jì)函數(shù)有l(wèi)evel參數(shù),能夠給多層索引DataFrame運(yùn)用,但已被舍棄,現(xiàn)在想要運(yùn)算需要使用:DataFrame.groupby(level=層數(shù)).函數(shù)名()

我們以例子進(jìn)行說明:(這個(gè)輸出的DataFrame有點(diǎn)丑,別介意)

import pandas as pd
import numpy as np

df=pd.DataFrame(np.random.randint(0,151,size=(40,3)),
                index=pd.MultiIndex.from_product([ list('ABCDEFGHIJ'),['期中','期末'],['平時(shí)成績','考試成績']]),
                columns=['math','python','english']
                )
print(df)

 我們先來看層級(jí),最左邊的標(biāo)簽為字母,然后是“期中/期末”,最后是成績類別,所以對應(yīng)的層數(shù)為0,1,2。弄清楚之后,我們使用代碼看看運(yùn)算結(jié)果。

print(df.groupby(level=0).mean())
print(df.groupby(level=1).mean())
print(df.groupby(level=2).mean())

level=1

level=1

level=2|level=3

 可以看出,level=0時(shí),根據(jù)每個(gè)同學(xué)的其他4項(xiàng)計(jì)算各科平均分,level=1時(shí),計(jì)算期中期末的平均分。

到此這篇關(guān)于pandas中DataFrame多層索引的實(shí)現(xiàn) 的文章就介紹到這了,更多相關(guān)pandas DataFrame多層索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)分析之如何利用pandas查詢數(shù)據(jù)示例代碼

    Python數(shù)據(jù)分析之如何利用pandas查詢數(shù)據(jù)示例代碼

    查詢和分析數(shù)據(jù)是pandas的重要功能,也是我們學(xué)習(xí)pandas的基礎(chǔ),下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之如何利用pandas查詢數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • python的ArgumentParser使用及說明

    python的ArgumentParser使用及說明

    這篇文章主要介紹了python的ArgumentParser使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Matplotlib繪制混淆矩陣的實(shí)現(xiàn)

    Matplotlib繪制混淆矩陣的實(shí)現(xiàn)

    對于機(jī)器學(xué)習(xí)多分類模型來說,其評價(jià)指標(biāo)除了精度之外,常用的還有混淆矩陣和分類報(bào)告,下面來展示一下如何繪制混淆矩陣,這在論文中經(jīng)常會(huì)用到。感興趣的可以了解一下
    2021-05-05
  • 解決Atom安裝Hydrogen無法運(yùn)行python3的問題

    解決Atom安裝Hydrogen無法運(yùn)行python3的問題

    今天小編就為大家分享一篇解決Atom安裝Hydrogen無法運(yùn)行python3的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 你可能不知道的Python 技巧小結(jié)

    你可能不知道的Python 技巧小結(jié)

    有許許多多文章寫了 Python 中的許多很酷的特性,例如變量解包、偏函數(shù)、枚舉可迭代對象,但是關(guān)于 Python 還有很多要討論的話題,因此在本文中,我將嘗試展示一些我知道的和在使用的,但很少在其它文章提到過的特性。那就開始吧
    2020-01-01
  • 使用python繪制二維圖形示例

    使用python繪制二維圖形示例

    今天小編就為大家分享一篇使用python繪制二維圖形示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python的collections模塊中的OrderedDict有序字典

    Python的collections模塊中的OrderedDict有序字典

    字典是無序的,但是collections的OrderedDict類為我們提供了一個(gè)有序的字典結(jié)構(gòu),名副其實(shí)的Ordered+Dict,下面通過兩個(gè)例子來簡單了解下Python的collections模塊中的OrderedDict有序字典:
    2016-07-07
  • 解決jupyter加載文件失敗的問題

    解決jupyter加載文件失敗的問題

    這篇文章主要介紹了解決jupyter加載文件失敗的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python使用5行代碼批量做小姐姐的素描圖

    Python使用5行代碼批量做小姐姐的素描圖

    本文主要介紹了Python使用5行代碼批量做小姐姐的素描圖,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • python中l(wèi)ist方法詳解

    python中l(wèi)ist方法詳解

    list 是 Python 中的一種內(nèi)置數(shù)據(jù)類型,代表一個(gè)可變的有序序列。list 類型的對象可以使用多個(gè)方法來操作和修改其中的元素。文中通過代碼示例詳細(xì)介紹了list的常用方法,感興趣的同學(xué)可以參考閱讀
    2023-04-04

最新評論