gpt4 book ai didi

python - Pandas 'describe' 未返回所有列的摘要

转载 作者:IT老高 更新时间:2023-10-28 21:44:47 24 4
gpt4 key购买 nike

我在数据帧上运行“describe()”并仅获取 int 列的摘要(pandas 14.0)。

文档说,对于最常见值的对象列频率,将返回额外的统计信息。有什么问题? (顺便没有返回错误信息)

编辑:

我认为这是该函数在数据框中的混合列类型上的行为方式。虽然文档没有提到它。

示例代码:

df_test = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
df_test.dtypes
df_test.describe()
df_test['$a'] = df_test['$a'].astype(str)
df_test.describe()
df_test['$a'].describe()
df_test['$b'].describe()

与此同时,我的丑陋工作:

def my_df_describe(df):
objects = []
numerics = []
for c in df:
if (df[c].dtype == object):
objects.append(c)
else:
numerics.append(c)

return df[numerics].describe(), df[objects].describe()

最佳答案

从 pandas v15.0 开始,使用参数 DataFrame.describe(include = 'all')当数据框具有混合列类型时,获取所有列的摘要。默认行为是仅提供数字列的摘要。

示例:

In[1]:

df = pd.DataFrame({'$a':['a', 'b', 'c', 'd', 'a'], '$b': np.arange(5)})
df.describe(include = 'all')

Out[1]:

$a $b
count 5 5.000000
unique 4 NaN
top a NaN
freq 2 NaN
mean NaN 2.000000
std NaN 1.581139
min NaN 0.000000
25% NaN 1.000000
50% NaN 2.000000
75% NaN 3.000000
max NaN 4.000000

数值列将包含 NaN,用于与对象(字符串)相关的汇总统计信息,反之亦然。

仅汇总数字或对象列

  1. 要仅在数字列上调用 describe(),请使用 describe(include = [np.number])
  2. 使用 describe(include = ['O']) 仅对对象(字符串)调用 describe()

    In[2]:

    df.describe(include = [np.number])

    Out[3]:

    $b
    count 5.000000
    mean 2.000000
    std 1.581139
    min 0.000000
    25% 1.000000
    50% 2.000000
    75% 3.000000
    max 4.000000

    In[3]:

    df.describe(include = ['O'])

    Out[3]:

    $a
    count 5
    unique 4
    top a
    freq 2

关于python - Pandas 'describe' 未返回所有列的摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com