读入数据
读入部分列,自动处理千分位符
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())