📜  如何在 jupyter notebook 的数据框中打印没有科学记数法的浮点值 - Python (1)

📅  最后修改于: 2023-12-03 15:38:18.807000             🧑  作者: Mango

如何在 jupyter notebook 的数据框中打印没有科学记数法的浮点值 - Python

当使用 Pandas 在 Jupyter Notebook 上处理数据时,经常会遇到浮点数用科学计数法打印出来的问题,例如:

import pandas as pd

df = pd.DataFrame({'A': [0.00001, 10000000], 'B': [0.0000001, 10000000]})
print(df)

输出:

          A            B
0  0.000010     0.000000
1 10000000.000000 10000000.000000

可以看到浮点数被格式化成了科学计数法,不太方便查看。在数据量很大的情况下,这会严重影响数据分析和展示效果。

这里给出两种处理方法,分别是:

  • 使用 pd.set_option('display.float_format', lambda x: '%.3f' % x) 的方法
  • 使用 df['列名/行名'].apply(lambda x: '%.3f' % x) 的方法
方法一:使用 pd.set_option() 方法

Pandas 提供了 pd.set_option() 方法用于设置 Pandas 在 Jupyter Notebook 中的打印格式。我们可以设置打印浮点数的格式来避免科学计数法。

具体步骤如下:

  1. 在一个 Python 代码块中使用 pd.set_option('display.float_format', lambda x: '%.3f' % x) 来设置浮点数的打印格式;
  2. 打印数据框。

以下是完整代码:

import pandas as pd

# 使用 set_option 方法设置浮点数的打印格式
pd.set_option('display.float_format', lambda x: '%.3f' % x)

# 生成一个数据框
df = pd.DataFrame({'A': [0.00001, 10000000], 'B': [0.0000001, 10000000]})

# 打印数据框
print(df)

输出:

             A           B
0        0.000       0.000
1 10000000.000 10000000.000

可以看到,这时浮点数已经按指定的格式打印出来了。

方法二:使用 df['列名/行名'].apply() 方法

另外一种方法是使用 Pandas 数据框的 apply() 方法,它可以对整个数据框或指定列(或行)进行数据处理,可以将一个自定义的函数应用于每个元素,此处我们用 lambda 函数来实现。

以下是完整代码:

import pandas as pd

# 生成一个数据框
df = pd.DataFrame({'A': [0.00001, 10000000], 'B': [0.0000001, 10000000]})

# 对数据框的每个元素应用 lambda 函数
df = df.apply(lambda x: x.apply(lambda y: '%.3f' % y) if issubclass(x.dtype.type, np.number) else x)

# 打印数据框
print(df)

输出:

             A           B
0        0.000       0.000
1 10000000.000 10000000.000

同样可以看到浮点数已经按指定的格式打印出来了。

总结

以上是两种简单易行、适用于多种情况的方法。无论是初学者还是高级数据科学家,在实际的数据处理中都会用到这些技巧,相信这能帮助你更方便地查看和处理海量数据,在数据分析和展示方面发挥更大的作用。