数据的高级处理——pandas模块进阶——数据的统计运算

        今天的学习用有好几处与书上的内容有出入,不只是因为pycharm中函数更新、弃用的问题,还是作者有些疏忽。不过影响不大,运行报错,GPT分析一下,原因很简单。这里不进行详细书名,在下边的代码上已经进行详细的备注,这里不浪费时间了。

主要内容:

1、数据的统计运算,包括求和、平均值、最值、分别要用到sum()函数、mean()函数、max()函数、min()函数。

2、获取数值分布情况,在pandas模块中的describe()函数可以按列获取数据表中所有数值数据的分布情况, 包括数据的个数、均值、最值、方差、分位数等。

3、计算相关系数,使用corr()函数计算数据表data中各列之间的相关系数,如果仅计算数值数据,则在corr()函数添加参数numeric_only=True。

4、分组汇总数据,pandas模块中的groupby()函数可以对数据进行分组,依据“产品”列对数据进行分组,在对分组后的数据分别进行求和运算。b=data.groupby("产品").sum()

5、创建数据透视表,a=pd.pivot_table(data,values="利润(元)",index="产品",aggfunc="sum") 这句代码中,参数values用于指定要计算的列; 参数index用于指定一个列作为数据透视表的行标签; 参数aggfunc表示values的计算类型,sum表示求和。当然也可以指定多列,b=pd.pivot_table(data,values=["利润(元)","成本(元)"],index="产品",aggfunc="sum")

