數(shù)據(jù)聚合數(shù)據(jù)聚合是數(shù)據(jù)處理的最后一步,通常是要使每一個(gè)數(shù)組生成一個(gè)單一的數(shù)值。 數(shù)據(jù)分類處理:
1.數(shù)據(jù)分類處理的核心: groupby()函數(shù) 導(dǎo)入模塊: import pandas as pd 生成假數(shù)據(jù) df = DataFrame({"sailer":np.random.randint(0,3,size=50), 如: 對(duì)數(shù)據(jù)進(jìn)行分組,聚合操作 根據(jù)item進(jìn)行分組,然后求出各個(gè)菜品的平均價(jià)格 g = df.groupby(by=["item"])["price"] 表現(xiàn)形式如上邊,數(shù)據(jù)格式為series 然后在根據(jù)sailer和item進(jìn)行分類。 ret = df.groupby(by = ["sailer","item"])[["price"]].mean() #price值變成dataframe二維數(shù)如下圖: 根據(jù)條件進(jìn)行分組,然后自定義方法展示數(shù)據(jù):如下 ret2 = df.groupby(by = ["sailer","item"]) aggregate()或agg()是指在指定軸上使用一個(gè)或多個(gè)操作進(jìn)行聚合。 分組后對(duì)幾個(gè)列添加不同的聚合映射關(guān)系 如下:對(duì)price求平均值,對(duì)重量求和 ret2 = df.groupby(by = ["sailer","item"]) 分組后使用透視表對(duì)數(shù)據(jù)進(jìn)行聚合操作 如下:對(duì)price、weight分別進(jìn)行求平均值和最大值操作。
高級(jí)數(shù)據(jù)聚合調(diào)用transform和apply實(shí)現(xiàn)上變相同的功能 df.groupby(["sailer","item"])[["price"]].apply(np.min) #因?yàn)閙in,mean,median等聚合函數(shù)在numpy定義了,所以,調(diào)用聚合函數(shù)得去numpy中調(diào)用 # transform原來的數(shù)據(jù)有多長(zhǎng),現(xiàn)在的數(shù)據(jù)就有多長(zhǎng) 使用transform對(duì)數(shù)據(jù)進(jìn)行分組聚合操作 df1 = df.groupby(["sailer","item"])[["price"]].transform(np.mean) df1.tail()
|
|