我把.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
您可以在熊猫set_option
中更改熊猫的float_format
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
尝试为使用熊猫获得的输出设置浮点格式
import pandas as pd
pd.set_option('display.float_format', lambda x: '%.3f' % x)
包括对上面建议的答案进行小的修改,这些答案往往会在我的 Python (3.7.7(/Pandas (1.3.3( 版本中引发错误。假设您只需要最多第三个有效数字的摘要统计信息,则可以使用 applymap()
和匿名函数。
例如:
df[["A"]].describe().applymap(lambda x: f"{x:0.3f}")
使用的是 Python 3.8 和 Pandas 1.3.5,则提供简单的解决方案:
df.describe().applymap('{:,.2f}'.format)
只要一行熊猫就可以为你做这件事。
df[["A"]].describe().format('{:.3f}')
#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表示万亿,0600万等。但读起来还是很乱。
下面:- 你可以用更人性化的方式阅读它
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
df["A"].describe(include=['category'])