如何设置pandas_datareader避免自动对读取的数值进行四舍五入
解决pandas_datareader读取极低价格标的时自动四舍五入问题
原因说明
该问题通常由两种情况导致:一是pandas默认浮点数显示精度不足导致仅展示为0.0,实际存储的数值正常;二是数据读取时自动使用的低精度浮点数类型无法承载极小数值,出现实际精度截断。
解决方法
场景1:仅显示异常,实际数值正常
首先执行以下代码验证数值是否真的被截断:print(btc_price['Close'].values[0])
如果输出可以看到正确的极小数值,仅调整pandas全局显示配置即可:
import pandas as pd # 全局设置浮点数显示为10位小数,可根据需求调整位数 pd.set_option('display.float_format', '{:.10f}'.format) # 也可以设置动态精度,仅对极小值展示更多小数位 pd.set_option('display.float_format', lambda x: f'{x:.10f}' if x < 0.0001 else f'{x:.2f}')
场景2:实际存储数值已被截断为0.0
读取数据时强制指定价格字段使用64位浮点数类型,避免低精度类型的精度损失:
import pandas_datareader.data as web import numpy as np btc_price = web.DataReader( 'SHIB-USD', 'yahoo', start_date, end_date, dtype={ 'Open': np.float64, 'High': np.float64, 'Low': np.float64, 'Close': np.float64, 'Adj Close': np.float64, 'Volume': np.int64 } )
内容的提问来源于stack exchange,提问作者texasraj
相关产品推荐
相关产品推荐

