pandas:pandas.DataFrame.describe仅返回一列的信息

时间:2016-08-29 08:16:36

标签: python python-3.x pandas kaggle

对于某个Kaggle数据集(规则禁止我在此处共享数据,但可以随时访问here),

import pandas
df_train = pandas.read_csv(
    "01 - Data/act_train.csv.zip"
)
df_train.describe()

我明白了:

>>> df_train.describe()
            outcome
count  2.197291e+06
mean   4.439544e-01
std    4.968491e-01
min    0.000000e+00
25%    0.000000e+00
50%    0.000000e+00
75%    1.000000e+00
max    1.000000e+00

然而对于相同的数据集df_train.columns给了我:

>>> df_train.columns
Index(['people_id', 'activity_id', 'date', 'activity_category', 'char_1',
       'char_2', 'char_3', 'char_4', 'char_5', 'char_6', 'char_7', 'char_8',
       'char_9', 'char_10', 'outcome'],
      dtype='object')

df_train.dtypes给了我:

>>> df_train.dtypes
people_id            object
activity_id          object
date                 object
activity_category    object
char_1               object
char_2               object
char_3               object
char_4               object
char_5               object
char_6               object
char_7               object
char_8               object
char_9               object
char_10              object
outcome               int64
dtype: object

我是否遗漏了为什么pandas只有describe数据集中的一列?

2 个答案:

答案 0 :(得分:2)

默认情况下,describe仅适用于数字dtype列。添加关键字参数include='all'From the documentation

  

如果include是字符串'all',则输出列集将匹配   输入一个。

为了澄清,describe的默认参数是include=None, exclude=None。产生的行为是:

  

两者都没有(默认)。结果将仅包含数字类型   列,如果没有,则只有分类列。

另外,从备注部分:

  

输出DataFrame索引取决于请求的dtypes:

     

对于数字dtypes,它将包括:count,mean,std,min,max和   较低,50和较高的百分位数。

     

对于对象dtypes(例如时间戳或字符串),索引将包括   最常见的计数,唯一,最常见和频率。   时间戳还包括第一个和最后一个项目。

答案 1 :(得分:0)

尝试下面的代码

import pandas
df_train = pandas.read_csv(
    "01 - Data/act_train.csv.zip"
)

def describe_categorical(df_train):
    from Ipython.display import display, HTML
    display (HTML(df_train[df_train.columns[df_train.dtypes=="object"]].describe().to_html()))

describe_categorical(df_train)