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

【pandas百炼成钢】数据预览与预处理

知识目录

  • 前言
  • 一、数据查看
      • 1 - 查看数据维度
      • 2 - 随机查看5条数据
      • 3 - 查看数据前后5行
      • 4 - 查看数据基本信息
      • 5 - 查看数据统计信息|数值
      • 6 - 查看数据统计信息|非数值
      • 7 - 查看数据统计信息|整体
  • 二、缺失值处理
      • 8 - 计算缺失值|总计
      • 9 - 计算缺失值|分列
      • 10 - 查看缺失值
      • 11- 高亮缺失值
      • 12 - 删除缺失值
      • 13 - 缺失值补全|整体填充
      • 14 - 缺失值补全|向上填充
      • 15 - 缺失值补全|整体均值填充
      • 16 - 缺失值补全|上下均值填充
      • 17 - 缺失值补全|匹配填充
  • 三、重复值处理
      • 18 - 查找重复值
      • 19 - 查找重复值|根据某列
      • 20 - 删除重复值
  • 结语

前言

  • 为什么需要数据预览与预处理?

在真实世界中,数据通常是不完整的(缺少某些感兴趣的属性值)、不一致的(包含代码或者名称的差异)、极易受到噪声(错误或异常值)的侵扰的。

就像一个大厨现在要做美味的蒸鱼,如果不将鱼进行去鳞等处理,一定做不成我们口中美味的鱼。

在拿到数据第一步当然是对数据做一个大概的浏览,以及对缺失值重复值进行相关处理。本小节就将练习这部分的基本操作。

注意

  • 1.每一种操作都可能对应一种或多种解法,文章里的不一定是最优的。

  • 2.为了尽可能多的介绍不同方法,因此文章中部分操作不是必须的。

一、数据查看

首先进行导入必要的包,然后加载数据文件。(数据文件获取链接:「movie_top_250.xlsx」)

import numpy as np
import pandas as pd
df = pd.read_excel("./data/movie_top_250.xlsx")

1 - 查看数据维度

查看数据行列,对数据量进行初步掌握

df.shape

2 - 随机查看5条数据

法一:使用 take() 函数结合 random 库

# 生成从0-262之间的5个不重复随机数,replace=False是关键
n = np.random.choice(262,5,replace=False)
# 使用 take 函数实现
df.take(n)

法二:使用 sample() 函数实现随机抽样

df.sample(5)

补充:三种抽样方式

有放回抽样

df.take(np.random.randint(0,4,size=5))

无放回抽样

df.take(np.random.permutation([0,1,2,3,4])) # 随机交换

随机抽样

df.sample(n) # n是抽样数量

3 - 查看数据前后5行

# 查看数据前5行
df.head()
# 查看数据后5行
df.tail()

4 - 查看数据基本信息

看看数据列名,非空行数,数据类型,内存使用情况等

df.info()

5 - 查看数据统计信息|数值

查看 数值型 列的统计信息,计数、均值、最值、方差等

# describe() 函数默认对数值型列进行计算统计信息、均值、最值和百分值。
df.describe()

更直观的查看,保留两位小数,然后转置:

df.describe().round(2).T

6 - 查看数据统计信息|非数值

查看 非数值型 列的出现个数,多少种不同值,出现次数最高的值,出现频次

df.describe(include=['O'])

7 - 查看数据统计信息|整体

查看 全部 列的统计信息

df.describe(include='all')

查看指定列的统计信息

df['上映年份'].describe()

二、缺失值处理

8 - 计算缺失值|总计

查看总共有多少个缺失值

df.isnull().sum().sum()

9 - 计算缺失值|分列

查看每列有多少缺失值

df.isnull().sum()

10 - 查看缺失值

为了后面更方便的处理缺失值,现在先看看全部缺失值所在的行

法一:使用 isnull() 函数

cond = df.isnull().any(axis = 1)
df[cond]

法二:使用 notnull() 函数

cond = df.notnull().all(axis = 1)
df[~cond]

11- 高亮缺失值

很明显,虽然上一题找到了全部缺失值所在的行,但是看起来不太直观,

现在,将缺失值进行高亮进一步查看

# 高亮显示null
df[cond].style.highlight_null()
# 高亮显示null,并且设置颜色
df[cond].style.highlight_null(null_color='#E36C07')

12 - 删除缺失值

处理缺失值最简单的方式,当然是将缺失值出现的行全部删掉 ~

现在,将缺失值出现的行全部删掉

df.dropna(inplace=False)

13 - 缺失值补全|整体填充

除了删除缺失值最省事之外,也可以将全部缺失值替换为一个 固定的值/文本

