DataWhale第二次打卡

DataWhale第二次打卡

感觉学习还是比较紧凑的,需要掌握的东西挺多的。还涉及到一点比较新的知识,这些知识还是比较难去掌握的。

第二章

第一部分 数据清洗

2.1.1缺失值的整理
  • 查看和判断缺失值

    data.isna().sum()
    data.isnull().sum()
    #结果显示:
    	PassengerId      0
    	Survived         0
    	Pclass           0
    	Name             0
    	Sex              0
    	Age            177
    	SibSp            0
    	Parch            0
    	Ticket           0
    	Fare             0
    	Cabin          687
    	Embarked         2
    	dtype: int64
    
  • 删除缺失值

    df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
    
    axis : {0 or 'index', 1 or 'columns'}, default 0
    
        0, or 'index':删除包含丢失值的行
    
    	1, or 'columns':删除包含丢失值的列
    
    how : {'any', 'all'}, default 'any'
    
    	'any': 如果存在NA值,则删除该行或列
    
    	 'all': 如果所有值都是NA,则删除该行或列
    
    thresh: int,保留含有int个非空值的行
    
    subset: 对特定的列进行缺失值删除处理
    

    具体运用:

    data["Age"].dropna()
    #可看最后删除后的空值情况
    data["Age"].dropna().isnull().sum()
    
  • 填充缺失值

    df.fillna(values= , axis = , method = ,limit= ,inplace= )
    
    method参数:改变替代值的方式
    
    	当为'ffill',表示用前面的值填充
    
    	当'bfill'表示用后面的值填充。
    	
    axis参数默认为0,即沿着行填充,为1则沿着列填充
    
    limit=” “限制填充个数
    

    具体运用

    data.fillna(method="ffill")
    
  • 替代缺失值

    df.replace(替代值,替换值)
    

    具体运用:

    data.replace(np.nan,"空")
    
2.1.2重复值观察和处理
  • 查看重复项

    df.duplicated()
    #统计重复项的次数
    df.duplicated().sum()
    
  • 处理重复值

    df.drop_duplicates(self, subset=None, keep=‘first’, inplace=False)
    
    subset:需要删除的列,默认是全部的列
    
    keep:{‘first’, ‘last’, False}, default ‘first’
    	确定要保留的重复项(如果有),first和last分别是第一次和最后一次,false则是删除所有的重复项
    	
    inplace:bool, default False,
    	是否覆盖原来的df
    	如果inplace=Ture,则返回删除重复项的df 
    	
    ignore_index:bool, default False
    	
    

第二部分 特征观察与处理

2.2.1 分箱(离散化)处理

分箱操作:将连续数据离散化

-pd.cut(data,分组范围,labels= ,):根据样本数值进行分箱

具体运用:

data1["Age"]=pd.cut(data1["Age"],5,labels=[1,2,3,4,5],right=False)
#right参数:决定哪边进行闭合

-pd.qcut(data,分组范围,labels= ):根据样本分位数进行分箱
具体运用:

data3["Age"]=pd.qcut(data3["Age"],[0,1,0.3,0.5,0.7,0.9],labels=list(range(1,6)))
2.2.2 sklearn.preprocessing的LabelEncoder

感觉这方法跟dict 结合df.map()映射差不多的

##参考答案
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:
    lbl = LabelEncoder()  
    label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))
    df[feat + "_labelEncode"] = df[feat].map(label_dict)
	#?其实到上面的步骤已经可以达到题目要求了。不知道为何还要加多下面一步骤?
    df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))

##自己写的答案
from sklearn import preprocessing
le=preprocessing.LabelEncoder()
list_1=[x for x in data["Cabin"].unique()]
data4["Cabin"]=data4["Cabin"].replace(np.nan,"空")
list_1.append("空")
le=le.fit(list_1)
data4["Cabin"]=le.transform(data4["Cabin"])

2.2.3 one-hot编码

(还没有搞懂为什么数据处理中需要用到这个)

2.2.4 文本特征的提取
  • str.extract()
    可用正则从字符数据中抽取匹配的数据,只返回第一个匹配的数据。
    (正则表达式的知识需要后续加强学习)

(不定时更新)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值