本机环境
语言:python
编程工具:pycharm
硬件环境:win10 64位环境
问题如下
代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Simhei']
#dtype转换数据类型,关键字设置为'U75', 不设置dtype,输出数据类型为nan
#delimiter=','表示数据由逗号分隔
#skip_header关键字可以设置为整数,表示跳过文件开头对应的行数
closing_bat = np.genfromtxt('closing.csv', encoding='utf-8', delimiter=',')
vol_bat = np.genfromtxt('vol.csv', encoding='utf-8', dtype='U75', delimiter=',')
print(closing_bat)
print(vol_bat)
csv如下
1.closing.csv
172.63,168.49,44.36
162.54,183.03,43.05
2.vol.csv
64.38,361.43,441.16
62.13,223.66,257.31
输出如下
[[ nan 168.49 44.36]
[162.54 183.03 43.05]]
[[’\ufeff64.38’ ‘361.43’ ‘441.16’]
[‘62.13’ ‘223.66’ ‘257.31’]]
如何解决
把encoding ='utf-8’改成encoding='utf-8-sig’就行了。
即
closing_bat = np.genfromtxt('BAT.csv', encoding='utf-8', delimiter=',')
vol_bat = np.genfromtxt('成交量.csv', encoding='utf-8', delimiter=',')
改成
closing_bat = np.genfromtxt('closing.csv', encoding='utf-8-sig', delimiter=',')
vol_bat = np.genfromtxt('vol.csv', encoding='utf-8-sig', dtype='U75', delimiter=',')
改完后,输出正常
[[172.63 168.49 44.36]
[162.54 183.03 43.05]]
[[‘64.38’ ‘361.43’ ‘441.16’]
[‘62.13’ ‘223.66’ ‘257.31’]]