【python】Mutilindex多層索引的取值


一,Mutilindex多層索引的取值

1. 通過get_list自定義函數創建二維表格數據

import pandas as pd
import numpy as np

np.random.seed(123)

def get_list(items,lens = 300):
    return pd.Series(items).sample(n=lens,replace=True).to_list()

df = pd.DataFrame({
    "服裝名稱": get_list(["T恤","牛仔套裝","中國風套裝","西裝"]),
    "尺碼": get_list(["S","M","L"]),
    "平台": get_list(["唯品會","拼多多","淘寶","京東"]),
    "銷量": get_list([2,5,8])
})
df.head(3)

2. 通過pivot_table透視表函數統計銷量數據。並按照服裝名稱,平台,尺碼指定行跟列的index

#%%

df = pd.pivot_table(
    df,
    index= ["服裝名稱"],
    columns= ["平台","尺碼"],
    values= "銷量",#注意這里統計的只有一個銷量,一定不要用列表。
    aggfunc= sum   #對銷量做統計
)

df

3. 查看DataFrame的index行索引及columns列索引

#%%

df.index

#%%

df.columns

4. 對指定列名范圍的取值

注釋:這里我們直接把京東這一列包含的所有內容取出來。注意京東這列其實相當於Excel表中的單元格合並。那么下方包含"S","M","L"尺碼的三列數據。如果df["京東"]的話會把這三列的值一並取出。

#%%

#取京東的所有值
df["京東"]

#%%

5. 通過掩碼條件判斷取出數據

#%%

#取唯品會L型號銷量大於30的所有值
df[df["唯品會"]["L"]>30]

#%%

6. 每一個columns其實都是一個元組。我們可以通過元組來取出一組或者多組想要的數據

#%%

#選擇單個列數據
df[('京東', 'S')]

#%%

#選擇多列數據(京東平台S碼及唯品會平台L碼的值)
df[[('京東', 'S'),('唯品會', 'L')]]

#%%

7. 通過swaplevel函數指定參數實現列名互換從而實現對數據的篩選

#%%

#選出所有平台中所有L碼的銷量值
df.swaplevel(axis=1)["L"] #swplevel代表交換的意思。axis=1代表0列跟1列互換

#%%

8. 通過切片實現指定行索引及列索引的數據

#%%

#通過切片選出京東平台中所有中國風套裝的銷量
df.loc["中國風套裝":"中國風套裝",(["京東"])]


#%%

9. 通過切片對指定行索引及列索引部分數據的切片操作。

#%%

#選取唯品會及淘寶平台,所有商品的S碼和L碼的銷量值
df.loc[:,(["唯品會","淘寶"],["S","L"])]



#%%

10. 通過slice類對列索引進行切片操作

注釋:slice()中雙引號的元素間雖然寫的時逗號,但是代表從第一個元素切片到第二個元素的意思。如果中間還包含其他元素,那么也會一並被切片進去。第二個逗號代表第二層指定的值。

#%%

#通過slice切片來選取唯品會到淘寶的所有M碼的數據
df.loc[:,(slice("唯品會","淘寶"),"M")]

#%%

11. 通過多層元組的指定對列索引進行數據選取。

#%%

#也可以通過元祖選擇想要選取的列()中的丟個元素代表平台,第二個元素代表尺碼
df.loc[:,[("唯品會","M"),("拼多多","L"),("淘寶","S")]]

#%%

12. slice函數的使用不光可以對列名,也可以對第二層數據范圍中值的指定也同樣生效

#%%

#也可以選擇多個平台的多個尺碼值
df.loc[:,(slice("京東","唯品會"),slice("L","S"))]

#%%

13. 也可以直接對多個列名,類似於列表的方式指定篩選出指定列名下包含的所有數據

注釋:以下方法同上述  df.loc[:,(slice("京東","唯品會"),slice("L","S"))]  其實效果是一樣的

#跟上述方法實現效果其實是一樣的
df.loc[:,["京東","唯品會"]]

#%%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM