学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]

学习机器学习,需要学习如何预处理原始数据,这里用到pandas,将原始数据转换为张量格式的数据。

学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]-CSDN博客

下面介绍下:处理缺失值(删除法)

为什么要这样做?

这种处理缺失值的策略很实用,当某列的缺失值比例过高时,保留该列可能会对后续分析造成负面影响。删除缺失值最多的列可以避免在缺失值填充时引入过多噪声,提高数据质量。

原始数据:
   NumRoos Alley   Price
0      NaN  Pave  127500
1      2.0   NaN  106000
2      4.0   NaN  178100
3      NaN   NaN  140000

1、处理缺失值(删除法)

      “NaN”项代表缺失值。 为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。 在这里,我们将考虑删除法。

1.1、代码

# 处理缺失值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 转换 NumRoos 列为数值类型(将 'NA' 转为 NaN)
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'],errors='coerce')# 计算每列的缺失值数量
miss_counts = inputs.isna().sum()
print("\n各列缺失值数量:")
print(miss_counts)# 找出缺失值最多的列
if not miss_counts.empty:max_miss = miss_counts.max()  # 计算最大缺失值数量,结果为3(Alley列有3个缺失值print(max_miss)clos_drop = miss_counts[miss_counts ==max_miss].index.tolist() #筛选出缺失值数量等于最大值的列,miss_counts == max_miss 返回布尔 Seriesinputs = inputs.drop(columns=clos_drop)  #删除筛选出的列print(f"\n已删除缺失值最多的列: {clos_drop}")# 用均值填充 NumRoos 列的缺失值
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())print("\n处理后的数据:")
print(inputs)

代码解析如下

1. 数据分割:提取输入特征和输出标签
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]

inputs:提取数据的前两列(索引 0 和 1)作为特征(NumRoos和Alley)。
outputs:提取第三列(索引 2)作为目标变量(Price)。
2. 将NumRoos列转换为数值类型
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'], errors='coerce')

pd.to_numeric(..., errors='coerce'):将字符串类型的数值转换为数字,无法转换的(如NA)会被转为NaN(缺失值)。
3. 计算每列的缺失值数量
miss_counts = inputs.isna().sum()
print("\n各列缺失值数量:")
print(miss_counts)
inputs.isna():返回一个布尔型 DataFrame,标记每个位置是否为缺失值。
.sum():统计每列的True(缺失值)数量。

#筛选出缺失值数量等于最大值的列

clos_drop = miss_counts[miss_counts == max_miss].index.tolist()

这行代码主要做了三件事:筛选、提取索引、转换为列表。

1、筛选操作 missing_counts[...]

     miss_counts == max_miss 返回布尔 Series
     miss_counts[...] 筛选出值为True的行(即Alley)。

# 结果:
# NumRoos    False
# Alley       True
# dtype: bool

2、.index 获取列名

筛选结果是一个新的 Series,我们需要它的索引(也就是列名)

# 结果:
# Index(['Alley'], dtype='object')

3、.tolist() 转换为列表

.index.tolist() 将列名转为列表 ['Alley']。

为什么要转换为列表?

你可能会问:为什么不直接用索引对象,而非要转成列表呢?这主要是为了兼容drop()方法。drop()方法的columns参数可以接受列名列表或索引对象,但列表更灵活,方便后续处理。

关键细节总结
1、缺失值处理策略:
优先删除缺失比例最高的列(Alley列缺失率 75%)。
对剩余列(NumRoos)用均值填充。
2、数据类型转换:
pd.to_numeric(..., errors='coerce') 是处理含缺失值的数值列的常用方法。
3、边缘情况处理:
当有多个列缺失值数量相同时(如两列均有 3 个缺失值),会同时删除这些列。
if not miss_counts.empty 确保无缺失值时不会报错。

# 用均值填充 NumRoos 列的缺失值

inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())

inputs['NumRoos'].mean():计算NumRoos列的均值(结果为 3.0,因为有效数值为 2 和 4)。
.fillna(...):将NumRoos列的缺失值(NaN)填充为均值 3.0。

1.2、执行结果

2、转换为张量格式