现在,将全部缺失值替换为 #

df = df.fillna('#')

14 - 缺失值补全|向上填充

从上一小节的查看数据中,不难发现整理数据是按照评分进行降序排列的,

因此对于评分列的缺失值处理,我们可以用上一个电影的评分进行填充。

现在将评分列的缺失值,替换为上一个电影的评分

df['评分'] = df['评分'].fillna(method='ffill')

15 - 缺失值补全|整体均值填充

对于评价人数列的缺失值处理,我们可以使用整列的均值进行填充

现在,将评价人数列的缺失值,用整列的均值进行填充

df['评分'] = df['评分'].mean()
df['评分'] = df['评分'].fillna(df['评分'].mean())

16 - 缺失值补全|上下均值填充

除了可以使用整列的均值进行填充,也可以使用缺失值位置的上下均值进行填充、

现在,将评价人数列的缺失值,用上下数字的均值进行填充

df['评价人数'] = df['评价人数'].fillna(df['评价人数'].interpolate())

17 - 缺失值补全|匹配填充

除了利用均值填充,有时还需要根据另一列的值进行匹配填充。

现在填充 “语言” 列的缺失值,要求根据 “国家/地区” 列的值进行填充。

例如 《海上钢琴师》国家/地区为 意大利,根据其他意大利国家对应的语言来看,应填充为 意大利语。

# 根据国家/地区分组,然后用后面的值填充
df['语言'] = df.groupby('国家/地区')['语言'].bfill()

三、重复值处理

18 - 查找重复值

将全部重复值所在的行筛选出来

df[df.duplicated(keep='first')]

19 - 查找重复值|根据某列

上面是所有列完全重复的情况,但有时我们只需要根据某列查找重复值

df[df['片名'].duplicated()]

20 - 删除重复值

删除全部的重复值,但保留第一次出现的值

法一

df = df[~df.duplicated()]

法二

df = df.drop_duplicates()

删除全部的重复值,但保留最后一次出现的值

df = df[~df.duplicated(keep='last')]

结语

以上就是本期要分享的全部内容了!我们下期再见 ~ ✨

⭐️如果有不懂的地方,欢迎大家和我一起探讨 ~

我是向阳花花花花,数据科学路上,与你同行 ⭐️

相关文章:

【pandas百炼成钢】数据预览与预处理

知识目录 前言一、数据查看1 - 查看数据维度2 - 随机查看5条数据3 - 查看数据前后5行4 - 查看数据基本信息5 - 查看数据统计信息|数值6 - 查看数据统计信息|非数值7 - 查看数据统计信息|整体 二、缺失值处理8 - 计算缺失值|总计9 …...

怎么查到企业的供应商和客户?

企业的供应商和客户是什么? 其实不需要过多介绍,我们对供应商和客户都有自己的理解,供应商就是负责企业产品的供应,企业从供应商那里买材料进行加工得到的产品,卖给客户。 官方来说供应商是向企业和竞争对手提供各种…...

智能物流千人俱乐部---行业必备神器

千人俱乐部前两天正式推出了。 智能物流千人俱乐部详情 很多行业内的甲方和乙方的朋友过来问,这个千人俱乐部到底怎么玩?今天再来解释一下。 1、为什么搞这个千人俱乐部? 一个原因是:研习社天天都有甲方粉丝让推荐设备厂家&#x…...

uniapp uview文件上传的文件不是文件流,该如何处理?用了uni.chooseImage预览功能要如何做

在使用uniapp开发,运用的ui是用uview,这边需要做一个身份认证,如下图 使用的是uview的u-upload组件,可是这个组件传给后端的不是文件流 后端接口需要的是文件流格式,后面使用了uniapp的选择图片或者拍照的api&#x…...

pktgen-dpdk arm编译问题 “Platform must be built with RTE_FORCE_INTRINSICS“

编译报错 /usr/include/rte_atomic_32.h:9:4: error: #error Platform must be built with RTE_FORCE_INTRINSICS解决办法: 我是在 arm架构服务器上编译出现这个,要定义 RTE_FORCE_INTRINSICS 在meson.build中 增加gcc编译参数 add_project_arguments(…...

用html+javascript打造公文一键排版系统12:删除附件说明中“附件:”里的空格

如果我们在输入附件说明时在“附件&#xff1a;”之间加入空格&#xff0c;那么排版时就要删除这些空格。 因为string对象replace()支持正则表达式&#xff0c;于是考虑用replace()来完成。 写了一段只有一个多余空格的代码来测试&#xff1a; <!DOCTYPE HTML> <HT…...

容器技术:Docker搭建(通俗易懂)

