Запросы об использовании массивов NumPy для анализа файла CSV
Q1 : У меня странная проблема, которую я не могу понять.
Я просматриваю файл CSV с помощью модуля NumPy, где показана часть файла CSV (содержащая 253 строки и 4 столбца):
Code Date NetPrice Gain MICRO US 01/05/2012 613.98 0 MICRO US 01/06/2012 622.75 1.09342432 MICRO US 01/07/2012 690.99 -0.44342342 MICRO US 01/08/2012 611.26 -3.242423423
Я просматриваю файл CSV, используя следующий код:
micro_info = np.genfromtxt('MICRO.csv', delimiter=',', dtype=None, names=True)
Однако, когда я запускаю код ниже, я получаю, что первая строка дает мне (253,)
, но вторая строка печатает необходимое содержимое файла CSV, содержащего все 253 строки и 4 столбца. Я не понимаю, почему это так .
print micro_info.shape print micro_info
Q2 : Делает ли то, что я делаю ниже, имеет смысл?
Я по существу NetPrice
преобразовать Dates
в плавающие, чтобы использовать Matplotlib
для NetPrice
значений NetPrice
для MICRO US
против каждой Date
. Для этого я использую следующий код:
convertingdates = strpdate2num(micro_info[1:,2]) datesasfloat = {1: convertingdates} micro_info = np.genfromtxt('MICRO.csv', delimiter=',', dtype=None, converters = datesasfloat, names=True)
Затем я NetPrice
доступ к Dates
и NetPrice
.
Спасибо
- Python для CSV разбивает строку на два столбца, когда я хочу один
- Можно ли сохранить порядок столбцов с помощью Python csv DictReader
- Чтение и запись CSV-файлов, включая unicode с Python 2.7
- Соответствующий поплавок в двух списках
- определить тип значения, которое представлено в виде строки в python
С вашим образцом текста это работает:
In [314]: dconverter=pylab.strpdate2num('%M/%S/%Y') In [316]: names='code us Date NetPrice Gain'.split() In [317]: data=np.genfromtxt(ss,skip_header=1,dtype=None, converters={'Date':dconverter},names=names) In [318]: data.shape Out[318]: (4,) In [319]: data['Date'] Out[319]: array([ 734503.00075231, 734503.00076389, 734503.00077546, 734503.00078704]) In [320]: data['NetPrice'] Out[320]: array([ 613.98, 622.75, 690.99, 611.26])
Он использует разделитель пробелов по умолчанию. Поскольку это разделяет «MICRO US», я использовал собственный список имен, а не строку заголовка. Я уточнил использование strpdate2num
.
Если файл был разделен запятой, это будет работать (и с использованием скорректированного преобразователя даты):
In [410]: dconverter=pylab.strpdate2num('%m/%d/%Y') In [412]: data=np.genfromtxt(ss,names=True,delimiter=',',dtype=None, autostrip=True,converters={'Date':dconverter}) In [413]: data Out[413]: array([('MICRO US', 734507.0, 613.98, 0.0), ('MICRO US', 734508.0, 622.75, 1.09342432), ('MICRO US', 734509.0, 690.99, -0.44342342), ('MICRO US', 734510.0, 611.26, -3.242423423)], dtype=[('Code', 'S8'), ('Date', 'O'), ('NetPrice', '<f8'), ('Gain', '<f8')])
Другой способ справиться с «разделителями» – дать список ширины поля. По какой-то причине для этого требовался явный dtype
.
dt=np.dtype([('Code', 'S8'), ('Date', 'O'), ('NetPrice', '<f8'), ('Gain', '<f8')]) data=np.genfromtxt(ss, names=True, delimiter=[15,10,11,12], converters={'Date':dconverter}, dtype=dt)
- Bokeh – данные с прорезями
- Разделить разные записи на отдельные строки, разрешая только определенные комбинации
- Доступ к данным столбцов из файла CSV в Python
- Предотвращение дублирования строк при выполнении слияния
- Pandas Сумма повторяющихся атрибутов
- CSV, DictWriter, unicode и utf-8
- Как я могу цитировать escape-символы в csv writer в python
- Ошибка травления при выполнении команды COPY: CQLShell в Windows
- Экспорт csv-файла из scrapy (не через командную строку)
- Записывать несколько массивов NumPy в CSV-файл в отдельных столбцах?
- Решение для AssertionError: неверное определение dtype в get_concat_dtype при объединении операции в списке Dataframes