数据分析基础之《pandas(6)—高级处理》

一、缺失值处理

1、如何处理nan
两种思路:
(1)如果样本量很大,可以删除含有缺失值的样本
(2)如果要珍惜每一个样本,可以替换/插补(计算平均值或中位数)

2、判断数据是否为nan
(1)pd.isnull(df)
返回一堆布尔值,False不是缺失值,True是缺失值

(2)pd.notnull(df)
返回一堆布尔值,True不是缺失值,False是缺失值

3、缺失值处理方式
存在缺失值nan,并且是np.nan
(1)dropna(axis='rows', inplace=False)
删除存在缺失值
默认不替换原数据,返回新数据,inplace=True修改原数据

(2)fillna(value, inplace=True)
替换缺失值
说明:
value:替换成的值
inplace:
    True:会修改原数据
    False:不替换修改原数据,生成新的对象

(3)缺失值不是nan,是其他标记的
后面再说

二、缺失值处理实例

1、电影数据文件获取

import pandas as pd

movie = pd.read_csv("./IMDB-Movie-Data.csv")

movie

import numpy as np

# 判断是否存在缺失值
np.any(pd.isnull(movie))

np.all(pd.notnull(movie))

# 用dataframe的any方法
pd.isnull(movie).any() # 返回每一个字段是否有缺失值

# 用dataframe的all方法
pd.notnull(movie).all()

# 用dataframe的isnull方法
movie.isnull().sum()

2、删除含有缺失值的样本

# 缺失值处理
# 删除含有缺失值的样本
data1 = movie.dropna()

data1.isnull().sum()

3、替换缺失值

# 含有缺失值的字段
# Revenue (Millions)
# Metascore

movie["Revenue (Millions)"].fillna(movie["Revenue (Millions)"].mean(), inplace=True)
movie["Metascore"].fillna(movie["Metascore"].mean(), inplace=True)

movie.isnull().sum()

4、不是缺失值nan,是其他标记的
比如是?

思路:
(1)进行替换,将?替换成np.nan
(2)处理np.nan缺失值的步骤来
(3)replace(to_replace=, value=)
说明:
to_replace:替换前的值
value:替换后的值

# 不是缺失值nan,是其他标记的
name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv("./breast-cancer-wisconsin.data", names=name)

data

data_new = data.replace(to_replace="?", value=np.nan)

data_new

data_new.dropna(inplace=True)

data_new.isnull().sum()

三、数据离散化

1、什么是数据离散化
我们用数值表示类别,计算机它只知道数值,会认为数值大的有什么优势

连续属性的离散化就是将连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数、值代表落在每个子区间中的属性值,避免了由于数值差异导致类别的平衡

例子1:
  男  女  年龄
A  1   0   23
B  0   1   30
C  1   0   18

例子2:
原始的升高数据:165、174、160、180、159、163、192、184、
假设按照身高分几个区间段:(150,165],(166,180],(180,195]
这样我们将数据分到了三个区间段,我们可以对应的标记为矮、中、高三个类别,最终要处理成一个“哑变量”矩阵

我们把这种数据编码称为one-hot编码,也叫哑变量

2、为什么要数据离散化
连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数,离散化方法经常作为数据挖掘的工具

3、如何实现数据离散化
流程:
(1)对数据进行分组
(2)对分好组的数据求哑变量

4、对数据分组方法
pd.qcut(data, bins)
自动分组
说明:
data:要分组的数据
bins:要分的组数
返回值:分好组的Series

pd.cut(data, bins)
自定义分组
说明:
data:要分组的数据
bins:自定义的区间,以列表的形式[]传进来
返回值:分好组的Series

series.value_counts()
统计分组次数
对数据进行分组一般会与value_counts搭配使用,统计每组的个数

5、对分好组的数据求哑变量(one-hot编码)
pd.get_dummies(data, prefix=None)
说明:
data:array-like、Series、DataFrame
prefix:分组名字

6、小案例

# 数据的离散化
# 准备数据
data = pd.Series([165,174,160,180,159,163,192,184], index=['No1:165', 'No2:174','No3:160', 'No4:180', 'No5:159', 'No6:163', 'No7:192', 'No8:184'])

data

# 自动分组
sr = pd.qcut(data, 3)

sr

# 转换成one-hot编码
pd.get_dummies(sr, prefix="height")

# 统计每个区间有多少样本
sr.value_counts()

# 自定义分组
bins = [150, 165, 180, 195]
cut = pd.cut(data, bins)

cut

pd.get_dummies(cut, prefix="身高")

cut.value_counts()

7、one-hot编码占内存,然后再用稀疏矩阵来减少内存。达到提取特征的目的

8、案例:股票的涨跌幅离散化

# 股票涨跌幅离散化
# 1、读取股票的数据
stock = pd.read_csv("./stock_day.csv")

p_change = stock["p_change"]

p_change

# 自动分组
sr = pd.qcut(p_change, 10)

sr.value_counts()

# 离散化
pd.get_dummies(sr, prefix="涨跌幅")

# 自定义分组
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
sr = pd.cut(p_change, bins)

sr.value_counts()

# 离散化
stock_change = pd.get_dummies(sr, prefix="rise")
stock_change

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

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

相关文章

springboot178智能学习平台系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

【Make编译控制 06】CMake初步使用

目录 一、概述与安装 二、编译源文件 三、无关文件管理 一、概述与安装 CMake是一个跨平台的项目构建工具,相比于Makefile,CMake更加高级,因为CMake代码在执行的时候是会先翻译生成Makefile文件,再调用Makefile文件完成项目构…

