Python数据攻略-DataFrame的数据计算和整理

news2024/11/24 12:04:56

大家好,我是Mr数据杨。今天,我们要踏上一场探索Python的旅程,途中我们将讲解算术运算、NumPy和SciPy函数的应用、DataFrame的排序、过滤、统计和遍历等技巧。想象一下如果《三国演义》中的诸葛亮有了Python的帮助,他将如何更有效地指挥战事。

想象《三国演义》中的诸葛亮,通过Python的算术运算预估兵力、粮草,而后使用NumPy和SciPy函数计算最优的行军路线和时间。这将使他的军队更具优势。

而在战场上,诸葛亮需要不断掌握形势变化,这就需要像DataFrame进行排序一样,按优先级排序重要情报,通过DataFrame过滤数据将无关的信息筛选掉,让军情明了。

诸葛亮就如同运用DataFrame数据统计一样,评估自己和敌方的实力对比,预测战争结果。有了这些数据,他可以找到战争的转折点。

就像DataFrame数据遍历一样,诸葛亮需要逐一查看各个战况,决定是否需要调动兵力,或者是否有必要改变策略。

在这个旅程中,我们将一起学习如何使用Python处理数据,像诸葛亮一样明察秋毫,让我们一起开始吧!

文章目录

  • 应用算术运算
  • 应用NumPy和SciPy函数
    • DataFrame进行排序
    • DataFrame过滤数据
    • DataFrame数据统计
    • DataFrame数据遍历

应用算术运算

我们首先介绍如何应用基本的算术运算。下面是一个示例,演示了如何对DataFrame中的列进行加减乘除运算:

df['没年'] - df['生年']

这段代码将计算"没年"列和"生年"列之间的差值,并返回一个新的Series对象。

另一个示例是对"寿命"列进行除法运算:

df['寿命'] / 100

这段代码将"寿命"列中的每个元素除以100,并返回一个新的Series对象。

除了基本的算术运算,我们还可以使用线性组合公式计算汇总数据。下面的代码演示了如何使用线性组合公式计算汇总数据并将其添加到DataFrame中:

df['total'] = 0.4 * df['商業'] + 0.3 * df['農業'] + 0.3 * df['文化']

这段代码将根据给定的权重,对"商業"、"農業"和"文化"三列进行线性组合计算,并将结果添加到名为"total"的新列中。

运算结果示例

应用NumPy和SciPy函数

接下来,我们将介绍如何使用NumPy和SciPy函数在Pandas的Series或DataFrame对象上进行操作。下面的代码演示了如何使用NumPy的numpy.average()函数计算考生的总考试成绩:

import numpy as np

data = df.iloc[:, 13:16]
np.average(data.astype(np.float), axis=1, weights=[0.4, 0.3, 0.3])

这段代码首先从DataFrame中提取出包含考试成绩的三列数据,然后使用numpy.average()函数计算加权平均值。其中,axis=1表示按行进行计算,weights=[0.4, 0.3, 0.3]指定了每个列的权重。

另外,我们还可以直接在DataFrame中添加计算结果列。下面的代码演示了如何将加权平均值添加到DataFrame中:

del df['total']
df['total'] = np.average(df.iloc[:, 13:16].astype(np.float), axis=1, weights=[0.4, 0.3, 0.3])

这段代码

先删除原有的"total"列(如果存在),然后将新的加权平均值计算结果添加到"total"列中。

加权平均值结果示例

DataFrame进行排序

我们可以使用.sort_values()方法对DataFrame进行排序。下面的代码演示了如何按照"寿命"列进行降序排序:

df.sort_values(by='寿命', ascending=False)

这段代码将按照"寿命"列的值进行降序排序,并返回一个排序后的DataFrame。

按照寿命排序结果示例

除了单列排序,我们还可以指定多个列和多个排序方式进行排序。下面的代码演示了如何先按照"生年"列进行降序排序,然后再按照"寿命"列进行降序排序:

df.sort_values(by=['生年', '寿命'], ascending=[False, False])

这段代码将先按照"生年"列进行降序排序,对于生年相同的数据再按照"寿命"列进行降序排序。

按照生年和寿命排序结果示例

DataFrame过滤数据

Pandas的过滤功能类似于在NumPy中使用布尔数组进行索引。下面的代码演示了如何根据条件过滤DataFrame中的数据:

