DataFrame.describe() 抑制科学计数法。

66

如何从dataframe.describe()中抑制科学计数法输出:

contrib_df["AMNT"].describe()

count    1.979680e+05
mean     5.915134e+02
std      1.379618e+04
min     -1.750000e+05
25%      4.000000e+01
50%      1.000000e+02
75%      2.500000e+02
max      3.000000e+06
Name: AMNT, dtype: float64

我的数据类型是float64:

contrib_df["AMNT"].dtypes

dtype('float64')

1
那么你想要什么呢?.describe返回一个DataFrame,所以你可以简单地使用.drop来删除你不想要的行。如果你只想要一个像count这样的东西,你可以单独使用.count。或者你可以创建自己的describe函数,只返回你感兴趣的内容。 - Kartik
16
可以使用类似于pd.options.display.float_format = '{:.2f}'.format这样的方式来设置显示浮点数的格式。 - Jarad
@Jarad 很好。请将其发布为答案,我会接受它。 - mfabi
@Jarad!请将其发布为答案,以便被 @mfabi 接受,正如他之前所说的那样。这应该是摆脱 Pandas 中默认显示的科学数字的正确方法。谢谢! - Elias
1个回答

125

对于单列:

contrib_df["AMNT"].describe().apply(lambda x: format(x, 'f'))

对于整个DataFrame(如@databyte所建议的)

df.describe().apply(lambda s: s.apply('{0:.5f}'.format))

对于整个数据框(如@Jayen所建议的):

contrib_df.describe().apply(lambda s: s.apply(lambda x: format(x, 'g')))
由于函数describe返回一个数据框,因此上述函数所做的就是简单地将每行格式化为常规格式。 我写这篇答案是因为我有一个想法在脑海中,那就是“获取95的计数为95.00000e+01是没有意义的”。 而且在我们的常规格式中更容易进行比较。 在应用上述函数之前,我们得到的结果如下:
count    9.500000e+01
mean     5.621943e+05
std      2.716369e+06
min      4.770000e+02
25%      2.118160e+05
50%      2.599960e+05
75%      3.121170e+05
max      2.670423e+07
Name: salary, dtype: float64

应用之后,我们得到

count          95.000000
mean       562194.294737
std       2716369.154553
min           477.000000
25%        211816.000000
50%        259996.000000
75%        312117.000000
max      26704229.000000
Name: salary, dtype: object

17
对于想在数据框而不是序列上执行此操作的任何人,可以使用以下代码:contrib_df.describe().apply(lambda s: s.apply(lambda x: format(x, 'g'))). 该代码将为数据框中的每一列生成描述性统计信息,并将其格式化为更易读的形式。 - Jayen
1
@SCool - 我认为 x 是一个普通的 Python 浮点数,所以你应该能够使用 format(math.ceil(x),'g') - Jayen
2
这对我没用,出现了unsupported format string passed to Series.__format__的错误。 - Joseph Garvin
@JosephGarvin 对不起,我现在无法编辑它。 我想要g来适应我的情况,但是问题的答案应该是f。 我只是想展示如何对数据框执行操作。 - Jayen
1
不需要嵌套lambda表达式:df.describe().apply(lambda s: s.apply('{0:.5f}'.format)) - databyte
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接