现在inputsoutputs中的所有条目都是数值类型,它们可以转换为张量格式。

2.1、代码

import torch
print("\n转换成张量数据:")
x = torch.tensor(inputs.to_numpy(dtype=float))
print(x)
y = torch.tensor(outputs.to_numpy(dtype=float))
print(y)

2.2、执行结果

  • pandas软件包是Python中常用的数据分析工具中,pandas可以与张量兼容。

  • pandas处理缺失的数据时,我们可根据情况选择用插值法和删除法。

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

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

相关文章

LeetCode 2297. 跳跃游戏 VIII(中等)

题目描述 给定一个长度为 n 的下标从 0 开始的整数数组 nums。初始位置为下标 0。当 i < j 时&#xff0c;你可以从下标 i 跳转到下标 j: 对于在 i < k < j 范围内的所有下标 k 有 nums[i] < nums[j] 和 nums[k] < nums[i] , 或者对于在 i < k < j 范围…

【前端】缓存相关

本知识页参考&#xff1a;https://zhuanlan.zhihu.com/p/586060532 1. 概述 1.1 应用场景 静态资源 场景&#xff1a;图片、CSS、JS 文件等静态资源实现&#xff1a;使用 HTTP 缓存控制头&#xff0c;或者利用 CDN 进行边缘缓存 数据缓存 场景&#xff1a;请求的返回结果实现…

猎板硬金镀层厚度:高频通信领域的性能分水岭

在 5G 基站、毫米波雷达等高频场景中&#xff0c;硬金镀层厚度的选择直接决定了 PCB 的信号完整性与长期可靠性。猎板硬金工艺&#xff1a; 1.8μm 金层搭配罗杰斯 4350B 基材的解决方案&#xff0c;在 10GHz 频段实现插入损耗&#xff1c;0.15dB/cm&#xff0c;较常规工艺降低…

第35次CCF计算机软件能力认证-5-木板切割

原题链接&#xff1a; TUOJ 我自己写的35分正确但严重超时的代码 #include <bits/stdc.h> using namespace std; int main() {int n, m, k;cin >> n >> m >> k;vector<unordered_map<int, int>> mp(2);int y;for (int i 1; i < n; …

【蓝桥杯】包子凑数

包子凑数 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 NN 种蒸笼&#xff0c;其中第 ii 种蒸笼恰好能放 AiAi​ 个包子。每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买 XX 个包子&#xff0c;卖包子的大叔就会迅速选出若干…

pikachu通关教程-目录遍历漏洞(../../)

目录遍历漏洞也可以叫做信息泄露漏洞、非授权文件包含漏洞等. 原理:目录遍历漏洞的原理比较简单&#xff0c;就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符&#xff0c;导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。 这里的目录跳转符可以是../…

[概率论基本概念4]什么是无偏估计

关键词&#xff1a;Unbiased Estimation 一、说明 对于无偏和有偏估计&#xff0c;需要了解其叙事背景&#xff0c;是指整体和抽样的关系&#xff0c;也就是说整体的叙事是从理论角度的&#xff0c;而估计器原理是从实践角度说事&#xff1b;为了表明概率理论&#xff08;不可…

面试题——计算机网络:HTTP和HTTPS的区别?

HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;作为互联网上应用最广泛的网络通信协议&#xff0c;HTTP是基于TCP/IP协议族的应用层协议。它采用标准的请求-响应模式进行通信&#xff0c;通过简洁的报文格式&#xff08;包含请求行、请求头、请求体等&a…

uni-app学习笔记十九--pages.json全局样式globalStyle设置

pages.json 页面路由 pages.json 文件用来对 uni-app 进行全局配置&#xff0c;决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。 导航栏高度为 44px (不含状态栏)&#xff0c;tabBar 高度为 50px (不含安全区)。 它类似微信小程序中app.json的页面管理部…

SQL思路解析:窗口滑动的应用

目录 &#x1f3af; 问题目标 第一步&#xff1a;从数据中我们能直接得到什么&#xff1f; 第二步&#xff1a;我们想要的“7天窗口”长什么样&#xff1f; 第三步&#xff1a;SQL 怎么表达“某一天的前六天”&#xff1f; &#x1f50d;JOIN 比窗口函数更灵活 第四步&am…