filter_ = df['寿命'] >= 50
df[filter_]

这段代码首先根据条件"寿命大于等于50"生成一个布尔数组,并赋值给filter_变量。然后,使用df[filter_]返回满足条件的行数据。

按照寿命过滤结果示例

我们还可以使用逻辑运算符进行多条件筛选。下面的代码演示了如何筛选出"生年大于等于80"且"寿命大于等于65"的数据:

df[(df['生年'] >= 80) & (df['寿命'] >= 65)]

这段代码使用&运算符对两个条件进行逻辑与操作,并返回满足条件的行数据。

多条件筛选结果示例

此外,我们还可以使用.where()方法替换不满足条件的位置的值。下面的代码演示了如何将"登場"列中不满足条件"登場

大于等于220"的位置替换为0.0:

df['登場'].where(cond=df['登場'] >= 220, other=0.0)

这段代码使用.where()方法将不满足条件的位置的值替换为指定的other值。

DataFrame数据统计

我们可以使用.describe()方法获取DataFrame的基本统计信息。下面的代码演示了如何获取DataFrame的基本统计信息:

df.describe()

这段代码将返回DataFrame的基本统计信息,包括计数、均值、标准差、最小值、25%分位数、50%分位数、75%分位数和最大值等。

另外,我们还可以直接调用相应的方法获取特定统计信息。例如,可以使用.mean()方法获取DataFrame的均值:

df.mean()

这段代码将返回DataFrame的每列的均值。

也可以针对特定的列进行统计,例如:

df['total'].mean()

这段代码将返回"total"列的均值。

同样地,使用.std()方法可以获取DataFrame或特定列的标准差。

df.std()
df['total'].std()

DataFrame数据遍历

在遍历DataFrame时,我们可以使用.items().iteritems()方法遍历DataFrame的列。每次迭代都会产生一个以列名和列数据作为Series对象的元组。

下面的代码演示了如何使用.items()方法遍历DataFrame的列:

for col_label, col in df.iteritems():
    print(col_label, col, sep='\n', end='\n\n')

这段代码将依次打印出每列的列名和列数据。

同样地,我们还可以使用.iterrows()方法遍历DataFrame的行。下面的代码演示了如何使用.iterrows()方法遍历DataFrame的行:

for row_label, row in df.iterrows():
    print(row_label, row, sep='\n', end='\n\n')

这段代码将依次打印出每行的行索引和行数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java debug调试工具

文章目录 java debug调试工具debugdebug运行断点如何运行 具体使用step intostep into Force step intoresume programstopview breakpointsmute breakpointsstep ourt Shift消除debug java debug调试工具 debug 就是调试工具,用来查看代码在运行工程数据的变化。 …

尚硅谷大数据hadoop教程_yarn

p125 课程介绍 p126 yarn基础架构 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。 p127 工作机制 (1)MR程序提交到客户端所在的节点。 (2)YarnRunner向ResourceManager申请一个Applicatio…

一本书让你彻底搞懂安卓系统性能优化(文末送书5本)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

c盘清理软件:清理垃圾、扩大c盘和系统迁移

一、为什么要c盘清理软件 Windows系统采用了NTFS文件系统,这种文件系统特点是有文件碎片和系统产生的临时文件会大量存储到系统盘上,而且在使用电脑的过程中,由于程序的安装、升级、卸载和其他操作会产生大量无用的垃圾文件,这些…

文心一言 VS 讯飞星火 VS chatgpt (32)-- 算法导论5.2 4题

四、利用指示器随机变量来解如下的帽子核对问题(hat-heck problem):n位顾客,他们每个人给餐厅核对帽子的服务生一顶帽子。服务生以随机顺序将帽子归还给顾客。请问拿到自己帽子的客户的期望数是多少? 文心一言: 我们可以将这个问题转化为求解在指示器…

Java的Comparator升序降序的记法

在使用Java自带的排序函数时,往往需要根据自己的需求自定义比较器。以前一直对Comparator的升序降序疑惑。现在记录一下,加深下印象。 先给结论: 实现Comparator接口,必须实现下面这个函数: Override public int co…

Vue+springboot电动车共享电池租赁管理系统设计与实现

