Установка типов данных с помощью Matplotlib и csv2rec - PullRequest
3 голосов
/ 09 сентября 2011

Я изучаю Matplotlib и пытаюсь реализовать простую линейную регрессию вручную.Однако я столкнулся с проблемой при импорте и работе с моими данными после использования csv2rec.

data= matplotlib.mlab.csv2rec('KC_Filtered01.csv',delimiter=',')

x = data['list_price']
y = data['square_feet']

sumx = x.sum()
sumy = y.sum()

sumxSQ = sum([sq**2 for sq in x])
sumySQ = sum([sq**2 for sq in y])

Я читаю в списке цен на жилье и пытаюсь получить сумму квадратов,Однако когда csv2rec считывает цены из файла, он сохраняет значения как int32.Поскольку сумма квадратов цен на жилье превышает 32-разрядное целое число, она переполняется.Однако я не вижу метода изменения типа данных, который назначается, когда csv2rec читает файл.Как я могу изменить тип данных, когда массив считывается или присваивается?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Вместо mlab.csv2rec вы можете использовать эквивалентную функцию numpy, numpy.loadtxt ( документация ), для чтения ваших данных. Эта функция имеет аргумент для указания dtype ваших данных.

Или, если вы хотите работать с именами столбцов (как в примере кода), используйте функцию numpy.genfromtxt ( документация ). Это похоже на loadtxt, но с дополнительными опциями, такими как чтение имен столбцов из первой строки вашего файла (с names = True).

Пример его использования:

In [9]:
import numpy as np
from StringIO import StringIO
data = StringIO("a, b, c\n 1, 2, 3\n 4, 5, 6")
np.genfromtxt(data, names=True, dtype = 'int64', delimiter = ',')

Out[9]: 
array([(1L, 2L, 3L), (4L, 5L, 6L)], 
      dtype=[('a', '<i8'), ('b', '<i8'), ('c', '<i8')])

Еще одно замечание к вашему коду: при использовании массивов numpy вам не нужно использовать циклы for. Чтобы вычислить площадь, вы можете просто сделать:

xSQ = x**2
sumxSQ = xSQ.sum()

или в одну строку:

sumxSQ = numpy.sum(x**2)
2 голосов
/ 09 сентября 2011
x = data['list_price'].astype('int64')

и то же самое с y.

И: csv2rec имеет аргумент converterd: http://matplotlib.sourceforge.net/api/mlab_api.html#matplotlib.mlab.csv2rec

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...