目录 Docker搭建环境准备Docker安装1、查看服务器是否安装Docker2、卸载Docker3、安装Dokcer依赖环境4、配置Docker国内阿里云镜像5、安装Docker6、查看Docker信息7、配置阿里云镜像加速8、镜像安装10、运行实例11、查看实例状态12、测试 Docker命令集合 Docker搭建 环境准备 …...

Day 16 C++ 友元(friend)

目录 什么是友元&#xff08;friend&#xff09; 友元的三种实现 全局函数做友元 类做友元 成员函数做友元 什么是友元&#xff08;friend&#xff09; 友元是一种访问控制的机制&#xff0c;它允许一个类或函数访问另一个类的私有成员。通过友元关系&#xff0c;可以在需要…...

步进电机1

引脚说明&#xff1a; VCC&#xff1a;电源输入口 DC:9-42VDC&#xff1a;电源的取值范围 AB组&#xff1a;用于连接电机的四条线 STEP&PUL&#xff1a;脉冲信号接口&#xff0c;用于控制速度。无细分的情况下一个脉冲步进电机走一步。 DIR&#xff1a;方向信号接口&#x…...

PHP-简单项目引起的大麻烦--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页小插曲小插曲完了么&#xff1f;必要的项目知识PHPThinkPHPThinkPHP的MVCThinkTemplateThinkPHP 6和ThinkPHP 5 phpStudy 设置导数据库展示页面数据库表结构项目目录如图…...

Excel如何把两列互换

第一步&#xff1a;选择一列 打开excel&#xff0c;选中一列后将鼠标放在列后&#xff0c;让箭头变成十字方向。 第二步&#xff1a;选择Shift键 按住键盘上的Shift键&#xff0c;将列往后移动变成图示样。 第三步&#xff1a;选择互换 完成上述操作后&#xff0c;松开鼠标两…...

Java基础面试题2

Java基础面试题 一、IO和多线程专题 1.介绍下进程和线程的关系 进程&#xff1a;一个独立的正在执行的程序 线程&#xff1a;一个进程的最基本的执行单位&#xff0c;执行路径 多进程&#xff1a;在操作系统中&#xff0c;同时运行多个程序 多进程的好处&#xff1a;可以充…...

Typescript 第八章 异步编程,并行和并发(JavaScript事件循环,异步流,多线程类型安全)

Typescript第八章 异步编程&#xff0c;并发和并行 异步API&#xff0c;比如说回调&#xff0c;promise和流。 JavaScript引擎在一个线路中多路复用任务&#xff0c;而其他任务则处于空闲状态。这种事件循环是JavaScript引擎的标准线程模型。 多路复用是指在一个线程中同时处…...

c++ 打印当前时间(精确到毫秒)

打印时间精确到毫秒好实现&#xff0c;但是那种对用户可读性不好&#xff0c;更适合开头记一次结尾记一次&#xff0c;打印中间减出来的程序运行时间。 但是因为一些情况&#xff0c;我开多线程开的不方便打印结束时间&#xff0c;同事跟我说那你把开始时间打印一下&#xff0…...

mapstruct 错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误

问题描述 在使用 mapstruct 的过程中遇到错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误 问题解决 maven clean, 然后 maven install Build -> Rebuild Project 执行 maven install 时, 如果报错 找不到 xxx 类, 但 ctrl鼠标左键 发现可以点进去这个类, 那…...

SpringBoot+AOP+Redission实战分布式锁

文章目录 前言一、Redission是什么&#xff1f;二、使用场景三、代码实战1.项目结构2.类图3.maven依赖4.yml5.config6.annotation7.aop8.model9.service 四、单元测试总结 前言 在集群环境下非单体应用存在的问题&#xff1a;JVM锁只能控制本地资源的访问&#xff0c;无法控制…...

Linux系统---进程概念

文章目录 冯诺依曼体系结构操作系统(OS)进程的理解 进程状态 进程优先级 环境变量 进程地址空间 Linux2.6内核进程调度队列 一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 如图…...

ELK常用语法和线上问题排查

ELK常用语法及线上问题排查 速查问题 1.全文搜索 在搜索栏输入目标值&#xff0c;查询所有字段中包含该值的文档 案例&#xff1a;用户反馈了一串id或者其他同事给了一个jobid&#xff0c;还没有头绪怎么查的时候&#xff0c;直接全局搜索 jobid 2.字段 限定字段全文搜索…...

session-cookies 三个缓存 localStorage、sessionStorage、Cookies。

session-cookies session-cookies This plugin is used to summarize the browser’s three caches localStorage, sessionStorage, Cookies.The plugin is designed to be quick and easy to use. Below is a summary of some apis. session-cookies 这个插件是用来汇总浏览…...

