Pandas列Dtype为int,调用describe()或可视化时变为float如何解决?
原因说明
- Pandas的
df.describe()默认统计项包含均值、标准差、分位数等浮点型计算结果,因此整列统计输出会统一转为float格式,属于显示层面的逻辑,你的原始int64数据没有发生任何变更。 - 箱线图的数值显示为float,是可视化库默认的坐标轴刻度格式化规则导致,同样不涉及原始数据类型变化。
解决方案
调整df.describe()的显示格式
- 仅保留整数类统计项并强制转int:如果不需要浮点型统计指标,可以筛选对应项后转换类型
# 筛选计数、分位数、最值等整数类统计项,转为int显示 df['Population'].describe()[['count', 'min', '25%', '50%', '75%', 'max']].astype(int)
- 自定义浮点显示规则:如果需要保留全部统计项,可以通过Pandas显示设置修改浮点输出格式
# 临时设置本次输出的浮点值不带小数位,不影响全局配置 df.describe().style.format(precision=0) # 若要全局生效,可修改Pandas全局显示选项 # pd.set_option('display.float_format', lambda x: f'{x:.0f}')
调整箱线图的刻度格式
针对matplotlib/seaborn绘制的箱线图,只需手动指定坐标轴刻度为整数格式即可:
import matplotlib.pyplot as plt import matplotlib.ticker as ticker # 以pandas自带boxplot为例,seaborn的boxplot逻辑完全一致 ax = df.boxplot(column='Population') # 设置y轴刻度按整数显示 ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%d')) plt.show()
内容的提问来源于stack exchange,提问作者latarara
相关产品推荐
相关产品推荐