基于java语言、Springboot框架、B/S架构、Mysql数据库设计并实现了共享电动车电池管理系统设计与实现。系统主要包括首页、个人中心、用户管理、维护人员管理、商户管理、区域信息管理、电池信息管理、租赁订单管理、归还订单管理、费用订单和定、提醒信息管理、维护信息管理、…

基于vue3+mqtt实现的远程串口实时调试助手(网络透传)

软件:串口调试助手(基于MQTT消息协议实现多客户端同时订阅模式) 扩展:手机端H5(websocket)和vue3mqtt实现的接收客户端 用途:本地化串口调试,远程技术支持时可用,实时同步透传&…

Docker容器操作

#容器创建:就是将镜像加载到容器的过程。 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。 格式:docker create [选项] 镜像 常用选项: -i:让容器开启标准输入接受用户输…

2023年下半年,智能家居渠道有什么新趋势?

2023年,全国各地陆续释放利好政策的信号,商务部将今年定位为“消费提振年”,照明与家居建材行业的市场环境及消费潜力将会得到大幅度改善。随着产业升级与消费需求升级,近年来,智慧照明与智能家居和智慧整装的融合趋势…

Mac - 鼠标拖尾特效 By CursorEffect2

目录 一.引言 二.安装 CursorEffect2 三.使用 CursorEffect2 四.使用效果 五.内存消耗 六.一键关闭 七.总结 一.引言 在自己搭建的 Hexo 博客上可以定义鼠标点击的特效,如图点击后可以产生彩色的斑点。 于是想着除了浏览 Hexo 博客外,能不能别的也…

超黑光摄像机可以有多“黑“?

目前,市场标准黑光级IPC能在0.0005Lux(照度单位)的低照下维持彩色,但星光级或普通红外条件则必须依赖补光灯。那么有没有一款摄像机能达到超黑光的标准,能够在更暗环境下,不需要额外补光的情况下维持彩色呢? 超低照成像…

STM32接收串口数据并且存储SD,Python读取SD验证

在我们使用 STM32 或者 FPGA 采集数据的时候,需要将数据存储到SD卡中,因为数据是按照地址存储的,并且没有文件结构,所以不能直接用电脑的文件管理器读取,下面是一种读取数据的办法 0. 实验平台 正点原子STM32F407ZG探…

mysql 是否包含 返回索引 截取字符串

是否包含返回索引 原文链接:https://www.cnblogs.com/shoshana-kong/p/16474175.html 方法1:使用通配符%。 通配符也就是模糊匹配,可以分为前导模糊查询、后导模糊查询和全导匹配查询,适用于查询某个字符串中是否包含另一个模糊…

TCP协议是如何实现可靠传输的

一、TCP最主要的特点 1.TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。 2.TCP最主要的特点 (1)TCP 是…

SpringBootWeb AOP(上)

事务&AOP 1. 事务管理 1.1 事务回顾 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。 怎么样来控制这组操作&…

php通过cURL爬取数据(2):CURLINFO_HTTP_CODE返回0

CURLINFO_HTTP_CODE返回0 一、项目说明二、curl_getinfo返回异常1.小鹅通SDK2.CURLINFO_HTTP_CODE为0的原因有哪些?3.返回CURLINFO_HTTP_CODE0的解决方案4.请求超时和服务器配置,CPU的使用率有关系吗5.结论 三、阿里云短信发送延迟后而集中发送1.发送集中…

自动化测试Junit

目录 Junit5注解TestDisabledBeforeAll、AfterAll、BeforeEach、AfterEach 参数化单参数多参数CSV获取参数方法获取参数 测试用例执行顺序断言 assert断言相等断言不相等断言为空断言不为空 测试套件 自动化测试项目1. 熟悉项目2. 针对核心流程设计手工测试用例3. 将手工测试用…

智能生成的登录、注册和找回密码界面,让您的网站更加便捷和高效

chatgpt国内镜像 https://chat.xingheai.life 恰饭广告 智能生成的登录、注册和找回密码界面,让您的网站更加便捷和高效 本文介绍了一种基于ChatGPT的智能生成技术,用于生成登录、注册和找回密码界面。我们使用了自然语言处理和机器学习技术,…

七、进程地址空间

一、环境变量 (一)概念 环境变量(environment variables):系统当中用做特殊用途的系统变量。 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可…