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

【小白学机器学习35】数据表:整洁数据表,交叉表/列联表,以及两者转化pd.pivot_table()

目录

1 虽然这是个很基础的知识,但是我觉得有必要记录下

2 整洁数据表

3 交叉数据表的2种形式

3.0 交叉表的名字

3.1 2维的交叉表

3.2 用2维表现3维的

3.3 上述内容,具体的markdown文本

4 交叉数据表

4.1 交叉数据表并不整洁

4.2 但是交叉表也很有用:比如求 联合概率+边缘概率

4.3 总结

5 整洁数据表,可以直接pd.pivot_table()转化为交叉表

5.1 pd.pivot_table()  数据透视表公式

5.2 表虽然可以直接转,但是内容也需要合适


1 虽然这是个很基础的知识,但是我觉得有必要记录下

有些数据表很有问题,后导致后续的分析出问题,所以先检查和整理数据表是很有必要的一个步骤。

  • #混乱数据
  1. 数据混乱
  2. 有些甚至把一个单元格填多个数据
  3. 有些虽然看着很清晰,但数据结构混乱
  • #整洁数据
  1. 可读性比较强

2 整洁数据表

整洁数据表

这几个要求看起来很简单,但是有时候也容易忽视。

  • 1.每1列代表1个属性
  • 2.每1行代表1个样本(样本里包含多个数据)
  • 3.每一个单元格,代表1个具体数据
  • 4.每个类型的观察单元构成1个表格(不同类型的观察单元多个表格)
     

3 交叉数据表的2种形式

3.0 交叉表的名字

  • 交叉表
  • 交叉分类表
  • 也叫列联表

3.1 2维的交叉表

  • 常见的交叉表
  • 列:属性1 如颜色
  • 行:属性2 如 城市
  • 单元格,具体数据

3.2 用2维表现3维的

  • 实际上还是2维的
  • 因为我们很难真的表现1个3维表格,虽然理论上可以通过 XYZ这样的三维图表示
  • 其实,用2维表现3维的就是,列的属性,实际是2个维度,
  1. 列的维度1:上午,下午
  2. 列的更高维度,颜色

3.3 上述内容,具体的markdown文本

#混乱数据
数据混乱
有些甚至把一个单元格填多个数据
有些虽然看着很清晰,但数据结构混乱#整洁数据
可读性比较强##第1类表格:整洁数据表1.每1列代表1个属性
2.每1行代表1个样本(样本里包含多个数据)
3.每一个单元格,代表1个具体数据
4.每个类型的观察单元构成1个表格(不同类型的观察单元多个表格)序号|城市|颜色|销售量
----|----|----|----
1|北京|红色|98
2|北京|蓝色|90
3|上海|红色|86
4|上海|蓝色|95##第2类表格:数据交叉表二维城市\颜|红色|蓝色
----|----|----
北京|98|90
上海|86|95三维
交叉表|红色| 红色|蓝色| 蓝色
""|上午|下午|上午|下午
----|----|----|----|----
北京|48|50|40|50
上海|46|40|45|40

4 交叉数据表

4.1 交叉数据表并不整洁

  • 从整洁数据的定义上说,交叉数据表“并不整洁”
  • 原因:交叉数据表,往往是列表示一个属性,行也表示了一个属性
  • 行,并不只是一个行样本(多个数据的数组!)

4.2 但是交叉表也很有用:比如求 联合概率+边缘概率

  • 独立概率
  • 联合概率:独立概率1*独立概率2
  • 边缘概率:同1行 /同1列的所有联合概率相加的总和。
  1.  边缘概率分2种:行边缘概率,列边缘概率
  2.  为什么要全部相加?因为同1行/列 代表了所有的可能性,必须全加起来才=边缘概率
  3. (所有行的)Σ边缘概率和=1 = 总概率
  4. (所有列的)Σ边缘概率和=1= 总概率
  • (概率空间的)总概率=1

4.3 总结

  • 我的想法:
  • 整洁数据表:更底层:适合作为原始数据,输入后,进行各种分析
  • 各种上层的表现表形式:
  1. 交叉数据表,本身就是在整洁数据表的一种加工,是一种输出形式!
  2. 其他数据表表现形式

5 整洁数据表,可以直接pd.pivot_table()转化为交叉表

5.1 pd.pivot_table()  数据透视表公式

  •  pd.pivot_table(data=pd.Dataframe, values="单元格列名",aggfunc="sum新生成的求和列",index="横向的列名", columns="纵向的列名")
  • pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')

