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()
.fillna()
数字,method='ffill'(向前复制),method='ffill'(向后复制)
df['height'].fillna(df.groupby('gender')['height'].transform('mean'), inplace=True)
df['weight'].fillna(df['weight'].median(), inplace=True)
df['age'].interpolate(inplace=True)
3、数据清洗
data.duplicated() 和 data.drop_duplicates()
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)