整理一些用Pandas进行数据预处理的操作

读入数据

读入部分列,自动处理千分位符

column_num = [x for x in range(13,35)]
df = pd.read_csv('???.csv',encoding='gbk',thousands=',',usecols=column_num)

删除空值行

针对部分列

#这里的any是针对某一行,subset中有任何一个为空,就删除该行
df = df.dropna(axis=0, how='any',subset=[A','B'])
df.shape

处理特殊字符

主要针对百分号:百分号会导致列的dtype改变,所以思路是先找到object类型的列,然后判断是否含有百分号。

from pandas.api.types import is_object_dtype
object_column_index = [index for index, item in enumerate(df.dtypes) if is_object_dtype(item)]
print("object型的列索引为:%s" %object_column_index)
# 按列处理
for i in object_column_index:
    data = df.ix[:10, i].tolist()
    for item in data:
        if str(item).find("%"):
            continue
        else:
            print("出现了不含有百分号的行")
            break
    # 替换为对应小数            
    df.ix[:, i] = df.ix[:, i].map(lambda x: float(str(x).replace('%',''))/100)
df.head()

缺失值填充

均值或者最大最小值,api是现成的。

#观察是否包含缺失值
df.isnull().any()

#也可以直接获取含有缺失值的列索引
null_index = [index for index, item in enumerate(df.isnull().any()) if item==True]
null_index

#填充
for i in null_index:
    df.ix[:,i] = df.ix[:,i].fillna(df.ix[:,i].mean())  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值