插件窝 干货文章 Pandas分组求和后CSV导出精度丢失,如何解决?

Pandas分组求和后CSV导出精度丢失,如何解决?

导出 精度 文件 CSV 104    来源:    2025-03-15

在使用Pandas进行数据处理时,如果遇到分组求和后导出CSV文件时精度丢失的问题,通常是因为CSV文件默认的浮点数格式导致的。CSV文件是一种纯文本格式,不保留数据类型信息,因此在导出时可能会丢失精度。

解决方法

  1. 设置浮点数的显示精度: 在导出CSV文件之前,可以通过设置Pandas的浮点数显示精度来确保导出的数据保留足够的精度。

    import pandas as pd
    
    # 假设df是你的DataFrame
    df = pd.DataFrame({
       'A': [1.23456789, 2.34567891],
       'B': [3.45678912, 4.56789123]
    })
    
    # 设置浮点数的显示精度
    pd.set_option('display.float_format', '{:.10f}'.format)
    
    # 分组求和
    grouped_df = df.groupby('A').sum()
    
    # 导出CSV
    grouped_df.to_csv('output.csv', index=False)
    
  2. 使用float_format参数: 在导出CSV文件时,可以使用float_format参数来指定浮点数的格式。

    # 导出CSV时指定浮点数格式
    grouped_df.to_csv('output.csv', index=False, float_format='%.10f')
    
  3. 使用to_csvquoting参数: 如果你希望保留所有精度并且不进行任何格式化,可以使用quoting参数来确保数据以原始形式导出。

    # 导出CSV时不进行任何格式化
    grouped_df.to_csv('output.csv', index=False, quoting=csv.QUOTE_NONNUMERIC)
    
  4. 使用其他文件格式: 如果CSV格式无法满足你的精度需求,可以考虑使用其他文件格式,如Excel(.xlsx)或Parquet(.parquet),这些格式可以更好地保留数据类型和精度。

    # 导出为Excel文件
    grouped_df.to_excel('output.xlsx', index=False)
    
    # 导出为Parquet文件
    grouped_df.to_parquet('output.parquet', index=False)
    

总结

通过设置Pandas的浮点数显示精度、使用float_format参数、或者选择其他文件格式,可以有效解决分组求和后导出CSV文件时精度丢失的问题。根据具体需求选择合适的方法即可。