Pandas中DataFrame的分組/分割/合并的實(shí)現(xiàn)
學(xué)習(xí)《Python3爬蟲(chóng)、數(shù)據(jù)清洗與可視化實(shí)戰(zhàn)》時(shí)自己的一些實(shí)踐。
DataFrame分組操作
注意分組后得到的就是Series對(duì)象了,而不再是DataFrame對(duì)象。
import pandas as pd
# 還是讀取這份文件
df = pd.read_csv("E:/Data/practice/taobao_data.csv", delimiter=',', encoding='utf-8', header=0)
# 計(jì)算'成交量'按'位置'分組的平均值
grouped1 = df['成交量'].groupby(df['位置']).mean()
# print(grouped1)

# 計(jì)算'成交量'先按'位置'再按'賣(mài)家'分組后的平均值 grouped2 = df['成交量'].groupby([df['位置'], df['賣(mài)家']]).mean() # print(grouped2)

# 計(jì)算先按'位置'再按'賣(mài)家'分組后的所有指標(biāo)(如果可以計(jì)算平均值)的平均值 grouped3 = df.groupby([df['位置'], df['賣(mài)家']]).mean() # print(grouped3)

DataFrame數(shù)據(jù)分割和合并
這里其實(shí)可以操作得很復(fù)雜,這里是一些比較基本的用法。
import pandas as pd
# 還是讀取這份文件
df = pd.read_csv("E:/Data/practice/taobao_data.csv", delimiter=',', encoding='utf-8', header=0)
# 計(jì)算銷(xiāo)售額
df['銷(xiāo)售額'] = df['價(jià)格'] * df['成交量']
# (1)前面學(xué)了ix,loc,iloc,這里是直接用[]運(yùn)算做分割
df1 = df[30:40][['位置', '賣(mài)家']]
# print(df1) # 從30號(hào)行到39號(hào)行
df2 = df[80:90][['賣(mài)家', '銷(xiāo)售額']]

# (2)內(nèi)聯(lián)接操作(相當(dāng)于JOIN,INNER JOIN) df3 = pd.merge(df1, df2) # 不指定列名,默認(rèn)選擇列名相同的'賣(mài)家'列 # print(df3) df4 = pd.merge(df1, df2, on='賣(mài)家') # 指定按照'賣(mài)家'相同做聯(lián)接 # print(df4)

# (3)全外聯(lián)接操作(相當(dāng)于FULL JOIN),沒(méi)有值的補(bǔ)NaN df5 = pd.merge(df1, df2, how='outer') # print(df5)

# (4)左外聯(lián)接操作(相當(dāng)于LEFT JOIN),即左邊的都要,'銷(xiāo)售額'沒(méi)有就NaN df6 = pd.merge(df1, df2, how='left') # print(df6)

# (5)右外聯(lián)接操作(相當(dāng)于RIGHT JOIN),即右邊的都要,'位置'沒(méi)有就NaN df7 = pd.merge(df1, df2, how='right') # print(df7)

# (6)按索引相同做聯(lián)接 df_a = df[:10][['位置', '賣(mài)家']] df_b = df[3:13][['價(jià)格', '成交量']] df_c_1 = pd.merge(df_a, df_b, left_index=True, right_index=True) # 內(nèi)聯(lián)接 # print(df_c_1) # 只有從3到9的

df_c_2 = df_a.join(df_b) # 左外聯(lián)接 # print(df_c_2) # 從0到10

df_c_3 = df_b.join(df_a) # "右"外聯(lián)接(其實(shí)還是左外聯(lián)接,就是b在左邊a在右邊) # print(df_c_3) # 從3到12