LA@行列式性质

文章目录 行列式性质&#x1f388;转置不变性质交换性质多重交换移动(抽出插入)&#x1f47a; 因子提取性质拆和性质倍加性质 手算行列式的主要方法原理:任何行列式都可以化为三角行列式 行列式性质&#x1f388; 设行列式 ∣ A ∣ d e t ( a i j ) |A|\mathrm{det}(a_{ij}) …...

2007-2020 年税调与关键数字技术专利数据匹配结果

2007&#xff5e;2020 年税调与关键数字技术专利数据匹配结果 了避免数据过于庞大的问题&#xff0c;使用了三组文件存放这份数据。 第一组是税调与关键数字技术专利数据匹配结果&#xff0c;按年拆分&#xff0c;里面有newipzlid 变量&#xff08;每个 newipzlid 对应一个专…...

74HC595芯片组成测试工具_流水灯

74HC595芯片组成测试工具_流水灯PCB布局部分芯片手册说明芯片工作原理74HC595级联说明电路原理图部分代码部分595驱动核心部分全部代码使用环境是由于我公司生产的运动控制卡需要连接光电传感器&#xff0c;PCBA出来后需要检测&#xff0c;运动控制卡内部是由光电隔离再连接到单…...

SDMatte性能基准测试报告:不同硬件配置下的吞吐量与延迟

SDMatte性能基准测试报告&#xff1a;不同硬件配置下的吞吐量与延迟 1. 测试背景与目的 SDMatte作为一款专业的图像抠图工具&#xff0c;其性能表现直接影响实际业务中的处理效率。本次测试旨在为开发者提供客观的性能数据参考&#xff0c;帮助用户根据业务需求和预算选择最适…...

Blender 3MF插件:从建模到3D打印的终极桥梁

Blender 3MF插件&#xff1a;从建模到3D打印的终极桥梁 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印技术日益普及的今天&#xff0c;你是否曾为文件格式转换的…...

落子珠江,新址启航|安托广州子公司盛大开业

4月10日&#xff0c;安托广州子公司正式揭牌。与其说是一场开业仪式&#xff0c;不如说是安托在华南地区的一次技术扎根。广东地区作为我国制造大省和国家数字经济创新发展试验区&#xff0c;正加速向“数智化韧性”跃迁。在此背景下&#xff0c;安托选择落子广州&#xff0c;不…...

32TOPS算力+工业级宽温适配!SE110S-WA32边缘计算微服务器全解析

随着工业智能化、AIoT产业的深度发展&#xff0c;边缘侧的算力需求迎来爆发式增长。在智慧交通、水利、电力、工地等工业场景中&#xff0c;边缘设备不仅需要强劲的AI推理能力&#xff0c;更要面对高低温、多尘、强电磁干扰、无人值守等严苛的运行环境&#xff0c;同时对功耗、…...

交期延误?轻流 AI 无代码给出新解法

交期延误&#xff1f;轻流 AI 无代码给出新解法早上 8 点&#xff0c;生产例会上&#xff0c;生产经理再次被问到&#xff1a;"昨天的计划为什么又没完成&#xff1f;"这已经是本周第三次了。计划赶不上变化、进度不透明、延期率高——这些问题像三座大山&#xff0c…...

GD32L23X深度睡眠模式实战:从理论到15uA超低功耗的实现

1. GD32L23X深度睡眠模式的核心价值 对于需要电池供电的物联网终端设备来说&#xff0c;功耗就是生命线。我去年做过一个环境监测传感器项目&#xff0c;使用纽扣电池供电&#xff0c;客户要求至少工作3年不换电池。当时测试了市面上多款MCU&#xff0c;最终GD32L23X的Deep-Sle…...

3步攻克3D协作难题:在线3D查看器如何重塑你的设计评审流程

3步攻克3D协作难题&#xff1a;在线3D查看器如何重塑你的设计评审流程 【免费下载链接】Online3DViewer A solution to visualize and explore 3D models in your browser. 项目地址: https://gitcode.com/gh_mirrors/on/Online3DViewer 你是否曾为团队协作中的3D模型共…...

三十五岁零基础转行成为AI大模型开发者怎么样呢?转行ai大模型

以下从3个方面帮大家分析&#xff1a; 35岁转行会不会太晚&#xff1f;零基础学习AI大模型开发能不能学会&#xff1f;AI大模型开发行业前景如何&#xff0c;学完后能不能找到好工作&#xff1f; 一、35岁转行会不会太晚&#xff1f; 35岁正处于人生的黄金时期&#xff0c;拥有…...