二、数据清洗和整理

数据整合:表的连接

  • 数据导入
import pandas as pd
import os 
os.chdir(r"E:\数据与脚本\5Preprocessing")
sale=pd.read_csv(r"sale.csv",encoding="gbk") # 有英文,所以改为gbk
sale

在这里插入图片描述

  • 连接数据库
import sqlite3 # 可以连接大部分数据库

con = sqlite3.connect(':memory:') # 数据库连接
sale.to_sql('sale', con) # 将DataFrame注册成可用sql查询的表
newTable = pd.read_sql_query("select year, market, sale, profit from sale", con) # 也可使用read_sql
newTable.head()

在这里插入图片描述

数据清洗

错误值处理

  1. 连续变量–直方图, 分类变量–柱形图 , 观察错误值
  2. 错误值处理:缺失值替换

缺失值处理

建模时,模型越不精确越好。

  • 缺失值 <20%:用均值或中位数填(右偏的用中位数)
  • 20%<缺失值<80%:均值或中位数统计量填(右偏的用中位数),并生成指示(哑)变量
  • 缺失值>80%:直接生成指示(哑)变量
# 查看是否缺失
camp.count()
7292
camp.describe()
9686
  • 填补缺失值:补充缺失值+填虚拟指标+建模
vmean = camp['Age'].mean(axis=0, skipna=True)#提取均值,skipna=True计算去掉缺失值的均值
camp['Age_empflag'] = camp['Age'].isnull()#产生虚拟指标,判断是否是补充的缺失值
camp['Age']= camp['Age'].fillna(vmean) #用均值填补缺失值
camp['Age'].describe()

在这里插入图片描述

噪音值(离群值)

  • 删除
  • 盖帽法:小于0.001的用0.001的替代,大于0.99的用0.99替代
def blk(floor, root): 
    def f(x):       
        if x < floor:
            x = floor
        elif x > root:
            x = root
        return x
    return f

q1 = camp['Age'].quantile(0.01) #计算百分位数,百分之一对应的分位点
q99 = camp['Age'].quantile(0.99)
blk_tot = blk(floor=q1, root=q99) 
camp['Age']= camp['Age'].map(blk_tot)
camp['Age'].describe()

在这里插入图片描述

  • 分箱法:
    等深分箱(百分位数): pd.cut(camp['Age'],4)
    等宽分箱(值域分箱):pd.qcut(camp['Age'],4)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值