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

Pandas數據分析-pandas數據框的多層索引

 更新時間:2022年08月12日 10:36:11   作者:阡之塵埃  
這篇文章主要介紹了Pandas數據分析-pandas數據框的多層索引,pandas數據框針對高維數據,也有多層索引的辦法去應對具體詳細的內容介紹需要的小伙伴可以參考一下

前言

pandas數據框針對高維數據,也有多層索引的辦法去應對。多層數據一般長這個樣子

可以看到AB兩大列,下面又有xy兩小列。 行有abc三行,又分為onetwo兩小行。

在分組聚合的時候也會產生多層索引,下面演示一下。

導入包和數據:

import numpy as np 
import pandas as pd
df=pd.read_excel('team.xlsx')

分組聚合:

df.groupby(['team',df.mean(1)>60]).count() #每組平均分大于60的人的個數

 可以看到分為abcde五組,平均分大于60 的組員兩小行。

創(chuàng)建多層索引

#序列中創(chuàng)建
arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
index=pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
index

pd.DataFrame([{'a':1, 'b':2}], index=index)

#來自元組創(chuàng)建
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
pd.Series(np.random.randn(8), index=index)

#可迭代對象的笛卡爾積,排列組合各種情況
numbers = [0, 1, 2]
colors = ['green', 'purple']
index = pd.MultiIndex.from_product([numbers, colors],names=['number', 'color'])
pd.Series(np.random.randn(6), index=index)

#來自 DataFrame
df = pd.DataFrame([['bar', 'one'], ['bar', 'two'],
                   ['foo', 'one'], ['foo', 'two']],
                  columns=['first', 'second'])
'''
  first second
0   bar    one
1   bar    two
2   foo    one
3   foo    two
'''
index = pd.MultiIndex.from_frame(df)
pd.Series(np.random.randn(4), index=index)

 多層索引操作

index_arrays = [[1, 1, 2, 2], ['男', '女', '男', '女']]
columns_arrays = [['2020', '2020', '2021', '2021'],
                  ['上半年', '下半年', '上半年', '下半年',]]
index = pd.MultiIndex.from_arrays(index_arrays,names=('班級', '性別'))
columns = pd.MultiIndex.from_arrays(columns_arrays,names=('年份', '學期'))
df = pd.DataFrame([(88,99,88,99),(77,88,97,98),
                   (67,89,54,78),(34,67,89,54)],columns=columns, index=index)
df

 索引名稱的查看

#索引名稱的查看:
df.index # 索引, 是一個 MultiIndex
df.columns # 引索引,也是一個 MultiIndex
# 查看行索引的名稱
df.index.names # FrozenList(['班級', '性別'])
# 查看列索引的名稱
df.columns.names # FrozenList(['年份', '學期'])

 索引的層級

#索引的層級:
df.index.nlevels # 層級數   2
df.index.levels # 行的層級    # FrozenList([[1, 2], ['女', '男']])
df.columns.levels # 列的層級  # FrozenList([['2020', '2021'], ['上半年', '下半年']])
df[['2020','2021']].index.levels # 篩選后的層級  # FrozenList([[1, 2], ['女', '男']])

 索引內容的查看

#索引內容的查看:
# 獲取索引第2層內容
df.index.get_level_values(1)
# Index(['男', '女', '男', '女'], dtype='object', name='性別')
# 獲取列索引第1層內容
df.columns.get_level_values(0)
# Index(['2020', '2020', '2021', '2021'], dtype='object', name='年份')
 
# 按索引名稱取索引內容
df.index.get_level_values('班級')
# Int64Index([1, 1, 2, 2], dtype='int64', name='班級')
df.columns.get_level_values('年份')
# Index(['2020', '2020', '2021', '2021'], dtype='object', name='年份')
 
# 多層索引的數據類型,1.3.0+
df.index.dtypes

 #排序

# 使用索引名可進行排序,可以指定具體的列
df.sort_values(by=['性別', ('2020','下半年')])
df.index.reorder_levels([1,0])  # 等級順序,互換
df.index.set_codes([1, 1, 0, 0], level='班級') # 設置順序
df.index.sortlevel(level=0, ascending=True)   # 按指定級別排序
df.index.reindex(df.index[::-1]) # 更換順序,或者指定一個順序

 相關操作轉換:

df.index.to_numpy() # 生成一個笛卡爾積的元組對列表
# array([(1, '男'), (1, '女'), (2, '男'), (2, '女')], dtype=object)
df.index.remove_unused_levels() # 返回沒有使用的層級
df.swaplevel(0, 2) # 交換索引
df.to_frame() # 轉為 DataFrame
idx.set_levels(['a', 'b'], level='bar') # 設置新的索引內容
idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1])
idx.to_flat_index()   # 轉為元組對列表
df.index.droplevel(0) # 刪除指定等級
df.index.get_locs((2, '女'))  # 返回索引的位置

數據查詢

