机器学习库:pandas

  

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之 

文章目录

写在开头

基本数据格式

DataFrame

数据选取

iloc

数据描述

head

describe

数据合并

merge

数据删除

drop

drop删除多列

处理缺失值

查找缺失值

填充缺失值


写在开头

在机器学习中,我们除了关注模型的性能外,数据处理更是必不可少,本文将介绍一个重要的数据处理库pandas,将随着我的学习过程不断增加内容

基本数据格式

pandas提供了两种数据类型:Series和DataFrame,在机器学习中主要使用DataFrame,我们也重点介绍这个

DataFrame

dataframe是一个二维的数据结构,常用来处理表格数据

使用代码

import pandas as pd


a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)
print(p)

dataframe是一个二维表格,包含行与列的信息

数据选取

iloc

我觉得pandas里面选取数据的一个很通用的方法是iloc

pd.iloc[行序号, 列序号]

iloc的参数用逗号隔开,前面是行序号,后面是列序号

import pandas as pd


a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)
print(p)
print("iloc示例:")
print(p.iloc[0, 0])
print(p.iloc[2, 0])

iloc也支持切片操作

import pandas as pd


a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)
print(p)
print("iloc切片:")
print(p.iloc[0:4, 0])

这会打印第一列的0到3行

数据描述

head可以查看指定前几行的值,这方便在处理一些大数据集时,我们可以只加载几列来了解数据集而不必加载整个数据集

import pandas as pd


a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)

print(p.head(2))

我们这里指定显示前2行,不指定默认值是前5行 

describe

describe方法可以描述表格所有列的数字特征,中位数,平均值等

import pandas as pd


