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')
 

 

 

 
posted on 2017-05-10 10:57  littlemining  阅读(156)  评论(0编辑  收藏  举报