特征工程数据预处理

1、快速查看整体信息

.info()

查看多种信息:
总行数和列数、每列元素类型和non-NaN的个数,总内存
DataFrame.info(verbose=None, memory_usage=True, null_counts=True)

verbose:True or False,字面意思是冗长的,也就说如何DataFrame有很多列,是否显示所有列的信息,如果为否,那么会省略一部分;
memory_usage:True or False,默认为True,是否查看DataFrame的内存使用情况;
null_counts:True or False,默认为True,是否统计NaN值的个数。
.ndim, .shape, .size

查看维数,形状,元素个数。
.head(), .tail()
 
默认分别查看头5行和后5行。
.describe()
 
快速查看每一列的统计信息,默认排除所有NaN元素。
DataFrame.describe( include= [np.number])

include:'all'或者[np.number 或 np.object]。numberic只对元素属性为数值的列做数值统计,object只对元素属性为object的列做类字符串统计。
.columns()
 
查看列名
.isnull.sum()
.notnull.sum()
 
查看缺失值总数
(df.shape[0]-df.count())/df.shape[0]
 
查看每个特征的缺失率

(df.shape[1]-df.T.count())/df.shape[1]
 
查看每个个体所缺失的特征个数

2、处理缺失值

.dropna()

# parameter axis=1 deletes the columns
.fillna()
 
数字,method='ffill'(向前复制),method='ffill'(向后复制)

df['height'].fillna(df.groupby('gender')['height'].transform('mean'), inplace=True)
#按照其他属性的统计值进行填充

df['weight'].fillna(df['weight'].median(), inplace=True)
#按中位数(median),平均值(mean),众数(mode),等填充

df['age'].interpolate(inplace=True)
#按插值填充

3、数据清洗

data.duplicated() 和 data.drop_duplicates()
#前者标记出哪些是重复的(true),后者直接将重复删除;

data.drop_duplicates(['Area'])
#根据单变量剔除重复
.replace()
#替换异常值
.map
数据映射
以Areas为例,Areas取四个地区:A/B/C/D,这四个地区在分析的时候并没有什么意义,但A/B/C为城市,D为农村,这个很有意义,所以我要根据areas创建新变量Type:U-城市、R-农村。

areas_to_type={'A':'U', 'B':'U', 'C':'U', 'D':'R', }
data['Type']=data['Areas'].map(areas_to_type)

数字变量类型化

以年龄为例:
cutPoint=[0,30, 40, 50,80]
groupLabel=[0,1,2,3]
data['ageGroup'] =pd.cut(data['Age'],cutPoint, labels=groupLabel)

按分位数划分:qcut(data, n)
data['ageGroup'] =pd.qcut(data['Age'],2)

你可能感兴趣的:(Python,python)