数据分析师的学习之路-pandas篇(7)

继续接上篇,这次学习下透视表、线性回归还有根据条件上颜色。

3.9 透视表

在excel里也经常用到透视表来构建想要的列的组合来形成一个新的表,在pandas里也能做。
举例数据是这样的:
在这里插入图片描述
是各种类产品的订单数据,现在想做一个透视表,看看各种类(Category)在每年的销售额数据。
先导入库和读入文件:

import pandas as pd
#因为一会儿销售额会求和,所以要导入这个库
import numpy as np
#读进来
orders = pd.read_excel("C:/tmp/1.xlsx")

要按年来看,而此时Date的格式是个datetime格式,我们只要获取年:

orders['Year'] = pd.DatetimeIndex(orders['Date']).year

然后就可以生成透视表了,也有专门的函数调用,最后的参数可以传入一个方法来计算values

pt1 = orders.pivot_table(index='Catgory', columns='Year', values='Total', aggfunc=np.sum)

这样结果就是:
在这里插入图片描述
得到了一个表,每行是一个种类的销售额,每列就是不同年份。

3.10 线性回归

线性回归原理会有单独的学习,这里是用pandas直接跑出来线性回归方程并画图。
假设有这样的数据,是每月的营业额:
在这里插入图片描述
先导入库和文件

import pandas as pd
import matplotlib.pyplot as plt
#也导入计算线性回归的库
from scipy.stas import linregress
#读文件,由于month列格式有点像float会被判断错格式,所以要设置下该列是string类型
sales = pd.read_excel("C:/tmp/1.xlsx", dtype={'Month':str})

求线性回归方程,得到的结果slope是斜率,intercept是截距,std_err是标准差,r和p先不用,也就是通过这个函数直接得到:

slope, intercept, r, p, std_err = linregress(sales.index, sales.Revenue)

得到了参数,那么线性回归方程就出来了,正常就是 y=kx+c, 这里k就是slope, c就是intercept,x就是index,y就是销售额

#得到所有的exp的结果
exp=sale.index * slope + intercept

然后画个图,一般用散点图看起来明显,然后把线性回归的那条线画出来,一目了然。

#散点图
plt.scatter(sales.index, sales.Revenue)
#画个线,用橙色明显一点
plt.plot(sales.index, exp, color='orange')
#加个标题, 标题就用这个线性回归方程当标题吧
plt.title(f"y={slope}*x + {intercept}")
#x轴显示标签名并转90度
plt.xticks(sales.index, sales.Month, rotation=90)
#画出来
plt.tight_layout()
plt.show()

最后画出来就长这样:
在这里插入图片描述
有了这个方程,就可以预测未来的销售额了。

3.11 上点颜色

有时候表数据一堆很难一目了然知道数据的情况,当给一些不同条件弄上不同颜色,就清楚多了,例如这样一组数据,是学生3次考试的成绩:
在这里插入图片描述
我们想一目了然的了解成绩情况,可以把不及格的标成红色,每次成绩最高的标成绿色。
先导入库和读入文件:

import pandas as pd
students = pd.read_excel("C:/tmp/1.xlsx")

为了实现标红色和绿色,分别定义一个函数:

#把不及格的标红色
def low_score_red(s):color = "red" if s<60 else "black"return f"color:{color}"
#把每列最高分标绿色
def highest_score_green(col):return ['background-color:lime' if s==col.max() else 'background-color.white' for s in col]

然后呢用dataframe的applymap方法传入筛选函数

#不及格标红
students.style.applymap(low_score_red, subset=['Test_1', 'Test_2', 'Test_3'])

然后也要把每列最高分标绿,其实可以和上面这句合并,加到后面,所以上面这句就改成:

students.style.applymap(low_score_red, subset=['Test_1', 'Test_2', 'Test_3'])\.apply(highest_score_green, subset=['Test_1', 'Test_2', 'Test_3'])

这里第一个用的applymap,是因为要对所有单元格操作,而后面用apply是只针对某一列来操作。
然后打印student一看,结果就对了:
在这里插入图片描述


现在想用一种颜色的深浅来表达数值的高低,分数越高就越深,怎么弄呢:

