python数据清洗 0302

python数据清洗

第二part

  • Q1 str分割

昨天发现merge无法匹配,找到原因发现id是不对应的

df1的id是四位数;df2的id是六位数 后两位是区号

tem["city"]=tem["city"].astype(str)
tem["city"]=tem["市代码"].str[0:4]

这样就解决了id_code 不匹配的问题

  • Q2 无法修改为datetime格式

原因:原始数据date 超过pd.timestamp.max,eg 3099-12-1

df0.loc[df0['data'] > f'{pd.Timestamp.max:%Y%M%d}', 'data'] 
= pd.np.nan
df0["data"]=pd.to_datetime(df0["data"])
  • Q3 特征变量的类别过多,如果一些类别数量过少,可以删掉 or脏的数据也del
a=df0["var"].value_counts()
m=df0["var"].isin(a.index[a<number])
df0.loc[m,"土地用途"]=np.nan # 替换为空缺值

时间数据加减 df[]=(df[]-df[]).dt.days

删除price中为空缺值的数据

df1.dropna(subset=["price"],inplace=True)
  • Q4 数据存在inf 无穷大 or 无穷小 因为a/b b存在0 或 空缺
df2["price"].replace([np.inf, -np.inf], np.nan)

导出到dta =.= 文件太大了 导出不出来df.to_stata("name.dta)

ps: price里面有负数 进行筛选

df2=df1[df1["avgprice"]>0]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值