首先看数据:

import pandas as pd
x = pd.DataFrame([[166,52,'男'],[152,43,'女'],[182,73,'男'],[172,63,'女'],[np.nan,np.nan,'女'],[np.nan,np.nan,'男']],columns = ['身高','体重','性别'])

常用的填充缺失值的方法为使用均值、众数等进行填充,如下:

但当我们需要对不同类别数据进行填充其类别的均值时,可能比较麻烦,大家常用的思路可能如下,即取出不同类别的数据,然后依次填充:

labels = x['性别'].unique()
for label in labels:
    for col in x.columns[:-1]:
        data_ = x.loc[x['性别']==label, col]
        x.loc[x['性别']==label, col] = data_.fillna(data_.mean())
print(x)

 但我们可以使用分组以及transform聚合方法更简便的完成这个操作:

x = pd.DataFrame([[166,52,'男'],[152,43,'女'],[182,73,'男'],[172,63,'女'],[np.nan,np.nan,'女'],[np.nan,np.nan,'男']],columns = ['身高','体重','性别']) x.loc[:,x.columns != '性别'] = x.groupby('性别').transform(lambda x:x.fillna(x.mean())) print(x)

transform方法的作用为对分组后的数据聚合得到的数返回给每一行(若聚合得到为单个标量,则返回给每一行,即同一个组别的每一行数据相等,若聚合得到的为原数据的大小,则对应返回给原数据,如这里结果),在这里对性别进行分组后,对每个组进行填充然后返回到原数据,即可实现对不同组别进行填充。

在实际应用中对于数据 进行 分析的时候,经常能看见 缺失值 ,下面来介绍一下如何利用 pandas 来处理 缺失值 。常见的 缺失值 处理方式有,过滤、 填充 缺失值 的判断 pandas 使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的 缺失值 ,同时 python 内置None值也会被当作是 缺失值 。 DataFrame.dropna(axis=0, how='any', thresh=None, su... axis : 删除行还是列,{0 or ‘index’, 1 or ‘columns’}, default 0 how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除 inplace : 如果为True则修改当前 df ,否则返回新... pandas 填补 缺失值 方法 在处理数据的过程中,经常会遇到原数据部分内容的缺失,为了保证我们最终数据统计结果的正确性,通常我们有两种处理方式,第一种就是删除掉这些部分缺失的数据;第二种就是填补这些缺失的数据。接下来,我们主要介绍填补 缺失值 方法 。 咱们所用到的数据: import pandas as pd import numpy as np planets = pd.read_... Pandas 中有一种特殊的数据类型叫做category。它表示的是一个 类别 ,一般用在统计分类中,比如性别,血型,分类,级别等等。有点像java中的enum。 今天给大家详细讲解一下category的用法。 import pandas as pd import datetime as datepd #日期模块 path='C:/newapp01/ python _file/ pandas _file/test01.xlsx' data=pd.read_excel(path,skiprows=1,usecols='B:E',dtype={'序号':str,'性别':str,'日期':str}) #skiprows自动跳过几行,usecols选中列的作用域