Pandas数据处理——渐进式学习


目录

Pandas数据处理——渐进式学习

前言

环境

DataFrame删除NaN空值

dropna函数参数

测试数据

删除所有有空的行

axis属性值

how属性值

thres属性值

subset属性值

inplace是否复制副本

fillna测试

总结


前言

这个女娃娃是否有一种初恋的感觉呢,但是她很明显不是一个真正意义存在的图片,我们需要很复杂的推算以及各种炼丹模型生成的AI图片,我自己认为难度系数很高,我仅仅用了64个文字形容词就生成了她,很有初恋的感觉,符合审美观,对于计算机来说她是一组数字,可是这个数字是怎么推断出来的就是很复杂了,我们在模型训练中可以看到基本上到处都存在着Pandas处理,在最基础的OpenCV中也会有很多的Pandas处理,所以我OpenCV写到一般就开始写这个专栏了,因为我发现没有Pandas处理基本上想好好的操作图片数组真的是相当的麻烦,可以在很多AI大佬的文章中发现都有这个Pandas文章,每个人的写法都不同,但是都是适合自己理解的方案,我是用于教学的,故而我相信我的文章更适合新晋的程序员们学习,期望能节约大家的事件从而更好的将精力放到真正去实现某种功能上去。本专栏会更很多,只要我测试出新的用法就会添加,持续更新迭代,可以当做【Pandas字典】来使用,期待您的三连支持与帮助。


环境

系统环境:win11

Python版本:python3.9

编译工具:PyCharm Community Edition 2022.3.1

Numpy版本:1.19.5

Pandas版本:1.4.4


DataFrame删除NaN空值

在数据操作的时候我们经常会见到NaN空值的情况,很耽误我们的数据清理,那我们使用dropna函数删除DataFrame中的空值。

实际上能处理的有3个函数,我们用dropna来删除这帮空值。

DataFrame.dropna([axis, how, thresh, …])      #返回对象与给定的轴上的标签省略或者任何地方
DataFrame.fillna([value, method, axis, …])    #填充空值
DataFrame.replace([to_replace, value, …])     #值在“to_replace”替换为“value”。

dropna函数参数

axis:操作的轴向,X/Y

how:两个参数any与all,all代表整个行都是空才会删除

thresh:某行的空值超过这个阈值才会删除

subset:处理空值时,只考虑给定的列。需要提供列名数组

inplace:值是True和False,True是在原DataFrame上修改,False则创建新副本

测试数据

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)print(df)

可以看到有好多空值:

删除所有有空的行

axis属性值

这里的dropna只填写了【axis】一个参数,其中0的值代表行,1的值代表列。

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)
print(df)
print("----axis=0----")
# 删除所有有空的行
df = df.dropna(axis=0)print(df)

axis=0效果测试:

axis=1效果测试:

很明显我们能看的出来,只要是axis=0有空的行就删除了,axis=1有空的列就删除了。

how属性值

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)
print(df)
print("----how='any'----")
# any有空行就删除·all必须都是空行才能删除
df = df.dropna(how='any')print(df)

any效果:

all效果:由于没有都是NaN的行,故而都没有删除。

thres属性值

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan,  np.nan, np.nan, 27]}
)
print(df)
print("----thresh=2----")
# 有空的都删掉
df = df.dropna(thresh=2)print(df)

有2个nan就会删除行

subset属性值

我这里清除的是[name,age]两列只要有NaN的值就会删除行

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)
print(df)
print("----subset----")
# subset传的参数是列名的数组
df = df.dropna(subset=['name', 'age'])print(df)

实际效果:

inplace是否复制副本

inplace=False,不复制副本,我们不二次赋值。

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)
print(df)
print("----subset----")
# subset传的参数是列名的数组
df.dropna(subset=['name', 'age'], inplace=False)print(df)

复制副本,但是未重新赋值效果

不复制副本

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, 16, np.nan, 27]}
)
print(df)
print("----subset----")
# subset传的参数是列名的数组
df.dropna(subset=['name', 'age'], inplace=True)print(df)

可以很直接的看到效果。

fillna测试

pandas.DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

value:用于填充的空值的值。
method: {'backfill', 'bfill', 'pad', 'ffill', None}, default None。定义了填充空值的方法,
                pad / ffill表示用前面行/列的值,填充当前行/列的空值,
                backfill / bfill表示用后面行/列的值,填充当前行/列的空值。
axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。
inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操   作,返回值为None。
limit:int,default None。如果method被指定,对于连续的空值,这段连续区域,最多填充前,limit 个空值(如果存在多段连续区域,每段最多填充前 limit 个空值)。如果method未被指定, 在该axis下,最多填充前 limit 个空值(不论空值连续区间是否间断)

downcast:dict, default is None,字典中的项为,为类型向下转换规则。

示例代码:替换成10

