数据的高级处理——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
'''
相关文章:
数据的高级处理——pandas模块进阶——数据的统计运算
今天的学习用有好几处与书上的内容有出入,不只是因为pycharm中函数更新、弃用的问题,还是作者有些疏忽。不过影响不大,运行报错,GPT分析一下,原因很简单。这里不进行详细书名,在下边的代码上已经进行详细的…...

【Leetcode】3280. 将日期转换为二进制表示
文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。 date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示&a…...

Vue3 中自定义hook
什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装,类似于vue2.x中的mixin。 自定义hook的优势:复用代码, 让setup中的逻辑更清楚易懂。 场景需求:现在我需要获取当前鼠标所点击的地方的…...

嵌入式系统 第七讲 ARM-Linux内核
• 7.1 ARM-Linux内核简介 • 内核:是一个操作系统的核心。是基于硬件的第一层软件扩充, 提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统, 决定着系统的…...

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件
一、错误的命令 通过FFmpeg命令可以将mp4文件转换为ps文件,PS文件中包含PS流数据。 由于PS流/PS文件对应的FFInputFormat结构为: const FFInputFormat ff_mpegps_demuxer {.p.name "mpeg",.p.long_name NULL_IF_CONFIG_SMALL…...
Embedding
Embedding 在机器学习中,Embedding 主要是指将离散的高维数据(如文字、图片、音频)映射到低纬度的连续向量空间。这个过程会生成由实数构成的向量,用于捕捉原始数据的潜在关系和结构。 Text Embedding工作原理 词向量化&#x…...

Android Studio学习笔记
01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器...

Git的使用流程(详细教程)
目录 01.Git是什么? 1.1 Git简介 1.2 SVN与Git的最主要的区别 1.3 GIt主要特点 02.Git是干什么的? 2.1.Git概念汇总 2.2 工作区/暂存区/仓库 2.3 Git使用流程 03.Git的安装配置 3.1 Git的配置文件 3.2 配置-初始化用户 3.3 Git可视化…...

Keil中的gcc
文章目录 一、IDE背后的命令1.1 IDE是什么1.2 IDE的背后是命令1.3 有两套主要的编译器 二、准备工作2.1 arm-linux-gcc和gcc是类似的2.2 Code::Blocks2.2.1 设置windows环境变量2.2.2 命令行示例 三、gcc编译过程详解3.1 程序编译4步骤3.2 gcc的使用方法3.2.1 gcc使用示例3.2.2…...

bilibili 哔哩哔哩小游戏SDK接入
小游戏的文档 简介 bilibili小游戏bilibili小游戏具有便捷、轻量、免安装的特点。游戏包由云端托管,在哔哩哔哩APP内投放和运行,体验流畅,安全可靠。https://miniapp.bilibili.com/small-game-doc/guide/intro/ 没想过接入这个sdk比ios还难…...

springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本大学校园生活信息平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌(ALSS)模块 2.轻量坐标注意力(LCA)模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…...

XML解析
一,XML概述 1.什么是XML XML即为可扩展的标记语言(eXtensible Markup Language) XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题,而…...

PlasmidFinder:质粒复制子的鉴定和分型
质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性…...
PTA数据结构作业一
6-1 链表的插入算法 本题要求实现一个插入函数,实现在链表llist中的元素x之后插入一个元素y的操作。 函数接口定义: int InsertPost_link(LinkList llist, DataType x, DataType y); 其中 llist是操作的链表,x是待插入元素y的前驱节点元素…...

2024年总结【第五年了】
2024年总结 北国绕院扫雪,南方围炉烹茶,且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴,誊写一段回忆,还以光阴一段副本。 那么你要听一支新故事吗?第五年总结的片碎。 衣单天寒,走趟流星孤骑…...
java实现一个kmp算法
1、什么是KMP算法 Kmp 算法是由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,改进字符串匹配的算法; Kmp 算法的核心是利用匹配失败的信息,尽量减少模式串与主串的匹配次数,以达到 快速匹配的目的; Kmp 算法的时…...
强化学习方法分类详解
强化学习方法分类详解 引言 强化学习(Reinforcement Learning, RL)是一种通过智能体与环境互动来学习如何做出最佳决策的方法。根据不同的优化中心、策略特性、环境模型、奖励函数、动作空间类型以及行为策略和目标策略的一致性,RL可以分为…...
雅思真题短语(二十八)
真题短语收录在合辑。 541法律官员 work as a solicitor 542前卫 a radical and expensive scheme 543反对者们 objectors 544破坏 demolishing buildings 545蒸汽机车 steam locomotives 546冷凝 steam could be condensed 547烟雾 smoke and fumes 548通风井 ventilation sh…...

在Linux系统中使用字符图案和VNC运行Qt Widgets程序
大部分服务器并没有GUI,运行的是基础的Linux系统,甚至是容器。如果我们需要在这些系统中运行带有GUI功能的Qt程序,一般情况下就会报错,比如: $ ./collidingmice qt.qpa.xcb: could not connect to display qt.qpa.plu…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...