对于pandas中describe方法处理数据时候需要注意数据类型问题与统计结果显示不全问题
- 问题原因
- 书本代码
- 测试代码
- 实验分析
- 测试修改结果方法二
问题原因
对DataFrame数据进行describe前需要注意,如果非category类,则describe只针对传统数值型数据筛选后进行描述统计分析
书本代码
书中代码的思路是通过统计count数=0,如果为真,则进行删除改列
判断的前提是,每个列都需要被统计到count的值,但我通过实验发现并不是每一个列都会在describe后返回的数据中被统计到
测试代码
Detail1变量:
colisNull1变量:
Col变量:
colisNull2变量:
colisNull3变量:
colisNull33变量:
coltype变量:
实验分析
通过观察colisNull1变量我们可以发现
Describe方法只统计分析了两列的数据,也就是说在detail1这么多列中只有2列能被统计到,如果除了这两列出现了整列为空或者整列相同,则会出现忽略处理的情况。
我们再次独立统计两列,一个未被统计到的列“order_id”和被统的列“amounts”观察变量colisNull2可以发现,还是只有amounts列被统计
我们独立统计列order_id和detial_id,观察colisNull3和colisNull33,可以发现强制统计非传统数值类型的列可以被统计到,前提是这些列中不能有传统数值的列,否则会进行筛选统计
我们观察coltype可以看到detail1的DataFrame的各个列的数据类型
只有最初默认被统计的两列是float64的类型,属于传统数值型,所以会被自动统计。
这里有两种方法进行代码补充
第一种:
在统计非空时使用DataFrame_type.count()方法
在统计相同时,取所有列的值,是否等于第一个值,在进行False的in判断,如果其中存在Flase,则列值不全相同
第二种:在操作开始前,对DataFrame数据类型进行全转换,全部转换为category
DataFrame_type.astype(‘category’)
测试修改结果方法二
可以发现统计的数据为全部列