参数说明:

  • 数据源
  • data:需要进行数据透视的DataFrame。pd.Dataframe
  • 数据源重组
  • values:用于聚合的列名,默认聚合所有数值列。"原表--单元格列名",
  • index:数据透视表的index,从原数据的列中筛选。"原表--横向的列名",
  • columns:数据透视表的columns,从原数据的列中筛选。"原表--纵向的列名"
  • 重组关键函数
  • aggfunc:用于聚合的函数,默认为’mean’,支持numpy的聚合函数。也可以是"sum"
  • 其他效果
  • fill_value:用于替换结果中的缺失值。
  • margins:添加行/列小计和总计,默认为False。
  • dropna:是否删除所有条目均为NA的列,默认为True。
  • margins_name:总计列的名称,默认为’All’。

sample_dataframe11=pd.DataFrame({"city":sample_array11,
                                "color":sample_array22,
                                 "sales":sample_array33,
                                })
 

#可以把np.Dataframe 直接转化为 交叉表/列联表
crosstable11=pd.pivot_table(data=sample_dataframe11,

                                                values="sales",

                                                 aggfunc="sum",

                                                 index="city",

                                                columns="color")

5.2 表虽然可以直接转,但是内容也需要合适

  • 把 “整洁数据表”转化为交叉表,虽然可以直接用pd.pivot_table(),但是表本身的内容也需要符合,适合转化为交叉表"
  • 例子1数据表本身不适合转化为交叉表,可以转,转完后格式比较奇怪,没啥意义"
  • 例子2:数据表本身很适合转化为交叉表,可以转,转完后很好"
import numpy as np
import pandas as pd
import scipy as sp
%precision 3print("#把 “整洁数据表”转化为交叉表,虽然可以直接用pd.pivot_table(),但是表本身的内容也需要符合,适合转化为交叉表")
print("#例子1数据表本身不适合转化为交叉表,可以转,转完后格式比较奇怪,没啥意义")sample_array1=np.array([1,2,3])
sample_array2=np.array([10,20,30])
sample_array3=np.array([100,200,300])# 注意pd.DataFrame 首字母一定大写
sample_dataframe1=pd.DataFrame({"city":sample_array1,"color":sample_array2,"sales":sample_array3,})
print(sample_dataframe1)
print()#可以把np.Dataframe 直接转化为 交叉表/列联表
crosstable1=pd.pivot_table(data=sample_dataframe1,values="sales",aggfunc="sum",index="city",columns="color")
print(crosstable1)
print()print("#例子2:数据表本身很适合转化为交叉表,可以转,转完后很好")
sample_array11=np.array(["beijing","beijing","shanghai","shanghai"])
sample_array22=np.array(["blue","red","blue","red"])
sample_array33=np.array([100,150,200,120])# 注意pd.DataFrame 首字母一定大写
sample_dataframe11=pd.DataFrame({"city":sample_array11,"color":sample_array22,"sales":sample_array33,})
print(sample_dataframe11)
print()#可以把np.Dataframe 直接转化为 交叉表/列联表
crosstable11=pd.pivot_table(data=sample_dataframe11,values="sales",aggfunc="sum",index="city",columns="color")
print(crosstable11)
print()

相关文章:

【小白学机器学习35】数据表:整洁数据表,交叉表/列联表,以及两者转化pd.pivot_table()

目录 1 虽然这是个很基础的知识,但是我觉得有必要记录下 2 整洁数据表 3 交叉数据表的2种形式 3.0 交叉表的名字 3.1 2维的交叉表 3.2 用2维表现3维的 3.3 上述内容,具体的markdown文本 4 交叉数据表 4.1 交叉数据表并不整洁 4.2 但是交叉表也…...

springboot旅游管理系统的设计与实现

springboot旅游管理系统的设计与实现 如需源码pc端👉👉👉资源 手机端👉👉👉资源 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于…...

k8s 1.28 聚合层部署信息记录

–requestheader-client-ca-file –requestheader-allowed-namesfront-proxy-client –requestheader-extra-headers-prefixX-Remote-Extra- –requestheader-group-headersX-Remote-Group –requestheader-username-headersX-Remote-User –proxy-client-cert-file –proxy-cl…...

自由学习记录(25)

只要有修改,子表就不用元表的参数了,用自己的参数(只不过和元表里的那个同名) 子表用__index“继承”了父表的值,此时子表仍然是空表 一定是创建这样一个同名的变量在原本空空的子表里, 传参要传具体的变…...

关于函数式接口和编程的解析和案例实战

文章目录 匿名内部类“匿名”在哪里 函数式编程lambda表达式的条件Supplier使用示例 ConsumeracceptandThen使用场景 FunctionalBiFunctionalTriFunctional 匿名内部类 匿名内部类的学习和使用是实现lambda表达式和函数式编程的基础。是想一下,我们在使用接口中的方…...

Linux 僵尸进程和孤儿进程, 进程优先级

僵尸进程 之间在进程状态中了解到了 "僵尸状态". 那么处于僵尸状态的进程就是僵尸进程. 僵尸状态是一种特殊的进程状态, 它表示一个进程已经完成执行, 但其父进程尚未回收其终止状态. "僵尸状态" 的本质就是死亡状态. 如何理解僵尸进程: 举个例子: 一个正…...

