第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas 分組聚合操作

1. 前言

上一節(jié)我們學(xué)習(xí)了 Pandas 對數(shù)據(jù)的重塑操作,可以滿足我們對數(shù)據(jù)集不同結(jié)構(gòu)的分析需要,而有時(shí)候我們還需要對數(shù)據(jù)依據(jù)某個(gè)類別進(jìn)行分組的需要,以及在分組后對每組數(shù)據(jù)進(jìn)行分析的需要,那 Pandas 中的數(shù)據(jù)分組操作又是怎么實(shí)現(xiàn)的呢?

Pandas 庫中提供了友好的數(shù)據(jù)分組聚合操作,分組聚合的過程包括數(shù)據(jù)的拆分、應(yīng)用和聚合,如下圖所示的過程。數(shù)據(jù)的分組操作主要涉及函數(shù) groupby (),而聚合函數(shù)則有很多,在下面的學(xué)習(xí)中我們會(huì)列舉一些聚合函數(shù)的具體使用方法。

圖片描述

2. 分組操作

Pandas 中的分組操作主要通過函數(shù) groupby () 實(shí)現(xiàn),該函數(shù)對數(shù)據(jù)進(jìn)行分組,并不會(huì)產(chǎn)生運(yùn)算,分組后會(huì)返回一個(gè) groupby 對象,該對象并不能展示數(shù)據(jù),要通過具體的操作函數(shù)才能看到數(shù)據(jù)結(jié)果。

首先我們通過 Pandas 解析 Excel 數(shù)據(jù),得到 DataFrame 數(shù)據(jù)對象:

# 導(dǎo)入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第19小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
   編程語言 技術(shù)方向   推出時(shí)間  年均銷售數(shù)量    價(jià)格      主要?jiǎng)?chuàng)始人
0  java   后端       1995230       45.6               James Gosling
1  HTML   前端       1990124       55.3          Daniel W. Connolly
2     C   后端       197235       33.9  Dennis MacAlistair Ritchie
3    js   前端       1995678       59.5                Brendan Eich
4   C++   后端       1983125       75.0           Bjarne Stroustrup
5   CSS   前端       1990254       24.6             Tim Berners-Lee

接下來我們進(jìn)行分組操作:

# data 為上面解析的數(shù)據(jù)對象
# 這里依據(jù)技術(shù)方向列進(jìn)行分組
data.groupby('技術(shù)方向')
# --- 輸出結(jié)果 ---
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001D618583070>
# 結(jié)果解析:這里我們使用的是單個(gè)索引‘技術(shù)方向’進(jìn)行分組,也可以傳入一個(gè)列表進(jìn)行分組。這里可以看到輸出的是一個(gè) DataFrameGroupBy 對象

3. 聚合操作

聚合操作是分組的目的,通過聚合操作對各組數(shù)據(jù)進(jìn)行聚合,得到一定的分析效果,Pandas 中提供了大量的聚合操作函數(shù),我們下面列舉了部分,用以展示數(shù)據(jù)分組后進(jìn)行聚合操作的效果。

函數(shù)名 說明
count 各分組中非 NaN 值的數(shù)量
sum 各分組中非 NaN 值的和
mean 各分組中非 NaN 值的平均值

下面我們通過代碼詳細(xì)介紹聚合函數(shù)的使用:

1. sum() 函數(shù)

該函數(shù)用于求各組數(shù)值數(shù)據(jù)的和,非數(shù)值數(shù)據(jù)不進(jìn)行該聚合操作。

data.groupby(['技術(shù)方向','推出時(shí)間']).sum()
# --- 輸出結(jié)果 ---
                 年均銷售數(shù)量	價(jià)格
技術(shù)方向	推出時(shí)間		
  前端	 1990378	   79.9
          1995678	59.5
  后端	 197235	   33.9
          1983125	75.0
          1995230	45.6
# 結(jié)果解析:這里我們指定分組索引依據(jù)為列表,傳入‘技術(shù)方向’,‘推出時(shí)間’,則分組是先以技術(shù)方向分為“前端”和“后端”,再以推出時(shí)間進(jìn)行分組,帶分組之后,進(jìn)行 sum() 各組求和的聚合運(yùn)算,得到各組的年均銷售數(shù)量和價(jià)格的數(shù)據(jù)結(jié)果。

在這里我們要補(bǔ)充一個(gè)下 groupby () 函數(shù)中的一個(gè)參數(shù):as_index ,該參數(shù)默認(rèn)為 True,是用來指定是否用分組索引作為聚合結(jié)果數(shù)據(jù)集的行索引,上面的代碼中,默認(rèn) as_index=True ,因此行索引會(huì)有兩層,分別為技術(shù)方向和推出時(shí)間,下面我們通過指定 as_index=False , 默認(rèn)行索引會(huì)從 0 開始生成序列:

# data 為上面解析的數(shù)據(jù)對象
# 指定 as_index=False
data.groupby(['技術(shù)方向','推出時(shí)間'],as_index=False).sum()
# --- 輸出結(jié)果 ---
  技術(shù)方向	推出時(shí)間 年均銷售數(shù)量	價(jià)格
0	前端	1990378	   79.9
1	前端	1995678	   59.5
2	后端	197235	   33.9
3	后端	1983125	   75.0
4	后端	1995230	   45.6
# 結(jié)果解析:可以看到聚合后的數(shù)據(jù)集行索引為默認(rèn)生成。

2. count() 函數(shù)

該函數(shù)用于計(jì)算分組后各組數(shù)據(jù)的數(shù)量。

# data 為上面解析的數(shù)據(jù)對象
# count() 函數(shù)
data.groupby(['技術(shù)方向','推出時(shí)間'],as_index=False)['編程語言','年均銷售數(shù)量','價(jià)格'].count()
# --- 輸出結(jié)果 ---
   技術(shù)方向	推出時(shí)間  編程語言 年均銷售數(shù)量 價(jià)格
0	前端	  19902	    2	    2
1	前端	  19951	    1	    1
2	后端	  19721	    1	    1
3	后端	  19831	    1	    1
4	后端	  19951	    1	    1

結(jié)果解析:這里我們通過 count () 進(jìn)行聚合,并指定只聚合 “編程語言”,“年均銷售數(shù)量”,“價(jià)格” 列的數(shù)據(jù)數(shù)量。

3. mean() 函數(shù)

該函數(shù)用于進(jìn)行各分組數(shù)據(jù)的平均值的計(jì)算,該函數(shù)只對數(shù)值數(shù)據(jù)進(jìn)行聚合。

# data 為上面解析的數(shù)據(jù)對象
# mean() 函數(shù)
data.groupby(['技術(shù)方向'],as_index=False).mean()
# --- 輸出結(jié)果 ---
  技術(shù)方向	年均銷售數(shù)量	價(jià)格
0	前端	    352	    46.466667
1	后端	    130	    51.500000

結(jié)果解析:通過 groupby 指定以技術(shù)方向進(jìn)行分組,分為前端和后端,然后進(jìn)行平均值的聚合操作。

4. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了 Pandas 對數(shù)據(jù)進(jìn)行分組和聚合操作的內(nèi)容,通過分組操作可以將數(shù)據(jù)根據(jù)不同的組類進(jìn)行分組,通過聚合函數(shù)可以達(dá)到對每組數(shù)據(jù)的不同分析需要。本節(jié)課程的重點(diǎn)如下:

  • 了解分組和聚合之間的關(guān)系;
  • 掌握分組操作 groupby () 函數(shù)的使用方法;
  • 掌握常用的聚合操作函數(shù)的使用方法。

圖片描述