python 数据清洗 豆瓣电影_python 数据清洗篇

2023-11-14

前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作,

数据清洗一直是数据分析中极为重要的一个环节。本篇主要演示:python 数据清洗的数据合并、转换、过滤、排序.

数据合并

在pandas中可以通过merge对数据进行合并操作。

import numpy as npimport pandas as pd

data1 = pd.DataFrame({'level':['a','b','c','d'],'numeber':[1,3,5,7]})

data2=pd.DataFrame({'level':['a','b','c','e'], 'numeber':[2,3,6,10]})

print(data1)

结果为:

72e50c714bcfbd9b8e5db71fbcf04565.png

print(data2)

结果为:

cc965cc06b0960ac38cf0ed6138a1f22.png

print(pd.merge(data1,data2))

结果为:

042f2cbccc6277156f2c2b02e7c14a2c.png

可以看到data1和data2中用于相同标签的字段显示,而其他字段则被舍弃,这相当于SQL中做inner join连接操作。

此外还有outer,ringt,left等连接方式,用关键词how的进行表示。

data3 = pd.DataFrame({'level1':['a','b','c','d'], numeber1':[1,3,5,7]})

data4=pd.DataFrame({'level2':['a','b','c','e'], 'numeber2':[2,3,6,10]})

print(pd.merge(data3,data4,left_on='level1',right_on='level2'))

结果为:

77cc34b37207a17fc9476bae358cc5fa.png

两个数据框中如果列名不同的情况下,我们可以通过指定letf_on 和right_on两个参数把数据连接在一起

print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left'))

结果为:

7fe2eec8c0bff9fcbefef4e8b96b6c04.png

其他详细参数说明

e22c246730bf10f8bd6adce3d7aa4c15.png

重叠数据合并

有时候我们会遇到重叠数据需要进行合并处理,此时可以用comebine_first函数。

data3 = pd.DataFrame({'level':['a','b','c','d'],'numeber1':[1,3,5,np.nan]})

data4=pd.DataFrame({'level':['a','b','c','e'],'numeber2':[2,np.nan,6,10]})

print(data3.combine_first(data4))

结果为:

2fde0b02ab1d8c631bf425f6dc063f63.png

可以看到相同标签下的内容优先显示data3的内容,如果一个数据框中的某一个数据是缺失的,此时另外一个数据框中的元素就会补上

这里的用法类似于np.where(isnull(a),b,a)

数据重塑和轴向旋转

这个内容我们在上一篇pandas文章有提到过。数据重塑主要使用reshape函数,旋转主要使用unstack和stack两个函数。

data=pd.DataFrame(np.arange(12).reshape(3,4),columns=['a','b','c','d'],index=['wang','li','zhang'])

print(data)

结果为:

94a8b60746697a58a250fb579dbfe753.png

print(data.unstack())

结果为:

df481803c8359ed999ebcd095ad6a9bf.png

数据转换

删除重复行数据

data=pd.DataFrame({'a':[1,3,3,4],'b':[1,3,3,5]})print(data)

结果为:

b5851171db57ed0a8dd38ca3fbcd75fb.png

print(data.duplicated())

结果为:

48ef5a2945926fdc35d026a87afd160c.png

可以看出第三行是重复第二行的数据所以,显示结果为True

另外用drop_duplicates方法可以去除重复行

print(data.drop_duplicates())

结果为:

17942e56d88811269c6b994f3cc7e090.png

替换值

除了使用我们上一篇文章中提到的fillna的方法外,还可以用replace方法,而且更简单快捷

data=pd.DataFrame({'a':[1,3,3,4],'b':[1,3,3,5]})print(data.replace(1,2))

结果为:

2ef3639dc339b8b23f99dab6311fc70f.png

多个数据一起换

print(data.replace([1,4],np.nan))

8d919fbdae917c7c622b726919604c2d.png

数据分段

data=[11,15,18,20,25,26,27,24]bins=[15,20,25]

print(data)print(pd.cut(data,bins))

结果为:

[11, 15, 18, 20, 25, 26, 27, 24][NaN, NaN, (15, 20], (15, 20], (20, 25], NaN, NaN, (20, 25]]

Categories (2, object): [(15, 20] < (20, 25]]

可以看出分段后的结果,不在分段内的数据显示为na值,其他则显示数据所在的分段。

print(pd.cut(data,bins).labels)

结果为:

[-1 -1 0 0 1 -1 -1 1]

显示所在分段排序标签

print(pd.cut(data,bins).levels)

结果为:

Index(['(15, 20]', '(20, 25]'], dtype='object')

显示所以分段标签

print(value_counts(pd.cut(data,bins)))

结果为:

9788cac4fc2ff71a43c71d7c78fc7374.png

显示每个分段值得个数

此外还有一个qcut的函数可以对数据进行4分位切割,用法和cut类似。

排列和采样

我们知道排序的方法有好几个,比如sort,order,rank等函数都能对数据进行排序

现在要说的这个是对数据进行随机排序(permutation)

data=np.random.permutation(5)print(data)

结果为:

[1 0 4 2 3]

这里的peemutation函数对0-4的数据进行随机排序的结果。

也可以对数据进行采样

df=pd.DataFrame(np.arange(12).reshape(4,3))

samp=np.random.permutation(3)

print(df)

结果为:

2087697b09bfbce3451ef02f8324c6b4.png

print(samp)

结果为:

[1 0 2]

print(df.take(samp))

结果为:

ab1a13d22ac3e9bf80b9c729e3a5294f.png

这里使用take的结果是,按照samp的顺序从df中提取样本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 数据清洗 豆瓣电影_python 数据清洗篇 的相关文章

  • 客观面试题--32.说下springmvc的五个常用注解?

    1 Controller 在SpringMVC 中 控制器Controller 负责处理由DispatcherServlet 分发的请求 它把用户请求的数据经过业务处理层处理之后封装成一个Model 然后再把该Model 返回给对应的Vie
  • Jenkins集成及在服务器上发布异常 解决方案汇总

    一 在jenkins上构建时出现问题 如下图所示 解决方案 1 单击红色圆球 找到控制台输出 根据错误提示 检查上传到SVN的代码是否完整无错 检出SVN所提交的代码在本地运行 看是否能够成功 二 未能找到类型或命名空间名称 是否缺少 us
  • lvgl-文本框学习篇(五)

    lvgl 文本框学习篇 五 学习材料 工具 QT Creator 5 12 3 lvgl 源代码 lvgl 官方标签例程 极客笔记 学习内容 过程 零件和样式 用法 添加文字 占位符 删除字符 移动光标 隐藏光标 光标闪烁时间 单行模式 密
  • 1050 螺旋矩阵

    本题要求将给定的 N 个正整数按非递增的顺序 填入 螺旋矩阵 所谓 螺旋矩阵 是指从左上角第 1 个格子开始 按顺时针螺旋方向填充 要求矩阵的规模为 m 行 n 列 满足条件 m n 等于 N m n 且 m n 取所有可能值中的最小值 输
  • idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段 下面介绍在应用程序开发过程中JVM参数设置的几种方式 方式一 java程序运行时指定 Dproperty value 该参数通常用于设置系统级全局变量值 如配置文件路径 保证该属性在程序中
  • linux 虚拟化

    主旨 日常我们都在自己的windows或者mac电脑上 安装vmware软件 来虚拟linux服务器 那么我们是不是也可以通过在linux服务器上安装vmware软件 来虚拟出来其他的服务器呢 开整 优点 可以在一台服务器上虚拟出来几台服务
  • 03 面向对象(多态,接口)

    如果要求程序员必须在某个类中特定的方法中实现一个特定的功能 应该如何实现 使用抽象方法或者使用接口 interface 抽象方法只能单继承 不能多继承 子类必须使用里面的抽象方法 接口可以多继承 实现类必须重写里面的方法 接口的作用 接口是
  • MOS管泄漏电流简要分析

    待机状态下 晶体管的漏电分析 一个理想的MOS晶体管不应该有任何电流流入衬底或者阱中 当晶体管关闭的时候D S之间不应该存在任何的电流 但是 现实中MOS却存在各种不同的漏电流 漏电流一方面严重减小了低功耗设备的电池使用寿命 另一方面在某些
  • 《深度学习》读书笔记:第3章 概率与信息论

    目录 第3章 概率与信息论 3 1 为什么要使用概率 3 2 随机变量 3 3 概率分布 3 3 1 离散型变量和概率质量函数 3 3 2 连续型变量和概率密度函数 3 4 边缘概率 3 5 条件概率 3 6 条件概率的链式法则 3 7 独
  • 九、网络IO原理-创建ServerSocket的过程

    示例 创建ServerSocker过程 创建ServerSocket并注册端口号8090 ServerSocket server new ServerSocket 8090 while true 循环 final Socket socket
  • [Tools: tiny-cuda-nn] Linux安装

    official repo https github com NVlabs tiny cuda nn 该包可以显著提高NeRF训练速度 是Instant NGP Threestudio和NeRFstudio等框架中 必须使用的 1 命令行安
  • iOS开发之Runtime运行时机制

    摘要 Objective C是基于C加入了面向对象特性和消息转发机制的动态语言 除编译器之外 还需用Runtime系统来动态创建类和对象 进行消息发送和转发 作者通过分析Apple开源的Runtime代码来深入理解OC的Runtime机制
  • js实现模仿广告弹出并关闭弹窗

    css部分
  • 字符串转换整数 (atoi)

    字符串转换整数 atoi 请你来实现一个myAtoi string s 函数 使其能将字符串转换成一个 32 位有符号整数 类似 C C 中的 atoi 函数 函数myAtoi string s 的算法如下 读入字符串并丢弃无用的前导空格
  • linux系统忘记记密码怎么办

    linux 此次操作系统为 CentOS Linux release 7 5 1804 Core 1 重启linux 进入系统的GRUB菜单界面 按下小写字母e进入编辑界面 进入如下画面 2 按下方向键 找到以字符串Linux16开头的行
  • 物联网改造体育产业,这些常见球类都成了数据终端

    从智能手机 衣服 汽车到冰箱 物联网意味着几乎任何物件都可以连接到网络 通过物件里含有的传感器之间的通信和同步 我们获得了大量的数据 这些数据经过分析和处理 产生了大数据智能 现在 物联网 大数据智能不仅仅是一种时尚 一个流行语 更将彻底改
  • pppoe 拨号过程

    PPPoE 拔号过程 发现阶段解析 文档编号 834 浏览 14295 评分 73 最后更新于 2011 02 11 PPPoE拔号的发现阶段 Discovery PPPoE的发现阶段一共分为 4步 分别是 PADI PPPoE Activ
  • 什么是图神经网络

    2019年可以说是图神经网络元年 01 什么是图神经网络 1 图和属性图 要了解图神经网络 首先要了解图 图是由节点和边组成的 如下图所示 一般图中的节点表示实体对象 比如一个用户 一件商品 一辆车 一张银行卡等都可以作为节点 边代表事件或
  • 服务器windows操作系统安装,服务器windows操作系统的安装.doc

    服务器windows操作系统的安装 Windows 2K3 2K8系统的安装 注 在这两个操作系统的安装中尤其要注意RAID卡驱动的加载 Windows server 2003标准版的安装 一 准备工作 Windows 2003标准版的安装

随机推荐

  • Unity之三:配置向导

    文章目录 一 C标准 编译器 微控制器 二 选项 2 1 整数类型 2 1 1 UNITY EXCLUDE STDINT H 2 1 2 UNITY EXCLUDE LIMITS H 2 1 3 UNITY INT WIDTH 2 1 4
  • 项目重构之起始

    百层之台始于累土 合抱之木生于毫末 转眼间来到公司已历三个寒暑 愈加光亮鬓角 隆起的肚腩 无不彰显着开发功力日渐深厚 公司的产品也从H5商城成长为了一款app 步入了他的青年阶段 也许是青春期的原因 也许是成长路上各种功能迭代导致 总而言之
  • Keil5(MDK5)在调试(debug)过程中遇到的问题

    参考原子哥教程 使用开发板 STM32F103RC Keil5 MDK5 在调试 debug 过程中崩溃 IDE已停止运行 http blog csdn net qq 33259138 article details 70224581 现象
  • Py的ipykernel:Python库介绍、安装及使用攻略

    Py的ipykernel Python库介绍 安装及使用攻略 ipykernel是一个用于在Jupyter Notebook中运行Python代码的包 它可以将Python代码转化为可以在IPython内核上运行的格式 下面我们将详细介绍如
  • C/C++中如何获取数组的长度?

    C C 中没有提供 直接获取数组长度的函数 对于存放字符串的字符数组提供了一个strlen函数获取长度 那么对于其他类型的数组如何获取他们的长度呢 其中一种方法是使 用sizeof array sizeof array 0 在C语言中习惯上
  • ctfhub技能树部分wp(潦草笔记)

    备份文件下载 vim缓存 在使用vim时会创建临时缓存文件 关闭vim时缓存文件则会被删除 当vim异常退出后 因为未处理缓存文件 导致可以通过缓存文件恢复原始文件内容 隐藏文件index php swp前加 以 index php 为例
  • 仿牛客网项目第三章:开发社区核心功能(详细步骤和思路)

    目录 1 过滤敏感词 1 1 目的 1 2 实现方法 1 3 前缀树 1 4 敏感词过滤步骤 为发帖子做准备 2 发布帖子 2 1 AJAX介绍 2 2 AJAX使用实例 3 帖子详情 3 1 实现功能 3 2 实现过程 4 事务管理 4
  • little endian && big-endian

    java 的ClassFile采用big endian存储数据 Intel x86 采用little endian Motorola采用big endian 0x1234 Intel 地址 0x4000 0000 0x34 0x4000 0
  • vue-使用sass定义全局样式及变量

    vue cli2使用sass定义全局样式及变量 vue cli2创建的vue项目使用sass预处理器需按顺序安装以下插件 其中sass loader版本和node sass需要安装固定版本 其他的依赖不要求版本 亲测有效 如果不不固定sas
  • unity Domain Reload & scene Reload 静态变量重置

    关闭 Domain Reload 选项后 c 的静态变量在下次运行时不会怎么重置 需要手动添加重置代码 使用下面的属性设置重置变量函数 using UnityEngine public class StaticCounterExampleF
  • ns.ajax,UIWebView使用NSURLProtocol(拦截),ajax加载失败的问题

    问题 ajax跨域访问是一个老问题了 解决方法很多 比较常用的是JSONP方法 JSONP方法是一种非官方方法 而且这种方法只支持GET方式 不如POST方式安全 即使使用jquery的jsonp方法 type设为POST 也会自动变为GE
  • 解决eclipse新建dynamic web project没有apache的Runtime environment问题

    在新建eclipse web项目时候 想选择Tomact服务器 不过运行时环境选择中没有 没有出现下图的Apache目录吗 网络上好像没有找到教程 其实很简单 只是没有装上相应的插件 解决步骤如下 1 打开Help gt Install N
  • ThinkPad BIOS 设置详解

    ThinkPad BIOS 设置详解 ThinkPad BIOS 设置详解 主流 新机型 在网上查看了相关资料 发现好多都是T40或者更老的BIOS设置信息 不适合现在的主流以及新机型 于是找到分享该贴 希望对各位有所帮助 简洁的分割线 T
  • Python-错误与异常处理

    通常情况下 在try语句块中写我们想要的逻辑 发生错误和异常时Python解释器会采用raise方法即将异常抛出 except语句可以承接raise方法抛出的异常并对异常做出处理 Python中有三种异常捕获与处理形式 第一种 try ex
  • 为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》

    群里一个小伙伴在问为什么MySQL字符串不加单引号会导致索引失效 这个问题估计很多人都知道答案 没错 是因为MySQL内部进行了隐式转换 本期文章就聊聊什么是隐式转换 为什么会发生隐式转换 文章目录 系列文章 一 几大索引失效原因 二 从规
  • 解决git中文乱码

    1 配置git bash idea 随便找地方打开git bash 右击窗口进入options 分别将text选项的Locale改为zh CN character set改为UTF 8 如图所示 2 命令执行 我改了这个就好了 如果不行 在
  • C++基础知识(二)

    C 基础知识 二 文章目录 C 基础知识 二 1 指针与引用 2 日期与时间 3 cerr与clog 1 指针与引用 C 有两种指针运算符 一种是取地址运算符 另一种是间接寻址运算符 它们都是单目运算符 返回操作数的内存地址 如 var读作
  • Vulkan【15】图形管线(Graphics Pipline)

    创建图形管线 本节的代码是 14 init pipeline cpp 你越来越接近把这些拉到一起来渲染一个立方体 下一步是通过设置图形管道来配置GPU来进行渲染 一个图形管线由着色阶段 管线布局 渲染过程和固定功能管线阶段组成 您在前面的部
  • 一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) 。

    一个栈的入栈序列是 a b c d e 则栈的不可能的输出序列是 a edcba b decbac dceab d abcde 堆栈讲究先进后出 后进先出 选项1是abcde先入栈 然后依次出栈 正好是edcba 选项2是abcd先依次入栈
  • python 数据清洗 豆瓣电影_python 数据清洗篇

    前面我们用pandas做了一些基本的操作 接下来进一步了解数据的操作 数据清洗一直是数据分析中极为重要的一个环节 本篇主要演示 python 数据清洗的数据合并 转换 过滤 排序 数据合并 在pandas中可以通过merge对数据进行合并操