当前位置: 首页 > news >正文

数据的高级处理——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
'''

http://www.lryc.cn/news/513609.html

相关文章:

  • 【Leetcode】3280. 将日期转换为二进制表示
  • Vue3 中自定义hook
  • 嵌入式系统 第七讲 ARM-Linux内核
  • 音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件
  • Embedding
  • Android Studio学习笔记
  • Git的使用流程(详细教程)
  • Keil中的gcc
  • bilibili 哔哩哔哩小游戏SDK接入
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
  • 【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
  • XML解析
  • PlasmidFinder:质粒复制子的鉴定和分型
  • PTA数据结构作业一
  • 2024年总结【第五年了】
  • java实现一个kmp算法
  • 强化学习方法分类详解
  • 雅思真题短语(二十八)
  • 在Linux系统中使用字符图案和VNC运行Qt Widgets程序
  • Python基于EasyOCR进行路灯控制箱图像文本识别项目实战
  • Github 2024-12-28 Rust开源项目日报 Top10
  • 提升生产力工具
  • 【蓝桥杯——物联网设计与开发】系列前言
  • 【Java基础】02.Java数据类型
  • Python爬虫(一)- Requests 安装与基本使用教程
  • 线段树保姆级教程
  • logback之自定义过滤器
  • 如何用CSS3创建圆角矩形并居中显示?
  • Java 开发中的指定外部 Jar 路径详解
  • python爬虫--小白篇【selenium自动爬取文件】