【问题标题】:How to change the format of .describe() output?如何更改 .describe() 输出的格式?
【发布时间】:2019-08-19 01:29:23
【问题描述】:

我将.describe() 放入数据框,输出看起来不太好。我希望输出显示整数,而不是用指数进行简化。

输入:

df["A"].describe()

输出的样子:

count    6.000000e+01
mean     7.123568e+04
std      2.144483e+05
min      1.000000e+02
25%      2.770080e+03
50%      1.557920e+04
75%      4.348470e+04
max      1.592640e+06
Name: A, dtype: float64

预期输出:

count    60.0
mean     7123.568
std      214448.3
min      100.0000
25%      2770.080
50%      15579.20
75%      43484.70
max      1592640.0
Name: A, dtype: float64

【问题讨论】:

标签: python pandas dataframe format scientific-notation


【解决方案1】:

你可以在pandas set_option中更改pandas的@​​987654321@

import pandas as pd
import numpy as np

pd.set_option('display.float_format', lambda x: '%.5f' % x)

data = pd.DataFrame()

data['X'] = (np.random.rand(1000, ) + 10000000) * 0.587

data['X'].describe()

# Output 
count      1000.00000
mean    5870000.47894
std           0.28447
min     5870000.00037
25%     5870000.23637
50%     5870000.45799
75%     5870000.71652
max     5870000.99774
Name: X, dtype: float64

或者不使用set_option 使用apply 这样的输出系列

import pandas as pd
import numpy as np

data = pd.DataFrame()

data['X'] = np.random.rand(1000, ) + 10000000 * 0.587

data['X'].describe().apply("{0:.5f}".format)

#output

count       1000.00000
mean     5870000.48955
std            0.29247
min      5870000.00350
25%      5870000.22416
50%      5870000.50163
75%      5870000.73457
max      5870000.99995

【讨论】:

  • 您好,非常感谢这两种方法都有效!我有一点要澄清,对于使用 set_option,是否意味着如果我使用 set_option,多次调用 .describe(),输出将始终保留 5 位小数?
  • 如果您使用set_option 并更改了float_format,pandas 将在整个代码中提供的float_format 中显示浮动
【解决方案2】:

尝试为使用 pandas 获得的输出设置浮点格式

import pandas as pd

pd.set_option('display.float_format', lambda x: '%.3f' % x)

【讨论】:

    【解决方案3】:

    只需一行熊猫就可以为您解决问题。

    df[["A"]].describe().format('{:.3f}')
    

    【讨论】:

    • 对我来说失败了:AttributeError: 'Series' object has no attribute 'format'
    • 试试这个:df[["A"]].describe().format('{:.3f}')
    【解决方案4】:

    包括对上面建议的答案的小修改,这往往会在我的 Python (3.7.7)/Pandas (1.3.3) 版本中引发错误。 假设您只需要不超过第三位有效数字的摘要统计信息,您可以使用 applymap() 和匿名函数。

    例如:

    df[["A"]].describe().applymap(lambda x: f"{x:0.3f}")
    

    【讨论】:

      【解决方案5】:

      如果您使用的是 Python 3.8 和 Pandas 1.3.5,则简单的解决方案:

      df.describe().applymap('{:,.2f}'.format)
      

      【讨论】:

        【解决方案6】:

        你可以使用

        df["A"].describe(include=['category'])
        

        【讨论】:

          【解决方案7】:

          #fun 以易于阅读的格式读取长数字,例如百万万亿

          def human_format(num):
              magnitude = 0
              while abs(num) >= 1000:
                  magnitude += 1
                  num /= 1000.0
              # add more suffixes if you need them
              return '%.2f%s' % (num, ['', 'K', 'Million', 'Trillion', 'G', 'P'][magnitude])
          

          原始数据帧

          df.describe()
                     sales        profile
          count   3.504600e+04    35046.000000
          mean    1.132153e+07    613.877191
          std     2.622250e+08    3862.190022
          min    -3.702949e+09    -16202.130000
          25%     5.221783e+03    7.000000
          50%     3.110371e+04    33.000000
          75%     2.131200e+05    135.000000
          max     2.621423e+10    92930.370000
          
          

          以上:- 09 表示万亿,06 百万等等.. 但读起来仍然很乱。

          下面:- 你可以用更人性化的方式阅读它

          df2 = df.describe() #creating a diff. dataframe
          for x in df2:
            df2[x] =df2[x].apply(human_format)
          
          df2
                  total_amounts   volume_mt
          count   35.05K           35.05K
          mean    11.32Million     613.88
          std     262.22Million    3.86K
          min     -3.70Trillion    -16.20K
          25%     5.22K            7.00
          50%     31.10K           33.00
          75%     213.12K          135.00
          max     26.21Trillion    92.93K
          

          【讨论】:

            猜你喜欢
            • 2015-12-26
            • 2016-09-24
            • 2022-01-21
            • 2019-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多