Pandas中DataFrame的分組/分割/合并的實現(xiàn)
更新時間:2019年07月16日 14:50:44 作者:劉知昊
這篇文章主要介紹了Pandas中DataFrame的分組/分割/合并的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
學習《Python3爬蟲、數(shù)據(jù)清洗與可視化實戰(zhàn)》時自己的一些實踐。
DataFrame分組操作
注意分組后得到的就是Series對象了,而不再是DataFrame對象。
import pandas as pd # 還是讀取這份文件 df = pd.read_csv("E:/Data/practice/taobao_data.csv", delimiter=',', encoding='utf-8', header=0) # 計算'成交量'按'位置'分組的平均值 grouped1 = df['成交量'].groupby(df['位置']).mean() # print(grouped1)
# 計算'成交量'先按'位置'再按'賣家'分組后的平均值 grouped2 = df['成交量'].groupby([df['位置'], df['賣家']]).mean() # print(grouped2)
# 計算先按'位置'再按'賣家'分組后的所有指標(如果可以計算平均值)的平均值 grouped3 = df.groupby([df['位置'], df['賣家']]).mean() # print(grouped3)
DataFrame數(shù)據(jù)分割和合并
這里其實可以操作得很復(fù)雜,這里是一些比較基本的用法。
import pandas as pd # 還是讀取這份文件 df = pd.read_csv("E:/Data/practice/taobao_data.csv", delimiter=',', encoding='utf-8', header=0) # 計算銷售額 df['銷售額'] = df['價格'] * df['成交量'] # (1)前面學了ix,loc,iloc,這里是直接用[]運算做分割 df1 = df[30:40][['位置', '賣家']] # print(df1) # 從30號行到39號行 df2 = df[80:90][['賣家', '銷售額']]
# (2)內(nèi)聯(lián)接操作(相當于JOIN,INNER JOIN) df3 = pd.merge(df1, df2) # 不指定列名,默認選擇列名相同的'賣家'列 # print(df3) df4 = pd.merge(df1, df2, on='賣家') # 指定按照'賣家'相同做聯(lián)接 # print(df4)
# (3)全外聯(lián)接操作(相當于FULL JOIN),沒有值的補NaN df5 = pd.merge(df1, df2, how='outer') # print(df5)
# (4)左外聯(lián)接操作(相當于LEFT JOIN),即左邊的都要,'銷售額'沒有就NaN df6 = pd.merge(df1, df2, how='left') # print(df6)
# (5)右外聯(lián)接操作(相當于RIGHT JOIN),即右邊的都要,'位置'沒有就NaN df7 = pd.merge(df1, df2, how='right') # print(df7)
# (6)按索引相同做聯(lián)接 df_a = df[:10][['位置', '賣家']] df_b = df[3:13][['價格', '成交量']] 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)接(其實還是左外聯(lián)接,就是b在左邊a在右邊) # print(df_c_3) # 從3到12
# (7)軸向堆疊操作(上下堆疊時就相當于UNION ALL,默認不去重) df8 = df[2:5][['價格']] # 注意這里只取一個列也要用[[]] df9 = df[3:8][['銷售額', '寶貝']] df10 = df[6:11][['賣家', '位置']] # (7.1)默認axis=0即上下堆疊,上下堆疊時,堆疊順序和傳進concat的順序一致,最終列=所有列數(shù)去重,缺失的補NaN # 關(guān)于axis=0需要設(shè)置sort屬性的問題,還沒查到有講這個的,這個問題先留著... 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)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Pandas 合并多個Dataframe(merge,concat)的方法
- pandas dataframe的合并實現(xiàn)(append, merge, concat)
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- Pandas實現(xiàn)Dataframe的合并
- pandas將DataFrame的幾列數(shù)據(jù)合并成為一列
- Python數(shù)據(jù)分析之?Pandas?Dataframe合并和去重操作
- Python Pandas實現(xiàn)DataFrame合并的圖文教程
- Pandas中Dataframe合并的實現(xiàn)
相關(guān)文章
Python 語法錯誤:"SyntaxError: invalid charac
本文給大家分享Python 語法錯誤:“SyntaxError: invalid character in identifier“,原因及解決方法,文末給大家補充介紹了Python出現(xiàn)SyntaxError: invalid syntax的原因總結(jié),感興趣的朋友跟隨小編一起學習吧2023-02-02?cmd輸入python打開微軟應(yīng)用商店的解決方法
在命令控制行中輸入python想使用Python環(huán)境,卻意外打開了微軟自帶的應(yīng)用商店,十分苦惱,下面這篇文章主要給大家介紹了關(guān)于?cmd輸入python打開微軟應(yīng)用商店的解決方法,需要的朋友可以參考下2024-03-03Python中seaborn庫之countplot的數(shù)據(jù)可視化使用
在Python數(shù)據(jù)可視化中,seaborn較好的提供了圖形的一些可視化功效。本文詳細的介紹了Python中seaborn庫之countplot的數(shù)據(jù)可視化使用,感興趣的可以了解一下2021-06-06