python问题
写入CSV文件乱码
file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)
在文件头部写入codecs.BOM_UTF8就能防止乱码了,文件都是utf-8编码格式的
写入pandas读取精度问题
有时候用Pandas输入的数据小数点后的位数太多,我们希望能够在显示的时候保留一定的位数而不把它全部显示出来,这时候就可以用pd.set_option()的方法来进行显示设置:
import numpy as np
import pandas as pd
pd.set_option(‘precision’, n) # n是要显示的精度,应该是一个整数
需要注意的是,如果用文件导入(如pd.read_csv函数)DataFrame数据,必须保证导入的数据是纯数字而不含字符串(行标签和列标签除外)。否则数据不按照float类型载入,精度设置失效。
另外,pd.set_option并不是真正把数据截断,而只是在显示的时候按照你的要求显示小数点后相应位数的小数。用to_csv函数输出的时候,如果不进行进一步的设置,它仍然会输出所有位数的小数。
对于类型为浮点型的DataFrame数据data,用以下代码能够输出为精度为4的浮点数。
data.to_csv('out.csv',index = False, float_format = '%.4f')