精华内容
下载资源
问答
  • python删除缺失值所在行
    2022-07-19 10:19:30

    转载:https://blog.csdn.net/qq_35843543/article/details/106471278

    关键内容:

    data.dropna(how = ‘all’) # 传入这个参数后将只丢弃全为缺失值的那些行
    data.dropna(axis = 1) # 丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
    data.dropna(axis=1,how=“all”) # 丢弃全为缺失值的那些列
    data.dropna(axis=0,subset = [“Age”, “Sex”]) # 丢弃‘Age’和‘Sex’这两列中有缺失值的行

    ————————————————
    版权声明:本文为CSDN博主「枫小Q」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_35843543/article/details/106471278

    更多相关内容
  • 缺失值可能是数据科学中最不受欢迎的值,然而,它们总是在身边。忽略缺失值也是不合理的,因此我们需要找到有效且... 我们将使用 loc 方法选择和列组合,并使它们等于“np.nan”,这是标准缺失值表示之一。 这是数

    缺失值可能是数据科学中最不受欢迎的值,然而,它们总是在身边。忽略缺失值也是不合理的,因此我们需要找到有效且适当地处理它们的方法。

    在本文中,我们将介绍 8 种不同的方法来解决缺失值问题,哪种方法最适合特定情况取决于数据和任务。欢迎收藏学习,喜欢点赞支持,技术交流可以文末加群,尽情畅聊。

    让我们首先创建一个示例数据框并向其中添加一些缺失值。

    在这里插入图片描述
    在这里插入图片描述
    我们有一个 10 行 6 列的数据框。

    下一步是添加缺失值。 我们将使用 loc 方法选择行和列组合,并使它们等于“np.nan”,这是标准缺失值表示之一。
    在这里插入图片描述
    这是数据框现在的样子:
    在这里插入图片描述
    item 和 measure 1 列具有整数值,但由于缺少值,它们已被向上转换为浮点数。

    在 Pandas 1.0 中,引入了整数类型缺失值表示 (),因此我们也可以在整数列中包含缺失值。 但是,我们需要显式声明数据类型。

    在这里插入图片描述
    在这里插入图片描述
    尽管有缺失值,我们现在可以保留整数列。

    现在我们有一个包含一些缺失值的数据框。 是时候看看处理它们的不同方法了。

    1. 删除有缺失值的行或列

    一种选择是删除包含缺失值的行或列。
    在这里插入图片描述
    在这里插入图片描述
    使用默认参数值,dropna 函数会删除包含任何缺失值的行。数据框中只有一行没有任何缺失值。同时我们还可以选择使用轴参数删除至少有一个缺失值的列。
    在这里插入图片描述

    2. 删除只有缺失值的行或列

    另一种情况是有一列或一行充满缺失值。 这样的列或行是无用的,所以我们可以删除它们。

    dropna 函数也可以用于此目的。 我们只需要改变 how 参数的值。

    在这里插入图片描述

    3. 根据阈值删除行或列

    基于“any”或“all”的删除并不总是最好的选择。 我们有时需要删除具有“大量”或“一些”缺失值的行或列。

    我们不能将这样的表达式分配给 how 参数,但 Pandas 为我们提供了一种更准确的方法,即 thresh 参数。

    例如,“thresh=4”意味着至少有 4 个非缺失值的行将被保留。 其他的将被丢弃。

    我们的数据框有 6 列,因此将删除具有 3 个或更多缺失值的行。

    在这里插入图片描述

    在这里插入图片描述
    只有第三行有 2 个以上的缺失值,所以它是唯一一个被丢弃的。

    4. 基于特定的列子集删除

    在删除列时,我们可以只考虑部分列。

    dropna 函数的子集参数用于此任务。 例如,我们可以删除在度量 1 或度量 2 列中有缺失值的行,如下所示:

    在这里插入图片描述
    在这里插入图片描述

    到目前为止,我们已经看到了根据缺失值删除行或列的不同方法。放弃并不是唯一的选择。 在某些情况下,我们可能会选择填充缺失值而不是删除它们。

    事实上,填充可能是更好的选择,因为数据意味着价值。 如何填补缺失值,当然取决于数据的结构和任务。

    fillna 函数用于填充缺失值。

    5. 填充一个常数值

    我们可以选择一个常量值来替代缺失值。如果我们只给 fillna 函数一个常量值,它将用该值替换数据框中的所有缺失值。

    更合理的方法是为不同的列确定单独的常量值。 我们可以将它们写入字典并将其传递给 values 参数。
    在这里插入图片描述
    在这里插入图片描述
    item 列中的缺失值替换为 1014,而 measure 1 列中的缺失值替换为 0。

    6. 填充聚合值

    另一种选择是使用聚合值,例如平均值、中位数或众数。

    下面这行代码用该列的平均值替换了第 2 列中的缺失值。

    在这里插入图片描述

    7. 替换为上一个或下一个值

    可以用该列中的前一个或下一个值替换该列中的缺失值。在处理时间序列数据时,此方法可能会派上用场。 假设您有一个包含每日温度测量值的数据框,但缺少一天的温带。 最佳解决方案是使用第二天或前一天的温度。

    fillna 函数的方法参数用于执行此任务。

    在这里插入图片描述
    在这里插入图片描述

    “bfill”向后填充缺失值,以便将它们替换为下一个值。看看最后一栏。 缺失值被替换到第一行。 这可能不适合某些情况。

    值得庆幸的是,我们可以限制用这种方法替换的缺失值的数量。 如果我们将 limit 参数设置为 1,那么一个缺失值只能用它的下一个值替换。 后面的第二个或第三个值将不会用于替换。

    8. 使用另一个数据框填充

    我们还可以将另一个数据帧传递给 fillna 函数。 新数据框中的值将用于替换当前数据框中的缺失值。

    将根据行索引和列名称选择值。 例如,如果 item 列的第二行中存在缺失值,则将使用新数据框中相同位置的值。

    在这里插入图片描述
    在这里插入图片描述
    以上是具有相同列的两个数据框。 第一个 没有任何缺失值。

    我们可以使用 fillna 函数如下:

    在这里插入图片描述
    df 中的值将替换为 df2 中关于列名和行索引的值。

    总结

    缺失将永远存在于我们的生活中。 没有最好的方法来处理它们,但我们可以通过应用准确合理的方法来降低它们的影响。我们已经介绍了 8 种不同的处理缺失值的方法,使用哪一个取决于数据和任务。


    技术交流

    欢迎转载、收藏、有所收获点赞支持一下!

    在这里插入图片描述

    目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

    • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
    • 方式②、添加微信号:dkl88191,备注:来自CSDN
    • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

    长按关注

    展开全文
  • Python缺失值删除 pd.dropna()函数

    千次阅读 2022-02-19 09:52:07
    Python缺失值删除 pd.dropna()函数 ● 选择题 以下关于dropna()函数说法错误的是: A 用于删除缺失数据 B axis=0:若某列有空值,则删除该列 C axis=1:若某列有空值,则删除该列 D how=all:该行/列...

    【小白从小学Python、C、Java】

    【Python全国计算机等级考试】

    【Python数据分析考试必会题】

    ● 标题与摘要

    Python中缺失值删除

    pd.dropna()函数

    ● 选择题

    以下关于dropna()函数说法错误的是:

    A 用于删除缺失数据

    B axis=0:若某列有空值,则删除该列

    C axis=1:若某列有空值,则删除该列

    D how=all:该行/列全为空值,就删除该行/列

    ​● 问题解析

    1.dropna()方法,用于找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回。A正确。

    2.dropna()函数的参数:dropna([axis=0][,how='any'][,thresh='None'][,subset='None'][,inplace='False'])。

    (1)axis:当axis取0或'index',即axis=0或axis='index',index表示行索引,若某行有空值,则删除该行;当axis取1或'column',即axis=1或axis='column',column表示列索引,若某列有空值,则删除该列。默认值为0。B错误,C正确。

    (2)how:筛选方式。‘any',表示该行/列只要有一个以上的空值,就删除该行/列;‘all',表示该行/列全部都为空值,就删除该行/列。默认值为‘any’。D正确。

    (3)thresh:删除条件(int整数型):行/列中非空元素个数小于thresh,该行/列会才会被删除。可以理解为:行/列中空值太多了(非空值太少了)才启动删除行/列。

    ​(4)subset:子集,参数表示行或列的一部分,用列表表示。默认值为None。

    如果axis=0或者‘index',subset中元素为列的索引,如d.dropna(axis='index', how='all', subset=[0,5,6])),表示当某行的0,5,6列均为空时,则删除该行。

    如果axis=1或者‘column',subset中元素为行的索引,如d.dropna(axis='column', how='all', subset=[0,5,6])),表示当某列的0,5,6行均为空时,则删除该列。

    (5)inplace:是否直接在原dataframe进行缺失值删除。布尔值,默认为False,即不在原DataFrame上进行缺失值删除操作,dropna()函数返回值为缺失值删除操作后的结果。如果为True,则在原DataFrame上进行缺失值删除操作,dropna()函数返回值为None。

    ​● 附图 

    图1 验证axis=0,how='any'的实验

    图2 验证axis=0,how='all'以及thresh参数用法的实验

    图3 验证subset,inplace参数用法的实验

    ● 附图代码

    import numpy as np

    import pandas as pd

    a = np.ones((6,5))

    for i in range(len(a)):

    a[i,:i] = np.nan

    d = pd.DataFrame(data=a)

    print(d)

    # 按行删除:存在空值,即删除该行

    print(d.dropna(axis=0, how='any'))

    # 按行删除:所有数据都为空值,即删除该行

    print(d.dropna(axis=0, how='all'))

    # 按列删除:该列非空元素小于2个的,即删除该列

    print(d.dropna(axis='columns', thresh=2))

    # 设置子集:删除第1、2、3列都为空的行

    print(d.dropna(axis='index', how='all', subset=[1,2,3]))

    print(d.dropna(axis=0, how='any', inplace=True))

    print("==============================")

    print(d)

    ● 正确答案

    B

    欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn

    展开全文
  • 首先,我们用 info( ) 语句操作,看到整份数据的大概情况:​从这份数据我们可以发现,这里一共有 891 数据,所以在中间那一列数据中看到的不是 891 个数据的,都是有缺失值的。比如年龄Age这一列,有714个非空...

    缺失值处理

    真实数据往往某些变量会有缺失值。

    首先,我们用 info( ) 语句操作,看到整份数据的大概情况:

    从这份数据我们可以发现,这里一共有 891 行数据,所以在中间那一列数据中看到的不是 891 个数据的,都是有缺失值的。比如年龄Age这一列,有714个非空数值,就有 891-714=177 个缺失值。又比如船舱号码 cabin,缺失值就更多了。登船码头的缺失值比较少,后面可以不用处理。

    这些缺失值是怎么处理的呢?一般是三种处理方法:不处理/丢弃/填充。

    这里,cabin有超过70%以上的缺失值,我们可以考虑直接丢掉这个变量。 -- 删除某一列数据

    像Age这样的重要变量,有20%左右的缺失值,我们可以考虑用中位值来填补。-- 填补缺失值

    我们一般不提倡去掉带有缺失值的行,因为其他非缺失的变量可能提供有用的信息。-- 删除带缺失值的行删除带缺失值的行(一般不建议):df.dropna( )

    删除某一列:df.drop('column_name', axis=1, inplace=True)

    填充缺失值:df.column_name.fillna( )

    axis=1,代表删除的是一列的数据,也就是 column_name 这一列。inplace=True,表示在 df 这个原始数据上面进行修改。

    其实我们这节课重点的是最后一个:填充缺失值。fill 是填充,na 是缺失值的代称。

    我们在 info( ) 这个运行中可以看到 Age 的缺失值不少,下面将使用中位数来填充 缺失值。

    填补年龄数据中的缺失值

    直接使用所有人年龄的中位数来填补

    为了方便后面的比较,我们首先用 describe 统计数据。

    查看Age列的统计值

    这份数据照样是可以看到,非缺失值 count 是有 714,平均值 mean 是 29.6岁,标准差 std 是 14.5,这时可以注意一下 50% 那个数据:28。

    中位数

    为了防止数据有改动,我们在开始之前需要重新载入数据。

    正确的中位数可以使用 median 的方法获取,得到的数和上面的 50% 的数是一样的。

    填充年龄缺失值

    把中位数赋值给 age_median1,这个操作体现在第二行代码。我的理解是,要是这里不重新赋值的话,后面需要用到这个中位数的时候,就需要完整码出 titanic_df.Age.median( ) 这一句,重新赋值就可以直接使用 age_median1 来代替稍微长一点的句子了。

    titanic_df.Age.fillna(age_median1,inplace=True) 中,因为使用到Age这列数据,然后用 fillna 来实现填充,所以语句用 titanic_df.Age.fillna( ) 来表达,括号里面需要填的参数就是需要填充的值,也就是里面的缺失值都是由刚刚赋值的 age_median1 来代替。逗号后面再加上inplace=True,表示在原来的 df 数据中进行修改了,如果不加上这个参数,就需要把填充后的值重新赋值给 Age 这一列,所以 inplace 这个动作是为了简单起见。

    再来看我们得到的结果,这个时候的非空缺失值已经变成了891,平均值也从原本的29.7降到了29.4,因为我们刚刚填充的中位数是28,比原来的平均值小,所以会有所新的平均值也会有所下降。

    上面讲的是所有人的年龄中位数,现在我们进一步来思考:性别因素,会怎么影响结果呢?

    考虑性别因素,分别用男女乘客各自年龄的中位数来填补

    由于上面的操作已经对原始数据进行修改了,所以要是我们需要重新分类,那就要重新载入原始数据,不然后面的操作都会以上一步填充了所有年龄缺失值的基础上操作的哦!这个亏我吃过。。。

    性别的中位数

    我们得到的女性中位数是 27,男性的是 29,还是有差距的吧!我们后面需要用到的是,用得出的中位数来填充男女的缺失值。

    接下来的步骤,按照以前,通常的思路是用布尔型索引取到女性中缺失值的数据,然后用 27 重新赋值;同理可求男性的操作。

    但是我们这节课学了fillna 这个新的方法啊!

    不过刚刚我们使用 fillna 的时候,填充的只是一个数值,这里不止一个数值,就需要根据不同的情况来填充。此时可以用到 Pandas 中里的一个小技巧,Pandas 的值在运算的过程中,会根据索引的值来进行自动的匹配。在这里我们可以看到这里的索引是 female 和 male 两个值,如果原始数据也可以用性别来进行索引的话,就可以用 fillna 自动匹配相应的索引形式进行填充了。

    fillna 进行性别分类索引

    所以这里要对原来的数值重新设置索引,一开始是 0 1 2 这样的数值,现在要把它设置成性别这一列数据。用 set_index 语句,用 Sex 来进行索引,同时加入参数 inplace=True,表示在原来的数据上进行修改。

    inplace=True的含义应该讲了第三遍了,其实我觉得要是不是很明白这个语句的用法时,你可以先不加上这一句,跟着打代码,然后到后面运行的哪一步你发现和老师的代码不一样的时候,你就知道这个语句的重要性了。

    我们可以看到这里的运行结果 列索引变成了 Sex,列首索引是 male 和 female ,在行首 Sex 已经不存在了。

    填充性别分类的缺失值

    我们将这里分类中位数赋值为 age_median2。填充的套路和上面也是一样一样的,根据 Pandas 的自动匹配,填充的时候会根据索引来匹配不同的值了。因为后续需要用到 Sex 这一列,所以这里也需要重置索引,将索引变成它的列。这里使用 reset_index。

    非空值是 891 时就说明缺失值全部填充完毕了,这时候的均值是29.4。

    所以到这里,我们把性别分类的缺失值也用各自的中位数填充完毕了。下一步要考虑的是,同时两个因素的影响:

    同时考虑性别和舱位因素

    那我们首先来看一下,在不同年龄和不同舱位的中位数,有什么变化呢?

    groupby 分组的对象分别是 Pclass 舱位 和 Sex 性别,由于这里需要考量的有两个因素:性别和舱位,所以这里需要使用到中括号,后面加上用 Age.median 就可以得到分组的中位数了。

    不同舱位男女年龄的中位数

    这里就有两个索引,分别是舱位和性别,我们可以看到,随着舱位的下降,它的年龄也是在下降的。用我们的话理解就是,年轻人普遍比年长的穷啊,年龄大一点的人积累的财富也多一点。

    那接下来我们就用得出的中位数来各自重新赋值给舱位和性别。这时还是可以用 fillna 的,但是需要设置二重索引。

    舱位和年龄的分类

    套路还是一样的,把这里得出的中位数赋值为 age_median3,然后对索引进行重新的赋值,同样的,这里有两个因素,也是使用中括号,用 set_index 的方法。

    然后来看一下重置索引后的数据。看输出我们是可以看到二重索引的,第一列的组合内容一共有 3*2=6 种情况。在列上面,已经没有 Pclass 和 Sex 两列数据了,因为此刻它们已经在索引上了。

    现在按同样的方法 fillna ,用索引值来匹配不同的中位数。

    额。。。这两张看起来和上面的一毛一样啊,是我哪里错了吗。。。?

    为了还原这样的索引,这里用 reset来重置

    分类填充结果

    这里的输出可以看到非空数值已经是891了,表示已经填满缺失值了。平均值下降到了29.1岁,因为三等舱的人数比较多,而且年龄比较小,所以拉低了平均值。

    我们总结一下,这里使用的 fillna 的方法,可以对总体的中位数进行操作,或者分类之后对中位数进行操作。分组之后由于有索引,所以同时也需要对原始数据进行索引,对于相同索引值,可以用匹配来进行填充。

    展开全文
  • python实现缺失值处理

    千次阅读 2021-07-07 09:56:50
    缺失值的处理 由于各种原因,我们使用的数据集或多或少地存在着缺失值。如果直接删除缺失值,会丢失其他...python中统计缺失值的方法如下: import numpy as np import pandas as pd data = pd.read_csv('data.csv',e
  • python缺失值填充方法

    千次阅读 2022-06-11 14:53:49
    thresh=None:等于几表示有几个缺失值存在才会删除所在或列。 inplace=False:表示对原来的数据集不进行操作,True时表示对原来的数据集也进行操作。 3.2:df.fillna()填充缺失值 fillna(value=None, method=...
  • Python缺失值的处理

    2022-08-28 19:16:34
    pandas中None或NaN代表缺失值,检测缺失值的常用方法包括isnull,nonull,isna,notna。pandas中提供了fill函数填充缺失值
  • python 检查数据中是否有缺失值,删除缺失值的方式# 检查数据中是否有缺失值np.isnan(train).any()Flase:表示对应特征的特征值中无缺失值True:表示有缺失值通常情况下删除行,使用参数axis = 0,删除列的参数axis =...
  • Python处理缺失值

    千次阅读 2020-12-23 21:29:59
    首先创建具有缺失值NaN(Not A Number)的CSV(comma-separated values)文件:import pandas as pdfrom io import StringIOcsv_data = """A,B,C,D1.0,2.0,3.0,4.05.0,6.0,,8.00.0,11.0,12.0,"""# If you are using ...
  • 2.2 构建一个DataFrame 删除空值数量≥3的df.dropna(thresh=3)删除索引为2的中,存在空值的列df.dropna(subset=[2],axis=1) 结果为:
  • 记得先点 蓝字关注我哦~ 今日课程菜单Java全栈开发 | Web前端+H5大数据开发 | 数据分析 人工智能+Python | 人工智能+物联网做完数据采集就可以直接进行分析了吗?肯定不是的。就拿做饭打个比方吧,对于很多人来说,...
  • python_drop业务场景python_pandas.当一个指标为空、无值、为特殊值时(0),我们认为这个数据...dropna() 方法过滤任何含有缺失值pandas.DataFrame里,如果一数据有任意值为空,则过滤掉整行,这时候使用dro...
  • 1、重复处理把数据结构中,相同的数据只保留一。函数语法:drop_duplicates()删除重复newdf=df.drop_duplicates()from pandas import read_csvdf = read_csv('D://PDA//4.3//data.csv')df#找出行重复的位置...
  • import numpy as npimport pandas as pdfrom pandas import Series,DataFrame找出确实数据的方法missing = np.nan #创建变量使其等于numpy中表示缺失值的值series_obj = Series(['a','b',missing,'d','e','f',...
  • python,pandas缺失值数据处理

    千次阅读 2020-02-23 16:13:57
    缺失值数据处理方式: 1.数据补齐 2.删除对应数据 3.不处理 data.csv文件内容: import pandas as pd ''' uft-8编码:包含全世界所有国家需要用到的字符,英文网站用的较多 gbk编码:包含全部的中文字符 unicode...
  • python处理数据中缺失值

    千次阅读 2020-11-30 10:36:40
    (1)直接删除法(当缺失值个数只占整体很小一部分时)在采用删除法处理缺失值时,需要首先检测样本总体中确实值得的个数。python中统计缺失值的方法为:import numpy as npimport pandas as pd#读取数据,将空值...
  • 对于数据挖掘的缺失值的处理,应该是在数据预处理阶段应该首先完成的事,缺失值的处理一般情况下有三种方式:(1)删掉缺失值数据(2)不对其进行处理(3)利用插补法对数据进行补充第一种方式是极为不可取的,如果你的...
  • Python中如何在DataFrame中删除包含无效值(缺失值)的?如何对包含无效值(缺失值)的进行填充? 一、Python的DataFrame中删除包含无效值(缺失值)的 语法如下:df1.dropna(),返回值为删除包含nan的dataframe...
  • 数据清洗中缺失值的处理
  • 文章目录一、函数参数二、例子详解2.1 载入库2.2 构建一个...   axis:0或’index’,表示按行删除;1或’columns’,表示按列删除。    how:‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;‘all’
  • python数据预处理之缺失值的各种填补方式

    万次阅读 多人点赞 2020-05-12 20:13:56
    (1)删掉缺失值数据 (2)不对其进行处理 (3)利用插补法对数据进行补充 第一种方式是极为不可取的,如果你的样本数够多,删掉数据较少,这种情况下还是可取的,但是,如果你的数据本身就比较少,而且还删除...
  • excel如何批量删除缺失数据所在? 一、首先Ctrl + G,调出‘定位’,并单击‘定位条件’: ...三、显示缺失值: 四、单击右键,选择‘删除’: 五、选择‘整行’,单击‘确定’: 六、效果图: ...
  • 在使用python进行数据分析时,如果数据集中出现缺失值、空值、异常值,那么数据清洗就是尤为重要的一步,本文将重点讲解如何利用python处理缺失值创建数据为了方便理解,我们先创建一组带有缺失值的简单数据用于讲解...
  • Python Pandas 处理缺失值

    千次阅读 2021-01-13 18:56:27
    当我们拿到一份原始数据,首先会查看数据的基础信息,例如每一列数量统计,内存消耗、哪些列有缺失值等。完整的数据对于我们的数据分析工作来说意义重大,但对于实际收集数据的人却不是,所以我们经常会遇到数据缺失...
  • 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 ...
  • pandas使用dropna函数删除dataframe中所有包含缺失值的数据(drop rows which contain missing vlaues in dataframe)
  • 更多内容请参考官网的DOC:...df.dropna(subset=['b', 'd'], thresh=1, axis=0) # 删除'a', 'd'这两列中少于1个有效值所在
  • Pandas中缺失值的相关概念与处理方法总结摘要:本篇总结了Pandas中缺失值的相关概念、原理及处理方法,旨在帮助学习者快速搭建知识框架、更好地理解各类缺失值的含义,因而对于一些具体操作并未详细演示。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,753
精华内容 1,901
热门标签
关键字:

python删除缺失值所在行