DataFrame—数据汇总6
文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
一.缺失值处理
#示例数据
df = pd.read_csv("pokemon_data.csv",encoding="gbk")
#查看数据前十行
df.head(10)
1.判断缺失值
判断数据表所有数据中的缺失值
df.isnull()
判断数据表某一列的缺失值
df["类型2"].isnull()
#查看类型2这一列的非缺失值和缺失值的数量分布
df["类型2"].isnull().value_counts()
2.删除缺失值
删除掉含有缺失值的所有行
df.dropna()
df.dropna(how="any")
删除满足行内数据均为NaN这个条件的行
df.dropna(how="all")
创建一个4行3列的含有NaN的数据作为演示
df1 = pd.DataFrame([[1,5,np.nan],[2,np.nan,np.nan],[2,3,np.nan],[np.nan,np.nan,np.nan]])
df1
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1.0 | 5.0 | NaN |
| 1 | 2.0 | NaN | NaN |
| 2 | 2.0 | 3.0 | NaN |
| 3 | NaN | NaN | NaN |
how="all"能删除掉均为NaN的行
df1.dropna(how="all")
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1.0 | 5.0 | NaN |
| 1 | 2.0 | NaN | NaN |
| 2 | 2.0 | 3.0 | NaN |
删除满足列内数据均为NaN这个条件的列,按列删除
df1.dropna(how="all",axis=1,inplace=True)
df1
3.填充缺失值
填充指定值
df1.fillna(value=0)
填充函数
df1[1].fillna(df1[1].mean())
向前填充
df1[1].fillna(method="ffill")
向后填充
df1[1].fillna(method="bfill")
二.清除空格
创建含有空格的示例数据
dict1 = {"name":["小红","小明","小张"],"age":[16,17,18],"city":["北京 ","杭州"," 上海 "]}
df2 = pd.DataFrame(dict1,columns=["name","age","city"])
查看含有空格的数据
df2.to_csv("2.csv")
清除空格
df2["city"] = df2["city"].map(str.strip)
查看清除后的数据表
df2.to_csv("df2.csv")
3.转换数据格式
将年龄列数据转换成字符串格式
df2["age"] = df2["age"].astype("str")
df2.dtypes
将年龄列数据转换成浮点数格式
df2["age"] = df2["age"].astype("float")
将年龄列数据转换成整数格式
df2["age"] = df2["age"].astype("int")
4.大小写转换
df2["city"] = ["beijing","hangzhou","shanghai"]
df2
转换成大写
df2["city"] = df2["city"].str.upper()
df2
转换成小写
df2["city"] = df2["city"].str.lower()
df2
转换成首字母大写
df2["city"] = df2["city"].str.title()
df2
5.更改列名
通过rename函数修改部分列名或者所有列名,并默认返回一个新的数据框,若需要在原基础上修改,添加参数inplace=True即可
df2.rename(columns={"name":"name2","age":"age2"})
通过columns属性修改列名,这种方式就需要输入所有的列名了,并直接在原基础上修改
df2.columns = ["n","a","c"]
6.更改索引与重置索引
df.head(10)
更改索引
#将类型1这列作为索引
df3 = df.set_index("类型1")
df3
重置索引
df4 = df3.reset_index()
df4
7.重复值处理
df5 = pd.DataFrame({"c1":["apple"]*3 + ["banana"]*3,"c2":[1,1,2,3,3,2]})
df5
查看是否有重复值
#适合小数据目测
df5.duplicated(subset=["c1","c2"],keep="first")
#当数据量比较大的时候,可以看看重复数据和非重复数据的计数分布
df5_duplicated = df5.duplicated(subset=["c1","c2"],keep="first")
df5_duplicated.value_counts()
保留重复值
df5[df5.duplicated(subset=["c1","c2"],keep="first")]
删除重复值
(1)默认保留第一个出现的重复值,删除掉后面的重复值
df5.drop_duplicates(subset=["c1","c2"],keep="first")
(2)保留最后一个重复值,删除掉前面的重复值
df5.drop_duplicates(subset=["c1","c2"],keep="last")
(3)如果希望直接在原基础上修改,添加参数inplace=True
df5.drop_duplicates(subset=["c1","c2"],keep="last",inplace=True)
df5
8.替换值
忽略警告的做法
import warnings
warnings.filterwarnings("ignore")
df6 = df.head(10)
df6
df6["类型1"] = df6["类型1"].replace("Grass","G")
df6
多个对象替换单个值
df6["类型1"] = df6["类型1"].replace(["G","Fire"],"gf")
df6
用不同的值替换不同的对象
df6["类型1"] = df6["类型1"].replace(["gf","Water"],["good","W"])
df6
参数也可以是字典
df6["类型1"] = df6["类型1"].replace({"good":"gg","W":"ww"})
df6相关文章:
DataFrame—数据汇总6
文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的…...
Java入门基础学习笔记41——实体类
实体JavaBean/实体类: 就是一种特殊形式的类。 1)这个类中的成员变量都要私有,并且要对外提供相应的getXXX,setXXX的方法。 2)类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。 右键菜单中࿰…...
【Linux】信号之信号的保存和处理详解
🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误或者有写的不好的地方的话&…...
基于Django的图书管理系统
文章目录 前言一、页面展示1.登录2.前端页面3.后端页面 二、项目上传(1)导入数据库(2)导入项目(3)数据库密码修改(4)进入网站 总结 前言 本网站调用Django编写了图书管理网站&#…...
js实现元素根据鼠标滚轮滚动向左右上下滑动着从模糊到清楚显示出来
html代码 <div ref{test} id"animatedElement" className"not-animated"> <div style{{width:"100px",height:"50px",backgroundColor:"red"}}> </div> </div> JS代码 const te…...
yocto学习
bitbake命令单独编译u-boot: $ bitbake -c compile -f u-boot-imx $ bitbake -c deploy -f u-boot-imx //部署编译生成的u-boot镜像到deploy bitbake命令单独编译kernel: bitbake -c compile -f linux-imx //编译内核 bitbake -c deploy -f linux-imx /…...
【IC设计】牛客网-序列检测习题总结
文章目录 状态机基础知识VL25 输入序列连续的序列检测VL26 含有无关项的序列检测VL27 不重叠序列检测VL28 输入序列不连续的序列检测参考资料 状态机基础知识 VL25 输入序列连续的序列检测 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output re…...
python爬虫登录到海康相机管理页面
简述 1.最近接到个任务是在管理页面更改相机的某个参数,下载官方的sdk貌似没有提供这个接口,所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt,sessionID,challenge等信息 http://admin:123456192.168.…...
9.Docker网络
文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用: 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…...
Windows VS2022 C语言使用 sqlite3.dll 访问 SQLite数据库
今天接到一个学生C语言访问SQLite数据库的的需求: 第一步,SQLite Download Page下载 sqlite3.dll 库 下载解压,发现只有两个文件: 于是使用x64 Native Tools Command Prompt 终端 生成 sqlite3.lib 和 sqlite3.exp文件 LIB -def:sqlite3.def -out:sqlite3.lib -machin…...
java库和包的概念
在Java中,"库"和"包"是两个不同的概念,但它们之间存在着密切的关联。 库(Library) 定义:库是一组已经编写好的代码和资源,用于解决特定的问题或提供特定的功能。它可以包含一个或多个…...
mysql内存结构
一:逻辑存储结构:表空间->段->区->页->行、 表空间:一个mysql实例对应多个表空间,用于存储记录,索引等数据。 段:分为数据段,索引段,回滚段。innoDB是索引组织表&…...
Python | Leetcode Python题解之第111题二叉树的最小深度
题目: 题解: class Solution:def minDepth(self, root: TreeNode) -> int:if not root:return 0que collections.deque([(root, 1)])while que:node, depth que.popleft()if not node.left and not node.right:return depthif node.left:que.appen…...
c++二进制输出
输入一个数,输出n个数,数可以是0或1;输入:4输出:0010;提示:本题要用到rand(),srand(time(0));代码如下:#include<bits/stdc.h> #include<windows.h> using namespace s…...
5. C++网络编程-UDP协议的实现
UDP是无连接的。 UDP Server网络编程基本步骤 创建socket,指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的,直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto 客户端 …...
Altium Designer 中键拖动,滚轮缩放,并修改缩放速度
我的版本是AD19,其他版本应该都一样。 滚轮缩放 首先,要用滚轮缩放,先要调整一下AD 设置,打开Preferences,在Mouse Wheel Configuration 里,把Zoom Main Window 后面Ctrl 上的对勾取消掉,再把…...
python从入门到精通04
一、编写英文月份词典 month_num int(input("请输入您想要查询的月份:")) month_list [January,February,March,April,May,June,July,August,September,October,November,December] print("您查询的月份单词是:", month_list[mon…...
tomcat三级指导
版本 ./catalina.sh linux version.bat win 1.确认是否使用了tomcat管理后台 我们先找到配置文件:tomcat主目录下/conf/server.xml 可以查看到连接端口,默认为8080 然后查看manager-gui管理页面配置文件,是否设置了用户登录 配置文件…...
不知道是该怎么引用多个函数片段?具体示例如代码
🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…...
P3128 [USACO15DEC] Max Flow P题解(树上差分,最近公共祖先,图论)
前言: 题目链接:P3128 [USACO15DEC] Max Flow P - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 讲解: 这一题含金量真算高的,包含了建树(用了图论的知识),求最近公共祖先(倍增法…...
华硕笔记本终极性能控制指南:用G-Helper完全替代Armoury Crate
华硕笔记本终极性能控制指南:用G-Helper完全替代Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…...
FairyGUI Unity鼠标悬停与点击对象获取原理与实战
1. 这不是“加个OnMouseEnter就能用”的事:FairyGUI在Unity中处理鼠标交互的真实困境很多人第一次在Unity里集成FairyGUI,想实现“鼠标悬停显示提示”或“点击高亮当前按钮”,下意识就去翻Unity的MonoBehaviour文档,找OnMouseEnte…...
为你的Hermes Agent自定义Provider,接入Taotoken多模型池
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的Hermes Agent自定义Provider,接入Taotoken多模型池 在构建复杂的AI应用时,开发者常常面临一个核心挑…...
打造XBEE封装BLE112蓝牙模块:硬件设计、射频布局与调试全攻略
1. 项目概述:为什么我们需要一个“XBEE格式”的蓝牙模块?在嵌入式开发和物联网项目中,无线通信模块的选择往往决定了项目的成败。对于很多工程师和创客来说,Silicon Labs(芯科科技)的BLE112/113模块是蓝牙4…...
DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪?
DAIR-V2X-V数据集深度评测:与KITTI、nuScenes比,它到底强在哪? 当技术团队着手开发面向中国道路的自动驾驶系统时,数据集的选择往往成为第一个关键决策点。过去十年间,KITTI和nuScenes等国际数据集一直是行业标杆&…...
ArduPilot飞行模式实战:从代码角度看Stabilize、Acro、Loiter模式如何切换(附避坑指南)
ArduPilot飞行模式深度解析:从状态机到实战避坑指南 在开源飞控领域,ArduPilot以其强大的飞行模式系统著称。不同于普通用户只需了解模式功能,开发者更需要掌握模式切换的底层机制——这直接关系到飞行安全与二次开发效率。本文将带您深入Sta…...
为什么你的Midjourney雾效总像“水汽”而非“山岚”?——资深CG总监拆解大气散射物理模型在--v 6.1中的3层映射偏差
更多请点击: https://kaifayun.com 第一章:为什么你的Midjourney雾效总像“水汽”而非“山岚”? Midjourney 生成的雾气常呈现为均匀、半透明、边界模糊的“水汽感”——厚重、潮湿、缺乏层次与呼吸感。这并非模型能力不足,而是提…...
从《吃豆人》到开放世界:聊聊Unity Navigation里Agent Radius和Cost的那些‘潜规则’
从《吃豆人》到开放世界:Unity Navigation中Agent Radius与Cost的隐藏逻辑1980年诞生的《吃豆人》用简单的迷宫路径定义了早期游戏AI的移动规则——幽灵们沿着固定路线巡逻,遇到转角时随机选择方向。这种设计在当时堪称革命性,但以今天的标准…...
机器学习力场攻克Peierls相变动力学:从对称性描述符到畴生长标度律
1. 项目概述:当机器学习遇见Peierls相变在凝聚态物理和材料科学的前沿,我们常常被一个核心问题所困扰:如何精确地模拟那些由电子和晶格(原子)强烈耦合所驱动的复杂动力学过程?这类系统,比如电荷…...
Python到Android的魔法之旅:5步将你的代码变成移动应用
Python到Android的魔法之旅:5步将你的代码变成移动应用 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 想象一下,你花了几个月时间精心…...