解决MyBatis参数绑定中参数名不一致导致的错误问题

前言 作为一名Java开发者&#xff0c;我在实际项目中曾多次遇到MyBatis参数绑定的问题。其中最常见的一种情况是&#xff1a;在Mapper接口中定义的参数名与XML映射文件中的占位符名称不一致&#xff0c;导致运行时抛出Parameter xxx not found类异常。这类问题看似简单&#x…

黑马程序员TypeScript课程笔记—类型兼容性篇

类型兼容性的说明 因为传入的时候只有一个参数 对象之间的类型兼容性 接口之间的类型兼容性 函数之间的类型兼容性&#xff08;函数参数个数&#xff09; 和对象的兼容性正好相反 函数之间的类型兼容性&#xff08;函数参数类型&#xff09; 函数参数的兼容性就不要从接口角度…

智能电视的操作系统可能具备哪些优势

丰富的应用资源&#xff1a; 操作系统内置了应用商店&#xff0c;提供了丰富的应用资源&#xff0c;涵盖视频、游戏、教育等多个领域&#xff0c;满足不同用户的多样化需求。用户可以轻松下载并安装所需的应用&#xff0c;享受更多元化的娱乐和学习体验。 流畅的操作体验&…

Xget 正式发布:您的高性能、安全下载加速工具!

您可以通过 star 我固定的 GitHub 存储库来支持我&#xff0c;谢谢&#xff01;以下是我的一些 GitHub 存储库&#xff0c;很有可能对您有用&#xff1a; tzst Xget Prompt Library 原文 URL&#xff1a;https://blog.xi-xu.me/2025/06/02/xget-launch-high-performance-sec…

精美的软件下载页面HTML源码:现代UI与动画效果的完美结合

精美的软件下载页面HTML源码&#xff1a;现代UI与动画效果的完美结合 在数字化产品推广中&#xff0c;一个设计精良的下载页面不仅能提升品牌专业度&#xff0c;还能显著提高用户转化率。本文介绍的精美软件下载页面HTML源码&#xff0c;通过现代化UI设计与丰富的动画效果&…

麒麟v10+信创x86处理器离线搭建k8s集群完整过程

前言 最近为某客户搭建内网的信创环境下的x8s集群&#xff0c;走了一些弯路&#xff0c;客户提供的环境完全与互联网分离&#xff0c;通过yum、apt这些直接拉依赖就别想了&#xff0c;用的操作系统和cpu都是国产版本&#xff0c;好在仍然是x86的&#xff0c;不是其他架构&…

Pycharm的使用技巧总结

目录 一、高效便捷的快捷键 二、界面汉化处理 1.设置 2.插件 3.汉化插件安装 三、修改字体大小、颜色 1.选择文件-设置 2.选择编辑器-配色方案-python 3.修改注释行颜色 4.修改编辑器字体颜色 一、高效便捷的快捷键 序号快捷键功能场景效果1Ctrl /快速注释/取消注释…

安全编码规范与标准:对比与分析及应用案例

在软件开发领域&#xff0c;尤其是涉及安全关键系统的开发中&#xff0c;遵循编码规范和标准是确保软件质量和安全性的重要手段。除了CERT C、CERT Java和MISRA外&#xff0c;还有其他多个与安全相关的编码规范和标准&#xff0c;以下是一些主要标准的对比说明&#xff1a; 一…

FFmpeg学习笔记

1. 播放器的架构 2. 播放器的渲染流程 3. ffmpeg下载与安装 3.0 查看PC是否已经安装了ffmpeg ffmpeg 3.1 下载 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解压 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …

大宽带怎么做

我有10个G的宽带资源&#xff0c;怎样运行P2P才能将收益巨大化&#xff0c;主要有以下几种方式&#xff1a; 1.多设备汇聚模式&#xff1a;使用多台支持千兆网络的服务器或专用PCDN设备&#xff08;如N1盒子&#xff09;&#xff0c;将10条宽带分别接入不同设备&#xff0c;通过…