调用 .describe() 方法后,会显示出数字类型的列的一些统计指标,如 总数、平均数、标准差、最小值、最大值、25%/50%/75% 分位数:

如果想要查看非数字类型的列的统计指标,可以设置 include = ["object"] 来获得:

也可以数字和非数字类型的数据都展示:

想要将数据进行离散化(分箱),就是将数据分成几个区间,例如想要将年龄分成 3 个区间段,就可以使用 pd.cut() 方法来完成,返回的也是 Series

cut 默认自动生成等距的离散区间:

自定义区间:

离散化之后,想要给每个区间起个名字,可以在 pd.cut() 中使用参数 labels 来指定:

2、pd.qcut()

apply 方法既支持 Series,也支持 DataFrame,在对 Series 操作时会作用到每个值上,在对 DataFrame 操作时会作用到所有行或所有列(通过 axis 参数控制)

(1)对 Series 来说,如果使用自定义函数映射的方法,apply 方法 与 map 方法区别不大,但是 apply 不能支持对字典的映射转换

applymap 方法针对于 DataFrame,它作用于 DataFrame 中的每个元素,它对 DataFrame 的效果类似于 apply 对 Series 的效果

总结:pandas 中 map()、apply()、applymap() 的区别

map() 方法适用于 Series 对象,可以通过字典或函数类对象来构建映射关系对 Series 对象进行转换

在了解缺失值如何处理之前,首先要知道的就是什么是缺失值?直观上理解,缺失值表示的是"缺失的数据"

造成的缺失值有很多原因,实际生活中可能由于有的数据不全所以导致数据缺失,也有可能由于误操作导致数据缺失,又或者人为地造成数据缺失

在 DataFrame 中被当作是缺失值来处理的有:

Python 对象中的 None

直接对DataFrame对象使用 .dropna() 方法会删除掉所有带有缺失值的行(返回新表,并不是改变原表):

如果里面增加axis参数,指定第二坐标轴,就会默认删掉出现缺失值的列:

df.dropna() 中的参数 how 和 thresh 是设置删除行列标准的参数:

参数 how

None、np.nan、NaT(时间数据类型的缺失值) 这些都是 Pandas 眼中的缺失值,可以用上面的处理缺失值的方法进行操作,但是有时候在我们人类的眼中,某些异常值也会当做缺失值来处理,例如,在我们的存储的用户信息中,假定我们限定用户都是青年,年龄字段出现了80,我们就可以认为这是一个异常值,再比如,我们都知道性别分为男性(male)和女性(female),在记录用户性别的时候,对于未知的用户性别都记为了 “unknown”,很明显,我们也可以认为 “unknown” 是缺失值,此外,有的时候会出现空白字符串,这些也可以认为是缺失值。

对于上面的这些特殊情况,我们可以使用 replace 方法来替换成缺失值,进而可以使用 Pandas 的处理缺失值的方法进一步处理数据:

可以传入一个字典,进行不同规则的同时替换:

七、重复值的处理

df.drop_duplicates(subset=None, keep='first', inplace=False)

subset:设置用哪些列来标识重复项