热线电话: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小程序,与圈内考生一同学习、交流、进步!

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询