Pandas, MultiIndexes

Kategori: Python , 11 Eylül 2019 , JanFranco


Dataframe oluştururken çoklu index oluşturabiliriz. Group1 > Index1, Index2, Index3; Group2 > Index1, Index2, Index3 gibi. Örneğin aşağıdaki gibi bir dataframe oluşturmaya çalışalım:


                Column1   Column2   Column3
Group1 Index1 -1.757865 -0.286618 -0.246548
       Index2  0.501181  1.249715 -0.804676
       Index3 -1.973342  0.037318 -0.774506
Group2 Index1  1.764235  0.052781 -0.731601
       Index2  2.096022 -1.020981  0.686169
       Index3 -0.775121  0.633834  1.549900
Group3 Index1 -0.997636  1.122361 -0.397486
       Index2 -1.450224 -2.122626 -0.976982
       Index3 -0.128388 -1.931107  1.474914
Dış indexleri daha sonra iç indexleri bir liste halinde yazdıktan sonra, bu iki listeyi zip methodu ile birleştirip, pandas MultiIndex methoduna gönderelim. DataFrame oluştururken, index kısmına bu oluşturduğumuz hierarchy multiindex demetini gönderelim:


outerIndex = ["Group1", "Group1", "Group1", "Group2", "Group2", "Group2", "Group3", "Group3", "Group3"]
innerIndex = ["Index1", "Index2", "Index3", "Index1", "Index2", "Index3", "Index1", "Index2", "Index3"]

hierarchy = list(zip(outerIndex, innerIndex))
hierarchy = pd.MultiIndex.from_tuples(hierarchy)

df = pd.DataFrame(data = np.random.randn(9,3), index = hierarchy, columns = ["Column1", "Column2", "Column3"])
Verilere aşağıdaki gibi erişebiliriz:


print(df["Column1"])
>>
Group1  Index1   -1.880443
        Index2    1.461178
        Index3   -1.476013
Group2  Index1    0.386759
        Index2    0.234552
        Index3   -0.074058
Group3  Index1    1.565845
        Index2   -1.007226
        Index3   -0.826781
Name: Column1, dtype: float64
print(df.loc["Group1"])
>>
         Column1   Column2   Column3
Index1 -1.880443 -1.069917 -0.202778
Index2  1.461178  0.915665  0.840021
Index3 -1.476013  0.148138 -0.222942
print(df.loc[["Group2", "Group3"]])
>>
                Column1   Column2   Column3
Group2 Index1  0.386759  0.406639 -1.763458
       Index2  0.234552 -1.753542  0.065269
       Index3 -0.074058  0.328785  1.175375
Group3 Index1  1.565845  1.372649 -0.163210
       Index2 -1.007226  1.201554  0.539703
       Index3 -0.826781 -0.320795 -0.149871
print(df.loc["Group1"].loc["Index1"])
>>
Column1   -1.880443
Column2   -1.069917
Column3   -0.202778
Name: Index1, dtype: float64
print(df.loc["Group1"].loc["Index1"]["Column1"])
>>
-1.880442715816632
index.names değişkeni ile indexlere isim atayabiliriz:


df.index.names = ["Groups", "Indexes"]
print(df)
>>
                 Column1   Column2   Column3
Groups Indexes                              
Group1 Index1   1.276740 -0.494474  0.883611
       Index2  -1.070181 -1.051974 -0.192115
       Index3  -0.629468 -0.946320 -1.754686
Group2 Index1   0.355364 -0.926645  0.785884
       Index2   0.568854  0.383433 -0.617250
       Index3  -1.701284  1.383743  0.171701
Group3 Index1   0.052156 -1.144457 -0.462465
       Index2  -0.521414 -0.082257  0.027715
       Index3  -0.383049  0.812340  1.292442


Sonraki Yazı: Pandas, Missing Values, NaN
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın