【机器学习基础】Python实现行转列?!超简单,赶快get起来
◆?◆?◆ ?◆?◆
前言
數(shù)據(jù)的行轉(zhuǎn)列操作,在實(shí)際工作過(guò)程中應(yīng)用非常廣泛。
由于不同人員、不同部門(mén)對(duì)數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí)是不大相同的,尤其是從基層人員手里拿到的數(shù)據(jù),更是五花八門(mén),橫七豎八。
比如有這樣一張成績(jī)表:
乍一看,好像沒(méi)毛病啊!!
然鵝鵝鵝,當(dāng)需求:=簡(jiǎn)單計(jì)算一下每個(gè)人的總分吧!來(lái)臨的時(shí)候。我腦海中不禁浮想起了:
安排
# 遇事不要慌,先導(dǎo)個(gè)包吧 import pandas as pd import numpy as np#?造假數(shù)據(jù) data = {'name':['嚴(yán)小樣兒','嚴(yán)小樣兒','嚴(yán)小樣兒','才華橫豎都溢','才華橫豎都溢','才華橫豎都溢','幽蘭幽香','幽蘭幽香','幽蘭幽香'],'subject':['Python','C','SQL','Python','C','SQL','Python','C','SQL'],'score':[95,60,95,96,95,80,99,94,88]}# 生成df df = pd.DataFrame(data) df使用pivot方法即可完成行轉(zhuǎn)列哦~語(yǔ)法如下:
不要高興的太早,遇到重復(fù)值就麻煩了!少俠請(qǐng)看:
別急別急,去個(gè)重不就可以了嗎?!
方法二:數(shù)據(jù)透視表
聚合
剛剛說(shuō)了,要求每個(gè)人的總分,其實(shí)使用透視表就可以完成。
不過(guò),稍微動(dòng)動(dòng)腦筋哦。遇到重復(fù)值數(shù)據(jù)的話,只能使用下面的方法一,去重后的數(shù)據(jù)集,方法一,二都支持。
計(jì)算每個(gè)人的總分,語(yǔ)法如下:
# 重復(fù)數(shù)據(jù)集也可以 df_pivot = pd.pivot_table(df1,index='name',columns='subject',values='score',aggfunc={'score':'max'}) #?增加一個(gè)新列:Total df_pivot['Total'] = df_pivot.apply(lambda x:np.sum(x),axis = 1) df_pivot方法二,必須是去重后的數(shù)據(jù)集,否則會(huì)出現(xiàn)計(jì)算錯(cuò)誤。
# 使用去重?cái)?shù)據(jù)集才可以 pd.pivot_table(df,index='name',values='score',aggfunc='sum') # 使用join方法把總分列加進(jìn)去。 total = pd.pivot_table(df,index='name',values='score',aggfunc='sum') pd.pivot_table(df,index='name',columns='subject',values='score').join(total)--需求方:算是算出來(lái)了,可是,這個(gè)score看著怪怪的,能不能改成“總分”呢?
--嚴(yán)小樣兒:我改(卑微)!安排~
行轉(zhuǎn)列,就這樣講完了,大家趕快動(dòng)手實(shí)踐一下吧。那么,如何列轉(zhuǎn)行呢?!
下
期
見(jiàn)
!
往期精彩回顧適合初學(xué)者入門(mén)人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專(zhuān)輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專(zhuān)輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專(zhuān)輯總結(jié)
以上是生活随笔為你收集整理的【机器学习基础】Python实现行转列?!超简单,赶快get起来的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Python基础】使用列表、字典和集合
- 下一篇: 【论文解读】Graph Normaliz