Я застрял. Я хочу прочитать простой CSV-файл в массив Numpy и, похоже, выкопал себя в отверстие. Я новичок в Numpy, и я уверен, что я как-то испортил это, так как обычно я легко читаю CSV-файлы в Python 3.4. Я не хочу использовать Панды, поэтому я думал, что буду использовать Numpy для увеличения своего набора навыков, но я действительно не понимаю этого. Если бы кто-нибудь мог сказать мне, если я нахожусь на правильном пути, используя genfromtxt. Или есть более простой способ и дать мне толчок в правильном направлении, я был бы благодарен. Я хочу прочитать в CSV-файле манипулирование столбцом datetime до 8/4/2014, затем поместить его в массив numpy вместе с остальными столбцами. Вот что я до сих пор и ошибка, с которой у меня возникают проблемы с кодированием. Я могу получить часть даты, но не вижу, как добавить date.strftime («% Y-% m-% d») в datefunc. Также я не вижу, как форматировать строку для SYM, чтобы обойти ошибку. Любая помощь будет оценена по достоинству.numpy UnicodeDecodeError Я использую правильный подход с genfromtxt
данные
2015-08-04 02:14:05.249392, AA, 0.0193103612, 0.0193515212, 0.0249713335, 30.6542480634, 30.7195875454, 39.640763021, 0.2131498442, 29.0406746589, 13524.5347810182, 89, 57, 99
2015-08-04 02:14:05.325113, AAPL, 0.0170506271, 0.0137941891, 0.0105915637, 27.0670313481, 21.8975963326, 16.8135861893, -19.0986405157, -23.2172064279, 21.5647072302, 33, 26, 75
2015-08-04 02:14:05.415193, AIG, 0.0080808151, 0.0073296055, 0.0076213535, 12.8278962785, 11.635388035, 12.0985236788, -9.2962105215, 3.980405659, -142.8175077335, 71, 42, 33
2015-08-04 02:14:05.486185, AMZN, 0.0235649449, 0.0305828226, 0.0092703502, 37.4081902773, 48.5487257749, 14.7162247572, 29.7810062852, -69.6877219282, -334.0005615016, 2, 92, 10
"код" извините все еще учусь
import numpy as np
from datetime import datetime
from datetime import date,time
datefunc = lambda x: datetime.strptime(x.decode("utf-8"), '%Y-%m-%d %H:%M:%S.%f')
a = np.genfromtxt('/home/dave/Desktop/development/hvanal2016.csv',delimiter = ',',
converters = {0:datefunc},dtype='object,str,float,float,float,float,float,float,float,float,float,float,float,float',
names = ["date","sym","20sd","10sd","5sd","hv20","hv10","hv5","2010hv","105hv","abshv","2010rank","105rank","absrank"])
print(a["date"])
print(a["sym"])
print(a["20sd"])
print(a["hv20"])
print(a["absrank"])
ошибку
Python 3.4.3+ (default, Oct 14 2015, 16:03:50)
[GCC 5.2.1 20151010] on linux
Type "copyright", "credits" or "license()" for more information.
>>>
============================================================================== RESTART: /home/dave/3 9 15 my slope.py ===============================================================================
[datetime.datetime(2015, 8, 4, 2, 14, 5, 249392)
datetime.datetime(2015, 8, 4, 2, 14, 5, 325113)
datetime.datetime(2015, 8, 4, 2, 14, 5, 415193) ...,
datetime.datetime(2016, 3, 18, 1, 0, 25, 925754)
datetime.datetime(2016, 3, 18, 1, 0, 26, 26400)
datetime.datetime(2016, 3, 18, 1, 0, 26, 114828)]
Traceback (most recent call last):
File "/home/dave/3 9 15 my slope.py", line 19, in <module>
print(a["sym"])
File "/usr/lib/python3/dist-packages/numpy/core/numeric.py", line 1615, in array_str
return array2string(a, max_line_width, precision, suppress_small, ' ', "", str)
File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 454, in array2string
separator, prefix, formatter=formatter)
File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 328, in _array2string
_summaryEdgeItems, summary_insert)[:-1]
File "/usr/lib/python3/dist-packages/numpy/core/arrayprint.py", line 490, in _formatArray
word = format_function(a[i]) + separator
UnicodeDecodeError: 'utf-32-le' codec can't decode bytes in position 0-3: code point not in range(0x110000)
Эй @hpaulj жаль там ARE "" в данных я не заметил, что, когда Я загрузил данные в сообщение. Я также уменьшил данные до 5 строк из 10, чтобы сделать его более читаемым. – theakson
Я пробовал новый текст. Существует ошибка в поле, но я работал над этим. – hpaulj
Большое спасибо за то, что вы выбрали лишнюю милю, я полагаю, что из всей вашей хорошей работы нет лучшего способа сделать это в numpy. Вы дали мне отличный старт, пытаясь улучшить мой подход. спасибо – theakson