import pandas as pd
import numpy as npdf = pd.DataFrame({'name': ['张丽华', '李诗诗', '王语嫣', '赵飞燕', '阮玲玉'],'sex': ['girl', 'woman', np.nan, 'girl', 'woman'],'age': [22, np.nan, np.nan, np.nan, 27]}
)
print(df)
print("----fillna----")
# 有空的都删掉
df2 = df.fillna(10,method=None,axis=1,  # axis=0或"index":沿着行的向(纵向); axis=1或"column":是沿着列的方向(横向)limit=2,  # 在没指定method的情况下,沿着axis指定方向上填充的个数不大于limit设定值inplace=False)  # 返回新的DataFrame
print("用10替换后的df2 = \n", df2)

实际效果:

总结

我们很多的时候在处理SQL的时候需要去掉空值,其实和这个操作是一样的,空值是很多的时候没有太大意义,数据清洗的时候就会用到这块了。

Pandas数据处理1、DataFrame删除NaN空值(dropna各种属性值控制超全)相关推荐

  1. pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())

    假设拿到一个10万行的数据后,通过isnull我们发现某列有几个空值,要把该列空值所在行删除怎么操作?用dropna()会删除所有有空值的行,请看下面实例. 区分 None,null,NULL,nan ...

  2. python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行。

    python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行. import pandas as pd import numpy as np df1 = pd.Data ...

  3. pandas dataframe删除空行或者空列dropna,一般删除指定行或者列drop

    dropna参见https://blog.csdn.net/roamer314/article/details/84816171 df[~(df['col'].isnull())] #删掉空行 df. ...

  4. Pandas数据处理2、DataFrame的drop函数具体参数使用详情

    Pandas数据处理2.DataFrame的drop函数具体参数使用详情 目录 Pandas数据处理2.DataFrame的drop函数具体参数使用详情 前言 环境 基础函数的使用 drop函数 编码 ...

  5. pandas删除nan的行

    cell_df = cell_df.dropna(axis=0, how='any')#删除任何包含nan的行 删除pandas.DataFrame 中包含NaN的行或列_Transfer-CSDN博 ...

  6. pandas 入门:DataFrame的创建,读写,插入和删除

    不得不说DataFrame现在很火,已经有很多库都是基于DataFrame写的,而且它用起来也很方便,读excel只需要一行代码,想起使用xlrd的日子,至今还脑壳疼,所以对于一个用python做数据 ...

  7. pandas操作1(读csv不要索引/写csv不要索引/删除有空值行/按时间排序)

    pandas常用csv操作 读csv不要索引(index) 写csv不要索引 删除有空值的行 按时间排序 其他操作 读csv不要索引(index) 在使用pandas读csv(read_csv())时 ...

  8. Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)

    Pandas数据处理4.DataFrame记录重复值出现的次数(是总数不是每个值的数量) 目录 Pandas数据处理4.DataFrame记录重复值出现的次数(是总数不是每个值的数量) 前言 环境 基 ...

  9. pandas使用query函数删除dataframe中某一列数值小于某一特定值的行(remove dataframe rows baed on column value)

    pandas使用query函数删除dataframe中某一列数值小于某一特定值的行(remove dataframe rows baed on column value) 目录

最新文章

  1. Python 之 Matplotlib (二)figure
  2. 使用cat写入内容到指定文件
  3. jsp springmvc 视图解析器_springMVC配置jsp/html视图解析器
  4. 事件 ID: 3006 定期记录到应用程序日志
  5. Go语言极速入门手册
  6. aspnet ajax 1.0中的according控件
  7. python setuptools 打包 发布
  8. [IOS]——播放器AVPlayer的实现
  9. in作为介词的用法_介词in重要用法归纳
  10. Matplotlib数据可视化画图
  11. JQuery使用教程
  12. LC EDA 学习笔记
  13. Windows10系统CUDA和CUDNN安装教程
  14. matplotlib画各种图的方法(2)
  15. 软件开发人员是否应该考虑加拿大四省移民,
  16. 29.4米/天!安百拓智能岩心钻机在川藏铁路创造深孔钻进新纪录
  17. 首届中国房地产数字峰会圆满落幕,关于地产第二增长曲线,他们的答案在这里...
  18. 高顿,量产“状元”的秘密
  19. httpclient使用系列
  20. 电力系统为什么是三相的

热门文章

  1. 北海屠龙记------十
  2. STM32微控制器 | 复习九 | ADC原理及应用
  3. 第一次入住CSDN的自我介绍与个人心得。
  4. 武汉大学惯性导航课程合集【2021年秋】1.2 惯性器件的误差和标定
  5. 专升本英语——语法知识——高频语法——第一节 时态和语态——现在/过去/将来完成时_时间状语过去将来时【学习笔记】
  6. Matplotlib设置次坐标轴
  7. z3的5.1android os耗电,索尼给力!XperiaZ2/Z3系统将升级Android 5.1.1
  8. 雷神911T-Book Pro 游戏本参数配置 雷神 911T-Book Pro 评测
  9. 华为p30支持html吗,华为p30支持5g网络吗?答案出来了
  10. UE4/UE5 Runtime下的FBX导入