首先看数据:
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选中列的作用域