import pandas as pd
#要在前面多导入一个库来画颜色
import seaborn as sns
#然后相当于生成一个调色板
color_map = sns.light_palette('green', as_cmap = True)
#读入文件
students = pd_read_excel("C:/tmp/1.xlsx", index_col='ID')
#画
students.style.background_gradient(color_map, subset=['Test_1', 'Test_2', 'Test_3'])

最终students的结果就是这样:
在这里插入图片描述


如果想用一个柱状颜色条来表示成绩的高低,越长成绩越高,怎么弄呢:

import pandas as pd
#这个情况,就不用seaborn库了
#读入文件
students = pd_read_excel("C:/tmp/1.xlsx", index_col='ID')
#直接画
students.style.bar(color='orange', subset=['Test_1', 'Test_2', 'Test_3'])

最总students的效果是这样:
在这里插入图片描述


今天先学到这,下一篇总结一下,把所有的行和列的常用操作都整理一下。

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

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

相关文章

按照官网文档 通过useExtendedLib扩展库 引入WeUI,报错 组件未定义 | 解决办法

检查开发者工具版本是否过老 参考博客 不要使用 游客模式&#xff0c;游客模式不支持&#xff0c;请注册Appid 使用。 注意 扩展库方式 和 npm 方式不能同时使用&#xff0c;会有相应报错

electron 应用图标修改

修改窗口图标 更换Electron应用程序的桌面图标 准备好你想要作为图标的图片文件&#xff0c;可以是PNG格式安装一个可以转换图片格式为ICO的工具&#xff0c;例如在线转换工具“在线转换icon图标工具”。将你的PNG图片文件上传并转换为ICO格式将转换得到的ICO文件放到你的El…

Haiku库和Jax库介绍

Haiku 是由DeepMind开发的一个深度学习库&#xff0c;它建立在JAX&#xff08;Just Another XLA&#xff0c;为Accelerated Linear Algebra的缩写&#xff09;之上。JAX 是一个由Google开发的数值计算库&#xff0c;专注于高性能数值计算和自动微分。 JAX 提供了强大的数值计算…

synxflow 安装环境

介绍&#xff1a; 该软件可以动态模拟洪水淹没&#xff0c;滑坡跳动和泥石流使用多个cuda支持的gpu。它还提供了一个用户友好但多功能的Python界面&#xff0c;可以完全集成到数据科学工作流程中&#xff0c;旨在简化和加速危害风险评估任务。 这个包我从网上找到的资源特别特…

GAN:WGAN-DIV

论文&#xff1a;https://arxiv.org/pdf/1712.01026.pdf 代码&#xff1a; 发表&#xff1a;2018 摘要 在计算机视觉的许多领域中&#xff0c;生成对抗性网络已经取得了巨大的成功&#xff0c;其中WGANs系列被认为是最先进的&#xff0c;主要是由于其理论贡献和竞争的定性表…

11、信息打点——红队工具篇FofaQuakeSuize水泽Arl灯塔

网络空间测绘引擎 Fofa Quake shodan Zoomeye 主要搜关联资产、特征资产、资产信息&#xff08;在测绘引擎上直接搜IP&#xff0c;它会显示所有与该域名有关的信息。&#xff09; fofa和Quake测绘引擎集成化工具&#xff1a;Finger 自动化信息收集项目 ARL灯塔 Suize水泽 …

洗地机好用吗?口碑好的洗地机有哪些?

自从洗地机开始引入市场以来&#xff0c;它一直受到人们的关注。它在解放家庭清洁劳动力和提供快速方便的清洁方面表现出色&#xff0c;超越了多年来传统的拖把清洁方式。越来越多的人选择使用洗地机来完成家庭清洁任务。如果你也对洗地机产生了浓厚的兴趣&#xff0c;并想购买…

在 AlmaLinux 9.2 上安装Oracle Database 23c

在 AlmaLinux 9.2 上安装Oracle Database 23c 1. 安装 Oracle Database 23c2. 连接 Oracle Database 23c3. 重启启动后&#xff0c;手动启动数据库4. 重启启动后&#xff0c;手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开机启动数据…

Linux环境执行命令python3 test.py传入字符串,test.py接收并处理字符串

可以使用Python脚本文件中的sys模块来接收并处理从Linux环境中传入的字符串命令。 下面是一个具体的示例&#xff1a; Linux环境中执行以下命令&#xff0c;传入字符串参数&#xff1a; python3 test.py "hello world"在test.py文件中&#xff0c;通过sys模块获取…

