iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
AI & Data

大數據的世代需學會的幾件事系列 第 6

Day6-輕鬆駕馭數據part4

前一篇中,介紹Pandas要如何處理數據有缺失值的情況,才能做正確的數值、統計運算, 今天要來介紹如何做分層索引(Hierarchical Indexing),

Hierarchical Indexing

在資料運算中,需要確認資料格式外,更加需要了解目前區要的資料項目為何者,因此本節介紹,在pandas如何做資料索引。

  • 首先,建立一個二維陣列。
ndex = [('California', 2000), ('California', 2010),
         ('New York', 2000), ('New York', 2010),
         ('Taiwan', 2000), ('Taiwan', 2010)]
populations = [300000000, 3545788006,
               142467897, 1937424222,
               20851220, 22222261]
pop = pd.Series(populations, index=index)
pop

out

  • 輸出想要的陣列範圍
pop[('California', 2010):('Taiwan', 2000)]

out

1.Pandas MultiIndex

  • 透過 Pandas MultiIndex,可以建立多索引。
index = pd.MultiIndex.from_tuples(index)
index

out

  • 查看建立MultiIndex型態,資料的樣式為
pop = pop.reindex(index)
pop

out

  • 查詢資料值為2000的項目
pop[:, 2000]

out
2.將Pandas MultiIndex產生的類別,作為資料的另外一個維度

  • 利用unstack()來將額外產生出來的類別做DataFrame的行或列標籤。
pop_df = pop.unstack()
pop_df

out

  • 亦可利用stack(),來反處理
pop_df.stack()

out
3.Methods of MultiIndex Creation

  • 透過 Pandas MultiIndex,可以新建立多維資料。
pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'], [1, 2, 1, 2]])
pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b', 2)])
pd.MultiIndex.from_product([['a', 'b'], [1, 2]])

皆可以產生下圖的資料格式:
out

4.MultiIndex for columns

  • 透過 Pandas MultiIndex,可以新建立多維資料。
# 建立行列分層索引
index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],
                                   names=['year', 'visit'])
columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']],
                                     names=['subject', 'type'])
# 建立數據
data = np.round(np.random.randn(4, 6), 1)
data[:, ::2] *= 10
data += 37
# 建立 DataFrame
health_data = pd.DataFrame(data, index=index, columns=columns)
health_data

out

  • 以最頂層的資料標籤,最為資料索引的目標
health_data['Guido']

out

  • 第二個資料屬性,可以填寫第二層標籤...
health_data['Guido', 'HR']

out

  • 求0~2筆的資料
health_data.iloc[:2, :2]

out


上一篇
Day5-輕鬆駕馭數據part3
下一篇
Day7-輕鬆駕馭數據part5
系列文
大數據的世代需學會的幾件事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言