# (7)軸向堆疊操作(上下堆疊時(shí)就相當(dāng)于UNION ALL,默認(rèn)不去重) df8 = df[2:5][['價(jià)格']] # 注意這里只取一個(gè)列也要用[[]] df9 = df[3:8][['銷(xiāo)售額', '寶貝']] df10 = df[6:11][['賣(mài)家', '位置']] # (7.1)默認(rèn)axis=0即上下堆疊,上下堆疊時(shí),堆疊順序和傳進(jìn)concat的順序一致,最終列=所有列數(shù)去重,缺失的補(bǔ)NaN # 關(guān)于axis=0需要設(shè)置sort屬性的問(wèn)題,還沒(méi)查到有講這個(gè)的,這個(gè)問(wèn)題先留著... df11 = pd.concat([df10, df9, df8], sort=False) # print(df11)

# (7.2)設(shè)置axis=1即左右堆疊,左右堆疊不允許索引重復(fù),相同索引的將被合并到一行 # 左右堆疊中,堆疊順序僅僅影響列的出現(xiàn)順序 # 這很好理解,畢竟不是從上到下"摞"在一起的,而是從左到右"卡"在一起的 df12 = pd.concat([df10, df9, df8], axis=1) df13 = pd.concat([df8, df9, df10], axis=1) # print(df12) # print(df13)


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Pandas 合并多個(gè)Dataframe(merge,concat)的方法
- pandas dataframe的合并實(shí)現(xiàn)(append, merge, concat)
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- Pandas實(shí)現(xiàn)Dataframe的合并
- pandas將DataFrame的幾列數(shù)據(jù)合并成為一列
- Python數(shù)據(jù)分析之?Pandas?Dataframe合并和去重操作
- Python Pandas實(shí)現(xiàn)DataFrame合并的圖文教程
- Pandas中Dataframe合并的實(shí)現(xiàn)
相關(guān)文章
詳解PyTorch預(yù)定義數(shù)據(jù)集類(lèi)datasets.ImageFolder使用方法
這篇文章主要為大家介紹了PyTorch預(yù)定義數(shù)據(jù)集類(lèi)datasets.ImageFolder使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Django urls.py重構(gòu)及參數(shù)傳遞詳解
這篇文章主要介紹了Django urls.py重構(gòu)及參數(shù)傳遞詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python實(shí)現(xiàn)城市公交網(wǎng)絡(luò)分析與可視化
這篇文章主要介紹了通過(guò)Python爬取城市公交站點(diǎn)、線路及其經(jīng)緯度數(shù)據(jù),并做可視化數(shù)據(jù)分析。文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2021-12-12
這篇文章主要個(gè)大家分享的是Python常見(jiàn)異常類(lèi)型處理,編寫(xiě)程序的過(guò)程,難免會(huì)遇到一些錯(cuò)誤,程序邏輯又或者運(yùn)行與系統(tǒng)發(fā)生各種沖突等等,下面我們就來(lái)看看那些我們?cè)诰幊讨谐S龅降漠惓6际窃趺刺幚淼陌?,需要的小伙伴可以參考一?/div> 2021-12-12
Python根據(jù)字典值對(duì)字典進(jìn)行排序的三種方法實(shí)例
Python中的字典是無(wú)序類(lèi)型,沒(méi)有自己的排序方法,下面這篇文章主要給大家介紹了關(guān)于Python根據(jù)字典值對(duì)字典進(jìn)行排序的三種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
瀏覽器常用基本操作之python3+selenium4自動(dòng)化測(cè)試(基礎(chǔ)篇3)
瀏覽器常用基本操作有很多種,今天給大家介紹python3+selenium4自動(dòng)化測(cè)試的操作方法,是最最基礎(chǔ)的一篇,對(duì)python3 selenium4自動(dòng)化測(cè)試相關(guān)知識(shí)感興趣的朋友一起看看吧2021-05-05
Python 非極大值抑制(NMS)的四種實(shí)現(xiàn)詳解
本文主要介紹了非極大值抑制(Non-Maximum Suppression,NMS)的四種實(shí)現(xiàn)方式,不同方法對(duì)NMS速度的影響各不相同,感興趣的小伙伴可以了解一下2021-11-11最新評(píng)論