【面试】Java最新面试题资深开发-JVM第一弹

问题一&#xff1a;Java中的垃圾回收机制 在Java中&#xff0c;垃圾回收是如何工作的&#xff0c;可以简要描述一下垃圾回收的算法有哪些吗&#xff1f; 在Java中&#xff0c;垃圾回收是一种自动管理内存的机制&#xff0c;它负责识别不再被程序引用的对象并释放其占用的内存…

Linux(11):Linux 账号管理与 ACL 权限设定

Linux 的账号与群组 每个登入的使用者至少都会取得两个 ID&#xff0c;一个是使用者 ID(User ID &#xff0c;简称UID)、一个是群组ID (Group ID &#xff0c;简称GID)。 Linux系统上面的用户如果需要登入主机以取得 shell 的环境来工作时&#xff0c;他需要如何进行呢? 首先…

【Android】IntentService

Service 中的代码都是默认运行在主线程当中的&#xff0c;如果直接在Service 里处理一些耗时的逻辑&#xff0c;就很容易出现ANR(Application Not Responding )的情况。 所以&#xff0c;我们应该在Service 的每个具体的方法里开启一个子线程&#xff0c;然后在这里处理那些耗…

基于NDK验签的方式实现APP重签名校验方案

APP重签名是指黑客通过修改APP的签名信息,使得APP看起来像是由原开发者签名发布的,但实际上是被黑客篡改过的。这种行为会破坏APP的完整性和安全性,给用户带来不必要的风险。因此,开发者需要采取一些措施来防止APP重签名,保护APP的安全性。其中一种常见的方式是基于NDK验签…

测绘资质测绘设备检定、校准管理制度

测绘设备检定、校准管理制度 建立健全测绘仪器设备检定、校准管理制度&#xff0c;明确测绘仪器设备的检定、校准、日常管理等要求

Unity环境配置并解决visual studio 不能智能代码提示Unity代码问题(一)

1、请先安装好unity和Visual Studio 2019 2、Visual Studio需要安装如图&#xff08;2019才会有那个移动的可以勾选&#xff09; 3、Unity配置 file->build setting windows->package manager 安装如下图 edit->preferences 3、创建c#脚本 如果还是没能智能提…

Centos7上安装Redis

第一步&#xff1a;安装Redis依赖 yum install -y gcc tcl //需要使用管理员权限第二步&#xff1a;下载上传安装包并解压 下载地址redis中文官网 上传成功后解压 输入tar -zxvf &#xff08;redis版本&#xff09;,即可解压成功 进入redis目录&#xff0c;运行编译命令&am…

安全AI系统开发指南

执行摘要 本文件建议为使用人工智能&#xff08;AI&#xff09;的任何系统的提供商提供指导方针&#xff0c;无论这些系统是从头开始创建的&#xff0c;还是建立在他人提供的工具和服务之上的。实施这些指导方针将有助于提供商构建按预期运行、在需要时可用的人工智能系统&…

服务器以及页面无报错,但是ajax一直回调error。怎么查找报错信息,更好地了解到底是什么问题导致了请求失败

当 $.ajax 请求走到 error 回调时&#xff0c;说明在请求过程中发生了错误。为了更好地调试和定位问题&#xff0c;你可以在 error 回调中输出具体的错误信息。修改你的代码如下&#xff1a; $.ajax({url: "add",type: "POST",data: obj.field,success: f…

flutter记录报错日志

一、实现方式 自己实现不太现实&#xff0c;还是使用第三方平台&#xff0c;比如腾讯Bugly&#xff0c;免费的&#xff0c;地址&#xff1a;https://bugly.qq.com/ 二、引入 因为官网文档只有针对安卓和苹果的&#xff0c;没有flutter的&#xff0c;所以在网上找了一个库 引…

【 Go语言使用xorm框架操作数据库】

Go语言使用xorm框架操作数据库 Xorm 是一个简单而强大的Go语言ORM&#xff08;对象关系映射&#xff09;库。它支持自动将结构体映射到数据库表&#xff0c;并提供了一系列便捷的API来执行CRUD&#xff08;创建、读取、更新和删除&#xff09;操作。 安装 Xorm 首先&#xf…