爬虫笔记24——纷玩岛自动抢票脚本笔记

纷玩岛自动抢票,协议抢票思路实现 一、获取Authorization凭证二、几个关键的参数三、几个关键的接口获取参数v,这个参数其实可以写死,可忽略通过价位获取演出的参数信息获取观演人信息,账号提前录入即可提交订单接口 先看实现图&a…...

《白帽子讲Web安全》15-16章

《白帽子讲Web安全》15-16章 《白帽子讲Web安全》15章15、Web Server配置安全15.1、Apache安全15.2、Nginx安全15.3、jBoss远程命令执行15.4、Tomcat远程命令执行15.5、HTTP Parameter Pollution15.6、小结 第四篇 互联网公司运营安全《白帽子讲Web安全》16章16、互联网业务安全…...

计算机毕业设计Python+LSTM天气预测系统 AI大模型问答 vue.js 可视化大屏 机器学习 深度学习 Hadoop Spark

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

大语言模型压缩技术;推理优化技术;SparseGPT算法;GPTQ算法

目录 大语言模型落地的成本、效率与效果 模型压缩技术 推理优化技术 SparseGPT算法 GPTQ算法 大语言模型落地的成本、效率与效果 模型压缩技术 模型压缩技术是大语言模型轻量化的关键。介绍了多种模型压缩方法,其中权重量化和模型稀疏化是两种主要的技术。 权重量化:权重…...

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook,作为全球领先的社交平台之一,其在技术领域的创新不仅体现在产品功能的实现上,也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分,通过开源,Facebook不仅加速了技术进步,…...

力扣--LCR 149.彩灯装饰记录I

题目 代码 /** Definition for a binary tree node. public class TreeNode { int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.right ri…...

Rust SQLx CLI 同步迁移数据库

上文我们介绍了SQLx及SQLite,并介绍了如何使用代码同步迁移数据库。本文介绍Sqlx cli 命令行工具,介绍如何安装、使用,利用其提供的命令实现数据表同步迁移。Java生态中有flyway, sqlx cli 功能类似,利用命令行工具可以和其他语言…...

批量生成不同用户的pdf 文件(html样式)

技术 selenium thymeleaf itextpdf chromedriver 使用thymeleaf 将动态数据替换 使用selenium chromedriver 进行js &#xff0c;css等逻辑运算后渲染视图 使用itextpdf 将html 转为pdf 文件 html模板 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf…...

混淆零碎知识点

minifyEnabled true //混淆开关 zipAlignEnabled true // Zipalign优化 shrinkResources true // 移除无用的resource文件 &#xff08;必须要混淆开了之后才才可以设置为true&#xff09; proguard-rules.pro 为混淆文件 //整个文件保留 不被混淆 -keep class com.cn…...

排序算法2

排序算法1-CSDN博客 排序算法1中提及的是较为基础(暴力实现&#xff0c;复杂度较高)的排序算法&#xff0c;不适合于数据量较大的场景&#xff0c;比如序列长度达到1e5 接下来以蓝桥另一道题目来理解其它的排序算法 蓝桥3226 蓝桥账户中心 样例 5 1 5 9 3 7 4、快速排序 快速排…...

【Web开发基础学习——corsheaders 应用的理解】

Web开发基础学习系列文章目录 第一章 基础知识学习之corsheaders 应用的理解 文章目录 Web开发基础学习系列文章目录前言一、使用1.1 安装1.2 配置 二、功能总结 前言 corsheaders 是一个 Django 第三方应用&#xff0c;用于处理跨域资源共享 (CORS)。CORS 是一种机制&#x…...

Redis和MySQL之间如何进行数据同步

原因 为什么要进行Redis和MySQL的数据同步&#xff1f; 性能优化&#xff1a;MySQL是关系型数据库&#xff0c;数据读取和存储相对复杂&#xff1b;Redis是内存数据库&#xff0c;读写速度极快&#xff0c;将热点数据存在Redis&#xff0c;可以大大提高系统的访问速度。 数据…...

css:转换

转换 移动 /* transform: translate(100px, 200px); */transform: translateX(100px);transform: translateY(100px); /*一个意思*/ 如果后面跟百分数的意思是移动盒子自身x/y方向长度的百分比&#xff0c;可以用作子绝父相控制盒子水平居中垂直居中 translate里的xy值是相对…...

状态管理与存储:Vuex 和 sessionStorage

1. sessionStorage 存储位置 sessionStorage 是浏览器提供的 Web Storage API 的一部分&#xff0c;用于在一个会话期间存储数据。数据保存在浏览器的 内存 中&#xff0c;而不是在硬盘上&#xff0c;且其生命周期仅限于当前浏览器标签页。数据在浏览器窗口或标签页关闭时会被…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...