##############################
##作者:白雪公主的后妈
##时间:2024年1月1日
##主题:数据的高级处理——pandas模块进阶——数据的统计运算
##主要内容:常见的统计运算包括求和、平均值、最值、分别要用到sum()函数、mean()函数、max()函数、min()函数。
##############################
#1、数据的统计运算
#1.1求和      #pandas模块中的sum()函数可以对数据的每一列数据分别进行求和。
import pandas as pd
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\产品统计表.xlsx",sheet_name=0)
a=data.sum()
print(a)
'''
运行结果:
编号          a001a002a003a004a005a006a007
产品          背包钱包背包手提包钱包单肩包单肩包
成本价(元/个)                          364
销售价(元/个)                          899
数量(个)                               358
成本(元)                               20802
收入(元)                               48157
利润(元)                               27319
dtype: object
#从运行结果可以看出,对非数值数据,运算结果是将它们依次来连接得到一个字符串;
对于数值数据,运算结果才是数据之和。
'''
#############也可以对某一列进行求和
a=data["利润(元)"].sum()
print(a)
'''
运行结果:
27319
'''
#1.2、求平均值     在pandas模块中mean()函数可以对所有数值数据列分别计算平均值。
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\产品统计表.xlsx",sheet_name=0)
c=data.mean(numeric_only=True)          #在python爬虫、数据分析与可视化中132页,小编直接c=data.mean() 即可,我认为有两种可能,一种小编可能忘写了,另外一种使用的pycharm版本的函数不同。
print(c)
'''
运行结果:
成本价(元/个)      52.000000
销售价(元/个)     128.428571
数量(个)         51.142857
成本(元)       2971.714286
收入(元)       6879.571429
利润(元)       3902.714286
dtype: float64
'''
################
d=data["利润(元)"].mean()          #对某一列计算其平均值
print(d)
'''
运行结果:
3902.714285714286
'''
#1.3求最值     max()和min()函数
e=data.max()
print(e)
'''
运行结果:
编号           a007
产品             钱包
成本价(元/个)       90
销售价(元/个)      187
数量(个)          78
成本(元)        7020
收入(元)       14586
利润(元)        7566
dtype: object
'''
########对数据表中某一列进行求解最大值
f=data["利润(元)"].max()
print(f)
'''
运行结果:
7566
'''
#2、获取数值分布情况
'''
在pandas模块中的describe()函数可以按列获取数据表中所有数值数据的分布情况,
包括数据的个数、均值、最值、方差、分位数等
'''
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\产品统计表.xlsx",sheet_name=0)
a=data.describe()
print(a)
'''
运行结果:
        成本价(元/个)    销售价(元/个)      数量(个)        成本(元)         收入(元)        利润(元)
count   7.000000    7.000000   7.000000     7.000000      7.000000     7.000000
mean   52.000000  128.428571  51.142857  2971.714286   6879.571429  3902.714286
std    31.112698   50.483849  20.053500  2391.447659   4352.763331  2005.138957
min    16.000000   65.000000  23.000000   368.000000   1495.000000  1127.000000
25%    26.000000   94.500000  38.000000   948.000000   3861.000000  2895.000000
50%    58.000000  124.000000  58.000000  3364.000000   7192.000000  3828.000000
75%    74.000000  167.000000  61.500000  4077.000000   8581.000000  4504.000000
max    90.000000  187.000000  78.000000  7020.000000  14586.000000  7566.000000
'''
###########也可以单独看成一列数据
b=data["利润(元)"].describe()
print(b)
'''
运行结果:
count       7.000000
mean     3902.714286
std      2005.138957
min      1127.000000
25%      2895.000000
50%      3828.000000
75%      4504.000000
max      7566.000000
Name: 利润(元), dtype: float64
'''
#3、计算相关系数
'''
相关系数通常用来衡量两个或者多个元素间的相关程度,使用pandas模块中的corr()函数可以计算相关系数。
'''
import pandas as pd
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\相关性分析.xlsx",sheet_name=0)
print(data)
'''
运行结果:
   代理商编号  年销售额(万元)  年广告费投入额(万元)  成本费用(万元)  管理费用(万元)
0  A-001      20.5          5.6      2.00      0.80
1  A-003      24.5         16.7      2.54      0.94
2  B-002      31.8         20.4      2.96      0.88
3  B-006      34.9         22.6      3.02      0.79
4  B-008      39.4         25.7      3.14      0.84
5  C-003      44.5         28.8      4.00      0.80
6  C-004      49.6         32.1      6.86      0.85
7  C-007      54.8         35.9      5.60      0.91
8  D-006      58.5         38.7      6.45      0.90
'''
##########使用corr()函数计算数据表data中各列之间的相关系数。
a=data.corr(numeric_only=True)      #numeric_only=True表示只处理数值型列表
print(a)
'''
运行结果:
             年销售额(万元)  年广告费投入额(万元)  成本费用(万元)  管理费用(万元)
年销售额(万元)     1.000000     0.976664  0.913472  0.218317
年广告费投入额(万元)  0.976664     1.000000  0.875142  0.306296
成本费用(万元)     0.913472     0.875142  1.000000  0.283494
管理费用(万元)     0.218317     0.306296  0.283494  1.000000
'''
##################如果只想查看某一列与其他列的相关系数,可以用列表签来指定列。
b=data.corr(numeric_only=True)["年销售额(万元)"]
print(b)
'''
运行结果:
年销售额(万元)       1.000000
年广告费投入额(万元)    0.976664
成本费用(万元)       0.913472
管理费用(万元)       0.218317
Name: 年销售额(万元), dtype: float64
'''
#4、分组汇总数据
#pandas模块中的groupby()函数可以对数据进行分组
import numpy as np
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\产品统计表.xlsx",sheet_name=0)
a=data.groupby("产品")
print(a)
'''
运行结果:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001751C0BC470>
不能直观的展现,需要配合1节介绍的函数对其进行求和、求平均值、求最值等特定的汇总计算
'''
#########举例:依据“产品”列对数据进行分组,在对分组后的数据分别进行求和运算
# 删除编号列
data = data.drop(columns=['编号'])            #书中不用加这行直接运行后出现一下运行结果,但是我运行以后存在编号列,需要对“编号”列继续删除
b=data.groupby("产品").sum()
print(b)
'''
运行结果:
     成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
产品                                                 
单肩包       116       248    121   7018  15004   7986
手提包        36       147     26    936   3822   2886
背包         32       130     83   1328   5395   4031
钱包        180       374    128  11520  23936  12416
'''
c=data.groupby("产品")["利润(元)"].sum()
print(c)
'''
运行结果:
产品
单肩包     7986
手提包     2886
背包      4031
钱包     12416
Name: 利润(元), dtype: int64
'''
#######当然也可以选择多列进行分组后汇总计算
d=data.groupby("产品")[["数量(个)","利润(元)"]].sum()       #这里与书中的也有所不同d=data.groupby("产品")["数量(个)","利润(元)"].sum()
print(d)
'''
运行结果:
     数量(个)  利润(元)
产品               
单肩包    121   7986
手提包     26   2886
背包      83   4031
钱包     128  12416
'''
#5、创建数据透视表
import numpy as np
data=pd.read_excel("E:\\python\\Python_Code\\Excel\\产品统计表.xlsx",sheet_name=0)
a=pd.pivot_table(data,values="利润(元)",index="产品",aggfunc="sum")
print(a)
'''
a=pd.pivot_table(data,values="利润(元)",index="产品",aggfunc="sum")
这句代码中,参数values用于指定要计算的列;
参数index用于指定一个列作为数据透视表的行标签;
参数aggfunc表示values的计算类型,sum表示求和。
运行结果:
     利润(元)
产品        
单肩包   7986
手提包   2886
背包    4031
钱包   12416
'''
###########可以计算多列
b=pd.pivot_table(data,values=["利润(元)","成本(元)"],index="产品",aggfunc="sum")
print(b)
'''
     利润(元)  成本(元)
产品               
单肩包   7986   7018
手提包   2886    936
背包    4031   1328
钱包   12416  11520
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雪公主的后妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值