【Linux】学习-基础IO—上

Linux基础IO—上 复习c语言接口 你真的懂文件吗? 文件的打开与关闭 深入了解文件读与写(C语言级别) 系统文件I/O 我们知道,文件是放在磁盘(硬件)上的,我们用代码访问文件的思路是: 写代码 -> 编译 -> 生成可执行exe …

fast.ai 机器学习笔记(三)

机器学习 1:第 8 课 原文:medium.com/hiromi_suenaga/machine-learning-1-lesson-8-fa1a87064a53 译者:飞龙 协议:CC BY-NC-SA 4.0 来自机器学习课程的个人笔记。随着我继续复习课程以“真正”理解它,这些笔记将继续更…

【北邮鲁鹏老师计算机视觉课程笔记】03 edge 边缘检测

【北邮鲁鹏老师计算机视觉课程笔记】03 1 边缘检测 有几种边缘? ①实体上的边缘 ②深度上的边缘 ③符号的边缘 ④阴影产生的边缘 不同任务关注的边缘不一样 2 边缘的性质 边缘在信号突变的地方 在数学上如何寻找信号突变的地方?导数 用近似的方法 可以…

linux 08 文件查找

02. 第一. alias 第二. locate: locate 找不到最近的文件 更新locate 后

【深度学习每日小知识】卷积神经网络(CNN)

在深度学习领域,卷积神经网络(CNN)彻底改变了视觉分析领域。凭借从图像中提取复杂模式和特征的能力,CNN 已成为图像分类、目标检测和面部识别等任务不可或缺的一部分。本文全面概述了 CNN,探讨了其架构、训练过程、应用…

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…

陪护系统|陪护小程序提升长者护理服务质量的关键

在如今逐渐老龄化的社会中,老年人对更好的护理服务需求不断增加。科技的进步使得陪护小程序系统源码成为提供优质服务的重要途径之一。本文将从运营角度探讨如何优化陪护小程序系统源码,提升长者护理服务的质量。 首先,我们需要对软件的设计和…

MOMENTUM: 1

攻击机 192.168.223.128 目标机 192.168.223.146 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.146 开启了22 80端口 看一下web界面 随便打开看看 发现这里有个参数id,sql尝试无果,发现写入什么,网页显示…

MySQL篇----第十七篇

系列文章目录 文章目录 系列文章目录前言一、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题二、解释 MySQL 外连接、内连接与自连接的区别三、Myql 中的事务回滚机制概述前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

【java】笔记10:类与对象——本章练习

题目1: 代码如下: import java.util.Scanner; public class Input{public static void main(String[]args){Circle cnew Circle();PassObject yuannew PassObject();System.out.println("r""\t""times");yuan.printAreas…

AI大模型学习笔记之四:生成式人工智能(AIGC)是如何工作的?

OpenAI 发布 ChatGPT 已经1年多了,生成式人工智能(AIGC)也已经广为人知,我们常常津津乐道于 ChatGPT 和 Claude 这样的人工智能系统能够神奇地生成文本与我们对话,并且能够记忆上下文情境。 Midjunery和DALLE 这样的AI…

私有化部署一个自己的网盘

效果 安装 1.创建目录 cd /opt mkdir -p kod/{db,site} cd /opt/kod 2.环境文件 vim db.env 内容如下 MYSQL_PASSWORD123456 MYSQL_DATABASEkodbox MYSQL_USERkodbox 3.编写docker-compose.yml vim docker-compose.yml 内容如下 version: 3.5services:db:image: mar…

探索数据可视化:Matplotlib在Python中的高效应用

探索数据可视化:Matplotlib在Python中的高效应用 引言Matplotlib基础安装和配置Matplotlib基础概念绘制简单图表线形图散点图柱状图 图表定制和美化修改颜色、线型和标记添加标题、图例和标签使用样式表和自定义样式 高级图表类型绘制高级图表多图布局和复杂布局交互…

聚观早报 | iOS 17.4正式版将上线;魅族21 Pro或下月发布

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 2月5日消息 iOS 17.4正式版将上线 魅族21 Pro或下月发布 小米MIX Flip细节曝光 OPPO Find X7 Ultra卫星通信版 …

【java】12:封装

面向对象编程三大特征 1.基本介绍 面向对象编程有三大特征:封装、继承和多态。 2.封装介绍 封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作[方法]&am…

Java中处理I/O操作的不同方式:BIO,NIO,AIO

Java中处理I/O操作的不同方式:BIO,NIO,AIO 亲爱的朋友, 在这美好的时刻,愿你感受到生活的温暖和欢乐。愿你的每一天都充满着笑容和满足,无论面对什么挑战都能勇往直前,化解困境。 希望你的心中充…

ubuntu22.04 安装部署04:经常死机,鼠标,键盘无响应

相关文章: ubuntu22.04 安装部署01:禁用内核更新 ubuntu22.04安装部署02:禁用显卡更新 ubuntu22.04安装部署03: 设置root密码 一、现象说明 1. 开机一小时后,突然之间网络掉线,鼠标、键盘无反应。 2.…

Makefile编译原理 make 中的路径搜索_2

一.make中的路径搜索 VPATH变量和vpath关键字同时指定搜索路径。 实验1 VPATH 和 vpath 同时指定搜索路径 mhrubuntu:~/work/makefile1/18$ tree . ├── inc │ └── func.h ├── main.c ├── makefile ├── src1 │ └── func.c └── src2 └── func.c mak…