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

简介: Pandas数据处理1、DataFrame删除NaN空值(dropna各种属性值控制超全)



前言

       这个女娃娃是否有一种初恋的感觉呢,但是她很明显不是一个真正意义存在的图片,我们需要很复杂的推算以及各种炼丹模型生成的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 np
df = 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 np
df = 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 np
df = 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 np
df = 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 np
df = 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 np
df = 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 np
df = 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 np
df = 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的时候需要去掉空值,其实和这个操作是一样的,空值是很多的时候没有太大意义,数据清洗的时候就会用到这块了。

目录
打赏
0
0
0
0
114
分享
相关文章
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
149 100
Pandas高级数据处理:数据流式计算
Pandas高级数据处理:交互式数据探索
Pandas 是数据分析中常用的数据处理库,提供了强大的数据结构和操作功能。本文从基础到高级,逐步介绍 Pandas 中交互式数据探索的常见问题及解决方案,涵盖数据读取、检查、清洗、预处理、聚合分组和可视化等内容。通过实例代码,帮助用户解决文件路径错误、编码问题、数据类型不一致、缺失值处理等挑战,提升数据分析效率。
80 32
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
67 31
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
27 12
Pandas高级数据处理:数据安全与隐私保护
在数据驱动的时代,数据安全和隐私保护至关重要。本文探讨了使用Pandas进行数据分析时如何确保数据的安全性和隐私性,涵盖法律法规要求、用户信任和商业价值等方面。通过加密、脱敏、访问控制和日志审计等技术手段,结合常见问题及解决方案,帮助读者在实际项目中有效保护数据。
62 29
Pandas高级数据处理:数据可视化进阶
Pandas是数据分析的强大工具,能高效处理数据并与Matplotlib、Seaborn等库集成,实现数据可视化。本文介绍Pandas在绘制基础图表(如折线图)和进阶图表(如分组柱状图、热力图)时的常见问题及解决方案,涵盖数据准备、报错处理、图表优化等内容,并通过代码案例详细解释,帮助读者掌握数据可视化的技巧。
37 13
Pandas高级数据处理:交互式数据探索
Pandas是Python中流行的数据分析库,提供丰富的数据结构和函数,简化数据操作。本文从基础到高级介绍Pandas的使用,涵盖安装、读取CSV/Excel文件、数据查看与清洗、类型转换、条件筛选、分组聚合及可视化等内容。掌握这些技能,能高效进行交互式数据探索和预处理。
19 6
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
50 17
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
21 8
Pandas高级数据处理:实时数据处理
本文介绍了Pandas在实时数据处理中的应用,涵盖基础概念、常见问题及解决方案。Pandas是Python中强大的数据分析库,支持流式读取和增量更新数据,适用于大规模数据集的处理。通过分块读取、数据类型优化等方法,可有效解决内存不足等问题。文中还提供了代码示例,帮助读者更好地理解和掌握Pandas在实时数据处理中的使用技巧。
54 15

热门文章

最新文章