Python数据分析学习笔记(二)——数据清洗及特征处理

一、缺失值的观察与处理

通常拿到的数据中含有很多缺失值,需要经过数据清洗达到可以分析的标准。
处理缺失值一般有三种思路:

  • 将缺失值置为一个常数
  • 使用函数DataFrame.fillna()
    可以通过常数填充,还可以通过字典填充不同常数
    参数:
    method:填充方法,ffill——用前一个非空缺值填充,bfill——用下一个空缺值填充
    limit:限制填充个数
    axis:修改填充方向
  • 将缺失值所在行删除
  • 使用函数DataFrme.dropna()
    参数:
    axis: 默认axis=0。0为按行删除,1为按列删除
    how: 默认 ‘any’。 ‘any’指带缺失值的所有行/列;’all’指清除一整行/列都是缺失值的行/列
    thresh: int,保留含有thresh个非nan值的行
    subset: 删除特定列中包含缺失值的行或列
    inplace: 默认False,不改动原数据

df.info()
df.isnull().sum()
df[np.isnan(df['Age'])]=0

df.dropna()

df.fillna()
df[df['Age']==None]=0

df[df['Age'].isnull()] = 0

二、重复值的观察与处理

  • 重复值的观察
    使用duplicated()方法,可以查找列表中重复值,仅在两条记录中所有数据都相等时才会被判定为重复
    duplicated()支持从前向后和从后向前的检索顺序,后被检索到的重复数据在重复值判断中显示True
df.duplicated()
df.duplicated().sum()
df[df.duplicated()]
  • 重复值的处理
    使用drop_duplicates()方法可以删除重复记录
df.drop_duplicates(inplace = True)
df.reset_index
df.to_csv('test_clear.csv')

三、特征观察与处理

观察列索引可以发现,不同数据有不同的数据类型。
数值型特征分为离散型数值特征和连续型数值特征,一般可以直接用于模型的训练,但有时为了模型的稳定性及鲁棒性会对连续变量进行离散化。
文本型特征往往需要转换成数值型特征才能用于建模分析

  • 分箱操作
    是一种无监督离散化方法,分为等距离分箱和等频度分箱。特征离散化后模型会更稳定,降低了模型过拟合的风险。
    可以使用pandas.cut()方法实现分箱
    pandas.cut(x,bins,right,labels,retbins,precision)
    x:被切分的数组,必须是一维的
    bins:被切分后的区间,可以是一个int型的标量(x被切分为bins个组)、标量序列(定义了被分割后每一个区间的边缘),或者pandas.IntervalIndex(定义要使用的精确区间)
    right:bool型参数,表示是否包含区间右部
    labels:给分割后的区间打标签

df['AgeBand'] = pd.cut(df['Age'],5,labels=[1,2,3,4,5])

df['AgeBand']=pd.cut(df['Age'],[0,5,15,30,50,80],labels=[1,2,3,4,5])

df['AgeBand']=pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels=[1,2,3,4,5])
  • 变换文本型变量
    1、查看文本变量及名称
    data.value_counts()可以用于查看表格某列中有多少不同值,并计算每个不同值有多少重复值
    unique()方法可以用于统计list中的不同值,返回一个array,仅返回不同值
    nunique()方法可以直接统计不同值的个数
    map()方法会根据提供的函数对制定序列做映射
df['Sex'].value_counts()

male      453
female    261
Name: Sex, dtype: int64

df['Sex'].unique()

array(['male', 'female'], dtype=object)

df['Sex'].nunique()

2

df['Sex_num']=df['Sex'].map({'male':1,'famale':2})

2、将文本型变量进行转化

对于离散特征的编码分两种情况:
1、特征取值之间没有大小之分的意义,比如颜色,就可以用独热编码
2、特征取值之间有大小之分的意义,比如衣服的尺码,可以直接用映射进行
pd.get_dummies()可以用于生成独热编码
参数:
data:Series或者DataFrame
prefix:用于追加DataFrame列名的字符串。在DataFrame上调用get_dummies时,传递一个长度等于列数的列表。或者,prefix可以是一个将列名映射到前缀的字典

for feat in ['Age','Embarked']:
    x = pd.get_dummies(df[feat],prefix=feat)
    df=pd.concat([df,x],axis=1)

以上学习内容来自Datawhale

Original: https://blog.csdn.net/Malcohol/article/details/122394017
Author: Malcohol
Title: Python数据分析学习笔记(二)——数据清洗及特征处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751163/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球