Должен ли я преобразовать CSV в ndarray, чтобы сделать сюжет? - PullRequest
3 голосов
/ 27 октября 2019

Недавно я узнал, что если мы хотим манипулировать данными в CSV-файле из Excel, нам нужно сначала преобразовать их в ndarray с помощью NumPy (пожалуйста, исправьте меня, если я только что узнал, что это неправильно).

Зная об этом, я также узнал, как строить сюжет с matplotlib. Я видел простой код для отображения графика где-то с matplotlib, и писатель не преобразовал его в ndarray, он просто отобразил его с помощью row[0] и row[1].

Почему он не превратил его в NumPy ndarray первым? И как я могу сказать, когда я должен превратить файл CSV в ndarray?

Ответы [ 2 ]

3 голосов
/ 27 октября 2019

Трудно сказать, что этот другой человек делал, чтобы составить свой сюжет, не видя своего кода, но, вероятно, данные уже были в памяти как объект Python. Вы можете создать график только в matplotlib, используя данные, которые у вас есть в памяти, например, из списка Python, или из массива NumPy, или, возможно, из Pandas DataFrame, или какого-либо другого объекта.

Как вынаверно знаете, CSV это формат файла. Это не объект Python или NumPy. Чтобы построить график из данных, вы должны использовать какой-то код чтения файла, чтобы прочитать файл в память. Затем вы можете делать это с помощью Python.

Люди читают этот файл различными способами, в зависимости от их конечной цели. Например, вы можете использовать функцию NumPy genfromtxt(), как упомянуто комментатором и как описано в этом вопросе переполнения стека . Так что вы можете сделать это, например:

data = np.genfromtxt("mydata.csv", delimiter=',')

Примечание о pandas

Многим людям действительно нравится Pandas для обработки данных из CSV. Это потому, что CSV может содержать в себе все виды различных данных. Например, он может иметь столбец строк, столбец чисел с плавающей точкой, столбец дат и т. Д. NumPy отлично подходит для наборов данных, в которых каждый элемент имеет одинаковый тип (например, все числа с плавающей точкой, представляющие одну и ту же вещь, например измерения температуры). на поверхности, скажем). Но это не идеально для наборов данных, в которых у вас есть много разных видов измерений. Вот для чего Панды. Pandas также отлично подходит для чтения и записи файлов CSV и даже XLS.

1 голос
/ 27 октября 2019

Ваши данные не обязательно должны быть ndarray, чтобы нанести их на matplotlib. Вы можете прочитать ваши данные в виде списка, и они будут отображаться так же, как упомянуто kwinkunks. То, как вы читаете свои данные, имеет значение, и вам действительно нужно сначала об этом беспокоиться!

Чтобы ответить на ваш вопрос, если вы действительно хотите манипулировать данными, а не просто наносить их на график, тогда используйте массив numpy. путьПреимущество использования массивов numpy заключается в том, что вы можете легко вычислять новые переменные и обрабатывать имеющиеся у вас данные.

Возьмите следующий пример. Слева вы можете построить данные в виде списка, но вы не можете манипулировать данными и подмножествами. Справа, если ваши данные представляют собой массив numpy, вы можете легко обусловить данные, скажем, принять только значения x, превышающие 4, и нарисовать их красным.

import matplotlib.pyplot as plt
import numpy as np

#Declare some data as a list
x = [2,5,4,3,6,2,6,10,1,0,.5]
y = [7,2,8,1,4,5,6,5,4,5,2]

#Make that same data a numpy array
x_array = np.array([2,5,4,3,6,2,6,10,1,0,.5])
y_array = np.array([7,2,8,1,4,5,6,5,4,5,2])

#Declare a figure with 2 subplots
fig = plt.figure(figsize=(12,6))
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)

#Plot only the list
ax1.scatter(x,y) 

#Plot only the list again on the second subplot
ax2.scatter(x,y) 

#Index the data based on condition and plot those points as red
ax2.scatter(x_array[x_array>3],y_array[x_array>3],c='red')

plt.show()

enter image description here

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