对于pandas中describe方法处理数据时候需要注意数据类型问题与统计结果显示不全问题

  • 问题原因
  • 书本代码
  • 测试代码
  • 实验分析
  • 测试修改结果方法二


问题原因

对DataFrame数据进行describe前需要注意,如果非category类,则describe只针对传统数值型数据筛选后进行描述统计分析

书本代码

python的dataframe展示全部数据 python dataframe describe_大数据


书中代码的思路是通过统计count数=0,如果为真,则进行删除改列

判断的前提是,每个列都需要被统计到count的值,但我通过实验发现并不是每一个列都会在describe后返回的数据中被统计到

测试代码

python的dataframe展示全部数据 python dataframe describe_python_02

Detail1变量:

python的dataframe展示全部数据 python dataframe describe_大数据_03

colisNull1变量:

python的dataframe展示全部数据 python dataframe describe_大数据_04


Col变量:

python的dataframe展示全部数据 python dataframe describe_pandas_05

colisNull2变量:

python的dataframe展示全部数据 python dataframe describe_python_06


colisNull3变量:

python的dataframe展示全部数据 python dataframe describe_大数据分析_07


colisNull33变量:

python的dataframe展示全部数据 python dataframe describe_python_08

coltype变量:

python的dataframe展示全部数据 python dataframe describe_数据_09

实验分析

通过观察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’)

测试修改结果方法二

python的dataframe展示全部数据 python dataframe describe_数据_10

python的dataframe展示全部数据 python dataframe describe_大数据分析_11


可以发现统计的数据为全部列