a = {"a": [1, 3, 5, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)

print(p.describe())

不会处理字符串值哦

数据合并

设想一下,我们有一个员工姓名和工号的表格,我们还有一个员工姓名和性别的表格,我们想把这两个表通过员工姓名合在一起,怎么实现呢

merge

merge函数可以指定以某一列来合并表格

import pandas as pd


# 创建两个示例 DataFrame
df1 = pd.DataFrame({'name': ['A', 'B', 'C', 'D'],
                    'number': [12335, 23212, 33432, 44678]})

df2 = pd.DataFrame({'name': ['A', 'B', 'C', 'D'],
                    'sex': ['F', 'F', 'M', 'F']})

# 使用 merge 合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='name')
print(merged_df)

on='name'指定函数以name这一列来合并表格 

数据删除

在机器学习竞赛时,有时我们想删除一些无用特征,怎么实现删除无用特征的列呢?

drop

以上一节的员工表格为例,增添以下代码

merged_df = merged_df.drop(columns="number")
print(merged_df)

可以看到number列被删除了

drop删除多列

要想删除多列,仅需要将列的名字放在一个列表里

merged_df = merged_df.drop(columns=["number", "sex"])
print(merged_df)

注意:在使用drop时,如果只写df.drop()是没有用的,你必须像上面两个例子一样,将drop后的df表格赋值给原来的表格。

处理缺失值

查找缺失值

isnull可以查找是否有缺失值,配合sum函数可以统计每一列缺失值的数量

import pandas as pd


a = {"a": [1, 3, np.NAN, 3], "b": [3, 4, 2, 1]}

p = pd.DataFrame(a, index=None)

print(p.isnull().sum())

填充缺失值

因为有些机器学习模型无法处理缺失值,我们必须将缺失值补充好,可以用0填充,也可以用平均值填充,代码如下

# 0填充
print(p.fillna(0))
# 平均值填充
print(p.fillna(p["a"].mean()))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode Hot100 236.二叉树的最近公共祖先

题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节…

基于U-Net的视网膜血管分割(Pytorch完整版)

基于 U-Net 的视网膜血管分割是一种应用深度学习的方法,特别是 U-Net 结构,用于从眼底图像中分割出视网膜血管。U-Net 是一种全卷积神经网络(FCN),通常用于图像分割任务。以下是基于 U-Net 的视网膜血管分割的内容&…

什么是分布式锁?Redis实现分布式锁详解

目录 前言: 分布式系统买票示例 引入redis做分布式锁 引入过期时间 引入校验id 引入lua脚本 过期时间续约问题 redlock算法 小结: 前言: 在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制…

[论文阅读]CBAM——代码实现和讲解

CBAM 论文网址:CBAM 论文代码:CBAM 本文提出了一种卷积块注意力模块(CBAM),它是卷积神经网络(CNN)的一种轻量级、高效的注意力模块。该模块沿着通道和空间两个独立维度依次推导注意力图&#x…

ehr人力资源管理系统(实际项目源码)

eHR人力资源管理系统:功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化,传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具,能够为企业提供高效、准确、实时的人力资源管理…

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF 文章目录 GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHFPretraining 预训练阶段Supervised FineTuning (SFT&#x…

基于51单片机交通灯夜间模式+紧急模式_易懂版_(仿真+代码_报告_讲解)

J029 51单片机交通灯_易懂版__夜间紧急(仿真代码_报告_讲解) 51单片机交通灯_易懂版_ 1 **讲解视频:**2 **功能要求**3 **仿真图:**4 **程序设计:**5 **设计报告**6 **资料清单&&下载链接:****资料下载链接&am…

超好玩C++控制台打飞机小游戏,附源码

我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…

2023年【N1叉车司机】新版试题及N1叉车司机作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 N1叉车司机新版试题参考答案及N1叉车司机考试试题解析是安全生产模拟考试一点通题库老师及N1叉车司机操作证已考过的学员汇总,相对有效帮助N1叉车司机作业考试题库学员顺利通过考试。 1、【多选题】《中华…

Linux系统编程 day05 进程控制

Linux系统编程 day05 进程控制 1. 进程相关概念2. 创建进程3. exec函数族4. 进程回收 1. 进程相关概念 程序就是编译好的二进制文件,在磁盘上,占用磁盘空间。程序是一个静态的概念。进程即使启动了的程序,进程会占用系统资源,如内…

【服务器能干什么】二十分钟搭建一个属于自己的 RSS 服务

如果大家不想自己捣鼓,只是想尝尝鲜,可以在下面留言,我后台帮大家开几个账号玩一玩。 哔哩哔哩【高清版本可以点击去吐槽到 B 站观看】:【VPS服务器到底能干啥】信息爆炸的年代,如何甄别出优质的内容?你可能需要自建一个RSS服务!_哔哩哔哩_bilibili 前言 RSS 服务 市…

MySQL表连接

文章目录 MySQL内外连接1.内连接2.外连接(1)左外连接(2)右外连接 3.简单案例 MySQL内外连接 1.内连接 内连接的SQL如下: SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;说明一下…

2.5 逆矩阵

一、逆矩阵的注释 假设 A A A 是一个方阵,其逆矩阵 A − 1 A^{-1} A−1 与它的大小相同, A − 1 A I A^{-1}AI A−1AI。 A A A 与 A − 1 A^{-1} A−1 会做相反的事情。它们的乘积是单位矩阵 —— 对向量无影响,所以 A − 1 A x x A^{…

QT基础开发笔记

用VS 写QT ,设置exe图标的方法: 选定工程--》右键--》添加---》资源--》 QString 字符串用法总结说明 Qt QString 增、删、改、查、格式化等常用方法总结_qstring 格式化-CSDN博客 总结来说: QString 的 remove有两种用法,&am…

【C++】类和对象(下篇)

这里是目录 构造函数(续)构造函数体赋值初始化列表 explicit关键字隐式类型转换 static成员友元友元函数友元类 内部类匿名对象匿名对象的作用const引用匿名对象 构造函数(续) 构造函数体赋值 在创建对象时,编译器通…

02、Tensorflow实现手写数字识别(数字0-9)

02、Tensorflow实现手写数字识别(数字0-9) 开始学习机器学习啦,已经把吴恩达的课全部刷完了,现在开始熟悉一下复现代码。对这个手写数字实部比较感兴趣,作为入门的素材非常合适。 基于Tensorflow 2.10.0与pycharm 1…

SASS的导入文件详细教程

文章目录 前言导入SASS文件使用SASS部分文件默认变量值嵌套导入原生的CSS导入后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Sass和Less 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努…

电子学会C/C++编程等级考试2022年12月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数组逆序重放 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。输入 输入为两行:第一行数组中元素的个数n(1输出 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。样例输入 …

Linux:docker基础操作(3)

docker的介绍 Linux:Docker的介绍(1)-CSDN博客https://blog.csdn.net/w14768855/article/details/134146721?spm1001.2014.3001.5502 通过yum安装docker Linux:Docker-yum安装(2)-CSDN博客https://blog.…

Mac 最佳使用指南

官方 Mac 使用手册如何在macOS系统安装根证书mac Terminal config proxy 【mac 终端配置代理】iPhone 安装 iOS 17公测版(Public Beta)macOS 最佳命令行客户端:iTermMac 配置与 Linux 互信Mac mini 外接移动硬盘无法写入或者无法显示的解决方法如何在 ma…