#查詢指定行
df.loc[1] #一班的
df.loc[(1, '男')] # 一年級男
df.loc[1:2] # 一二兩年級數據

#查詢指定列
df['2020'] # 整個一級索引下
df[('2020','上半年')] # 指定二級索引
df['2020']['上半年'] # 同上

#行列綜合  slice(None)表示本層所有內容
df.loc[(1, '男'), '2020'] # 只顯示2020年一年級男
df.loc[:, (slice(None), '下半年')] # 只看下半年的
df.loc[(slice(None), '女'),:] # 只看女生
df.loc[1, (slice(None)),:] # 只看1班
df.loc[:, ('2020', slice(None))] # 只看 2020 年的

#查詢指定條件

#和單層索引的數據查詢一樣,不過在選擇列上要按多層的規(guī)則。
df[df[('2020','上半年')] > 80]

#pd.IndexSlice切片使用:
 
idx = pd.IndexSlice
idx[0]               # 0
idx[:]               # slice(None, None, None)
idx[0,'x']           # (0, 'x')
idx[0:3]             # slice(0, 3, None)
idx[0.1:1.5]         # slice(0.1, 1.5, None)
idx[0:5,'x':'y']     # (slice(0, 5, None), slice('x', 'y', None))
#查詢應用:
idx = pd.IndexSlice
df.loc[idx[:,['男']],:] # 只顯示男
df.loc[:,idx[:,['上半年']]] # 只顯示上半年
 
#df.xs()
df.xs((1, '男')) # 一年級男生
df.xs('2020', axis=1) # 2020 年
df.xs('男', level=1) # 所有男生

 數據分組

df.groupby(level=0).sum()
df.groupby(level='性別').sum()
df.sum(level='班級') # 也可以直接統(tǒng)計

df.groupby(level=['性別', '班級']).sum()

到此這篇關于Pandas數據分析-andas數據框的多層索引的文章就介紹到這了,更多相關pandas多層索引內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • tensorflow 獲取所有variable或tensor的name示例

    tensorflow 獲取所有variable或tensor的name示例

    今天小編就為大家分享一篇tensorflow 獲取所有variable或tensor的name示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能

    Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能

    這篇文章主要介紹了Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能,本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • python爬蟲框架scrapy代理中間件掌握學習教程

    python爬蟲框架scrapy代理中間件掌握學習教程

    這篇文章主要介紹了python爬蟲框架scrapy代理中間件掌握學習教程,為大家說明一下 scrapy 中代理相關知識點,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python如何去除字符串中不需要的字符

    Python如何去除字符串中不需要的字符

    這篇文章主要介紹了Python如何去除字符串中不需要的字符問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解Python中四種關系圖數據可視化的效果對比

    詳解Python中四種關系圖數據可視化的效果對比

    python關系圖的可視化主要就是用來分析一堆數據中,每一條數據的節(jié)點之間的連接關系從而更好的分析出人物或其他場景中存在的關聯關系。本文將制作四個不同的關系圖的可視化效果,感興趣的可以了解一下
    2022-11-11
  • pytorch 如何使用batch訓練lstm網絡

    pytorch 如何使用batch訓練lstm網絡

    這篇文章主要介紹了pytorch 如何使用batch訓練lstm網絡的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python文件的讀取、寫入與刪除

    python文件的讀取、寫入與刪除

    文件是無處不在的,,無論我們使用哪種編程語言,處理文件對于每個程序員都是必不可少的,下面這篇文章主要給大家介紹了關于python文件的讀取、寫入與刪除的相關資料,文中通過實例代碼和圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • python分段函數的實現示例

    python分段函數的實現示例

    分段函數是一種數學函數,它將定義域分成若干個區(qū)間,每個區(qū)間對應一個函數,本文主要介紹了python分段函數的實現示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 如何實現更換Jupyter Notebook內核Python版本

    如何實現更換Jupyter Notebook內核Python版本

    這篇文章主要介紹了如何實現更換Jupyter Notebook內核Python版本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 深入探究Python中的多進程模塊用法實例

    深入探究Python中的多進程模塊用法實例

    多進程是計算機編程中的一個概念,也可以說是一種可用于實現并行性和利用多個 CPU 內核或處理器并發(fā)執(zhí)行任務的技術,在本文中,我們將學習有關 python 中多進程處理的所有知識、理論和實際使用代碼
    2024-01-01

最新評論

日喀则市| 大安市| 利川市| 来凤县| 琼中| 麻江县| 邵东县| 运城市| 剑阁县| 惠安县| 舒城县| 乌鲁木齐市| 铜陵市| 宁乡县| 台东市| 五原县| 叙永县| 湘潭县| 邹平县| 兰坪| 积石山| 鹰潭市| 天津市| 宁波市| 桑植县| 阜康市| 建宁县| 牟定县| 博湖县| 莱芜市| 五峰| 安吉县| 赫章县| 舟曲县| 双辽市| 台北县| 广南县| 平塘县| 瑞昌市| 南皮县| 北碚区|