📅  最后修改于: 2023-12-03 15:38:18.807000             🧑  作者: Mango
当使用 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)
的方法Pandas 提供了 pd.set_option()
方法用于设置 Pandas 在 Jupyter Notebook 中的打印格式。我们可以设置打印浮点数的格式来避免科学计数法。
具体步骤如下:
pd.set_option('display.float_format', lambda x: '%.3f' % x)
来设置浮点数的打印格式;以下是完整代码:
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
可以看到,这时浮点数已经按指定的格式打印出来了。
另外一种方法是使用 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
同样可以看到浮点数已经按指定的格式打印出来了。
以上是两种简单易行、适用于多种情况的方法。无论是初学者还是高级数据科学家,在实际的数据处理中都会用到这些技巧,相信这能帮助你更方便地查看和处理海量数据,在数据分析和展示方面发挥更大的作用。