【導(dǎo)語】數(shù)據(jù)分析的時(shí)候經(jīng)常要把寬數(shù)據(jù)轉(zhuǎn)變成長(zhǎng)數(shù)據(jù),本文將呈現(xiàn)兩種解決方案。一種是Excel的逆透視,另一種是Pandas的melt方法。數(shù)據(jù)量小選擇excel,數(shù)據(jù)量大可用Pandas。現(xiàn)在我們將各個(gè)城市的年份二維數(shù)據(jù)轉(zhuǎn)換成一維,最終實(shí)現(xiàn)效果如下:

一、逆透視
1、首先我們打開excel,選中數(shù)據(jù),按住Alt鍵,依次點(diǎn)擊D,P 將彈出數(shù)據(jù)透視表向?qū)?duì)話框,選擇”多重合并計(jì)算數(shù)據(jù)區(qū)域”,點(diǎn)擊下一步:如下所示:

2、選擇”創(chuàng)建單頁字段”,點(diǎn)擊下一步

3、拖動(dòng)鼠標(biāo),選定區(qū)域,點(diǎn)擊”添加”按鈕,下一步

4、選擇數(shù)據(jù)透視表顯示位置”新工作表”,點(diǎn)擊”完成”按鈕

5、在新工作表中生成數(shù)據(jù)透視表,雙擊右下角總計(jì)的數(shù)字

6、在新的工作表中自動(dòng)生成了我們需要的表格,可以刪除多余的字段,重命名現(xiàn)有的字段,完成

二、melt 方法
1、pandas.melt 使用參數(shù):
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
參數(shù)解釋:
- frame:要處理的數(shù)據(jù)集。
- id_vars:不需要被轉(zhuǎn)換的列名。
- value_vars:需要轉(zhuǎn)換的列名,如果剩下的列全部都要轉(zhuǎn)換,就不用寫了。
- var_name和value_name是自定義設(shè)置對(duì)應(yīng)的列名。
- col_level :如果列是MultiIndex,則使用此級(jí)別。
2、代碼實(shí)現(xiàn)
import pandas as pd
# 讀取數(shù)據(jù)
data = pd.read_excel('C:/Users/cherich/Desktop/q.xlsx',index_col=0)
data

#重置索引
data1=data.reset_index()
data1

#index保留,并把轉(zhuǎn)換后的列命名為'year',value命名為'stu_num'
data2=data1.melt(id_vars='index', var_name='year',value_name='stu_num')
data2

data2.to_excel('./qq.xlsx',index=False)
上面我們通過melt完成和excel同樣的效果,那么我們了解melt的實(shí)現(xiàn)原理之后,可簡(jiǎn)寫如下:
datas=data.reset_index().melt('index', var_name='col').set_index('index')
希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,每天進(jìn)步一點(diǎn)點(diǎn),加油?。