熱線電話:13121318867

登錄
首頁大數據時代數據分析師教程《Python數據分析極簡入門》第2節 5 Pandas數據查看
數據分析師教程《Python數據分析極簡入門》第2節 5 Pandas數據查看
2024-11-23
收藏

《Python數據分析極簡入門》

第2節 5 Pandas數學計算

import pandas as pd
d =  np.array([[8128242596],
       [ 835569839],
       [13395536,  3],
       [7054694812],
       [6380972570]])
df = pd.DataFrame(data = d,
                  columns=list('abcde'))
df
a b c d e
0 81 28 24 25 96
1 8 35 56 98 39
2 13 39 55 36 3
3 70 54 69 48 12
4 63 80 97 25 70

聚合計算

聚合計算是指對數據進行匯總和統計的操作。常用的聚合計算方法包括計算均值、求和、最大值、最小值、計數等。

df['a'].mean()
47.0
df['a'].sum()
235
df['a'].max()
81
df['a'].min()
8
df['a'].count()
5
df['a'].median() # 中位數
63.0
df['a'].var() #方差
1154.5
df['a'].skew() # 偏度
-0.45733193928530436
df['a'].kurt() # 峰度
-2.9999915595685325
df['a'].cumsum() # 累計求和
0     81
1     89
2    102
3    172
4    235
Name: a, dtype: int64
df['a'].cumprod() # 累計求積
0          81
1         648
2        8424
3      589680
4    37149840
Name: a, dtype: int64
df['a'].diff() # 差分
0     NaN
1   -73.0
2     5.0
3    57.0
4    -7.0
Name: a, dtype: float64
df['a'].mad() # 平均絕對偏差
29.2

按行、列聚合計算

df.sum(axis=0)  # 按列求和匯總到最后一行
a    235
b    236
c    301
d    232
e    220
dtype: int64
df.sum(axis=1)  # 按行求和匯總到最后一列 
0    254
1    236
2    146
3    253
4    335
dtype: int64
df.describe() # 描述性統計
a b c d e
count 5.000000 5.000000 5.000000 5.000000 5.000000
mean 47.000000 47.200000 60.200000 46.400000 44.000000
std 33.977934 20.656718 26.395075 30.369392 39.083244
min 8.000000 28.000000 24.000000 25.000000 3.000000
25% 13.000000 35.000000 55.000000 25.000000 12.000000
50% 63.000000 39.000000 56.000000 36.000000 39.000000
75% 70.000000 54.000000 69.000000 48.000000 70.000000
max 81.000000 80.000000 97.000000 98.000000 96.000000

agg函數

對整個DataFrame批量使用多個聚合函數

df.agg(['sum''mean','max','min','median'])
a b c d e
sum 235.0 236.0 301.0 232.0 220.0
mean 47.0 47.2 60.2 46.4 44.0
max 81.0 80.0 97.0 98.0 96.0
min 8.0 28.0 24.0 25.0 3.0
median 63.0 39.0 56.0 36.0 39.0

DataFramed的某些列應用不同的聚合函數

df.agg({'a':['max','min'],'b':['sum','mean'],'c':['median']})
a b c
max 81.0 NaN NaN
min 8.0 NaN NaN
sum NaN 236.0 NaN
mean NaN 47.2 NaN
median NaN NaN 56.0

apply、applymap、map函數

注意其中applymap函數在新版已經被棄用,這里的案例是基于pandas=1.3.2寫的

在Python中如果想要對數據使用函數,可以借助apply(),applymap(),map()對數據進行轉換,括號里面可以是直接函數式,或者自定義函數(def)或者匿名函數(lambda)

1、當我們要對數據框(DataFrame)的數據進行按行或按列操作時用apply()

df.apply(lambda x :x.max()-x.min(),axis=1)
#axis=1,表示按行對數據進行操作
#從下面的結果可以看出,我們使用了apply函數之后,系統自動按行找最大值和最小值計算,每一行輸出一個值
0    72
1    90
2    52
3    58
4    72
dtype: int64
df.apply(lambda x :x.max()-x.min(),axis=0)
#默認參數axis=0,表示按列對數據進行操作
#從下面的結果可以看出,我們使用了apply函數之后,系統自動按列找最大值和最小值計算,每一列輸出一個值
a    73
b    52
c    73
d    73
e    93
dtype: int64

2、當我們要對數據框(DataFrame)的每一個數據進行操作時用applymap(),返回結果是DataFrame格式

df.applymap(lambda x : 1 if x>60 else 0)
#從下面的結果可以看出,我們使用了applymap函數之后,
#系統自動對每一個數據進行判斷,判斷之后輸出結果
a b c d e
0 1 0 0 0 1
1 0 0 0 1 0
2 0 0 0 0 0
3 1 0 1 0 0
4 1 1 1 0 1

3、當我們要對Series的每一個數據進行操作時用map()

df['a'].map(lambda x : 1 if x>60 else 0)
0    1
1    0
2    0
3    1
4    1
Name: a, dtype: int64

總結:

apply() 函數可以在DataFrameSeries上應用自定義函數,可以在行或列上進行操作。

applymap() 函數只適用于DataFrame,可以在每個元素上應用自定義函數。

map() 函數只適用于Series,用于將每個元素映射到另一個值。

以上是數學運算部分,包括聚合計算、批量應用聚合函數,以及對SeriesDataFrame進行批量映射,接下來我們來看如何對數據進行合并拼接


下一節 《第2節 6 Pandas合并拼接》

這里分享一個你一定用得到的小程序——CDA數據分析師考試小程序。 它是專為CDA數據分析認證考試報考打造的一款小程序??梢詭湍憧焖賵竺荚?、查成績、查證書、查積分,通過該小程序,考生可以享受更便捷的服務。 掃碼加入CDA小程序,與圈內考生一同學習、交流、進步!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