iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

我與熊貓Pandas相處的日子系列 第 13

Day13- 資料探索(6)資料重整

  • 分享至 

  • xImage
  •  

當得到資料為混亂資料時,我們可使用函式將DataFrame重組成整齊的樣子。先使用stack()將所有欄位名稱旋轉成索引,再使用reset_index()來重置索引,最後以rename()加上適當的欄位名稱。

整齊的資料
1.每種變數形成一個欄位
2.每筆觀察結果形成一列
3.每種類型的觀察單位形成一個表格

原始資料

import pandas as pd
pd.DataFrame([[8,7,6,5,4],[3,4,2,9,5],[4,6,7,2,8],[2,7,6,3,9]],index=['小明','小美','小英','小玉'],columns=['蘋果','芭樂','香蕉','橘子','檸檬'])

執行結果
	蘋果	芭樂	香蕉	橘子	檸檬
小明	8	7	6	5	4
小美	3	4	2	9	5
小英	4	6	7	2	8
小玉	2	7	6	3	9

使用stack()將所有欄位名稱旋轉成索引

import pandas as pd
df=pd.DataFrame([[8,7,6,5,4],[3,4,2,9,5],[4,6,7,2,8],[2,7,6,3,9]],index=['小明','小美','小英','小玉'],columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
df.stack()

執行結果:
小明 蘋果    8 
    芭樂    7 
    香蕉    6
    橘子    5
    檸檬    4
小美 蘋果    3 
    芭樂    4
    香蕉    2
    橘子    9
    檸檬    5
小英 蘋果    4 
    芭樂    6
    香蕉    7
    橘子    2
    檸檬    8
小玉 蘋果    2 
    芭樂    7
    香蕉    6
    橘子    3
    檸檬    9
dtype: int64

再使用reset_index()來重置索引

df.stack().reset_index()

執行結果:
	level_0	level_1	0
0	小明	蘋果	8
1	小明	芭樂	7
2	小明	香蕉	6
3	小明	橘子	5
4	小明	檸檬	4
5	小美	蘋果	3
6	小美	芭樂	4
7	小美	香蕉	2
8	小美	橘子	9
9	小美	檸檬	5
10	小英	蘋果	4
11	小英	芭樂	6
12	小英	香蕉	7
13	小英	橘子	2
14	小英	檸檬	8
15	小玉	蘋果	2
16	小玉	芭樂	7
17	小玉	香蕉	6
18	小玉	橘子	3
19	小玉	檸檬	9

以rename()加上適當的欄位名稱

df.stack().reset_index().rename(columns={'level_0':'人員','level_1':'水果',0:'喜好程度'})

執行結果:
	人員	水果	喜好程度
0	小明	蘋果	8
1	小明	芭樂	7
2	小明	香蕉	6
3	小明	橘子	5
4	小明	檸檬	4
5	小美	蘋果	3
6	小美	芭樂	4
7	小美	香蕉	2
8	小美	橘子	9
9	小美	檸檬	5
10	小英	蘋果	4
11	小英	芭樂	6
12	小英	香蕉	7
13	小英	橘子	2
14	小英	檸檬	8
15	小玉	蘋果	2
16	小玉	芭樂	7
17	小玉	香蕉	6
18	小玉	橘子	3
19	小玉	檸檬	9

加油~明天再繼續囉~~ /images/emoticon/emoticon34.gif


上一篇
Day12- 資料探索(5)日期與時間
下一篇
Day14- 資料探索(7)布林索引
系列文
我與熊貓Pandas相處的日子30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言