Разница между построением одинаковых данных из файла CSV и из массива? - PullRequest
2 голосов
/ 05 февраля 2020

Я нанес данные из файла CSV и преобразовал тот же файл CSV в массив NumPy и нанес те же данные. Тем не менее, я получаю разные графики, что сбивает с толку, и кто-то может мне помочь, если я допустил ошибку или мне не хватает чего-то понять. Вот то, что я кодировал и соответствующие изображения графика.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


csv_file1          = pd.read_csv('filename.csv')
columns            = csv_file1.columns
coloum_name1       = columns[7]
coloum_name2       = columns[8] 
coloum_name3       = columns[13]
csv_file1.plot(x=coloum_name3,y=coloum_name1,label='width')
csv_file1.plot(x=coloum_name3,y=coloum_name2,label = 'normalised width')

data_array = csv_file1.to_numpy()
plt.figure()
plt.plot(data_array[13],data_array[7])

График, используя данные из файла CSV: Plot using data from the csv file

График с использованием данных из файла CSV, преобразованного в массив numpy: Plot using data from the csv file converted to numpy array

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

По сути, это те же данные, но когда вы строите график, вы выбрали неверный индекс. CSV здесь не имеет значения, вы читаете CSV-файл в DataFrame, а затем используете встроенный метод построения графика pandas.DataFrame.

Вот пример:

df = pd.DataFrame({"A": [1, 2], "B": [3.0, 4.5]})

Когда вы строите график, используя df.plot(x='A', y='B'), x будет [1,2], а y будет [3.0, 4.5].

Затем при преобразовании DataFrame в данные numpy с использованием метода to_numpy() данные станут:

  numpy_data =  array([[1. , 3. ], [2. , 4.5]])

Таким образом, если вы используете numpy_data[0] в качестве индекса x, это будет [1., 3.], что отличается от [1,2] в приведенном выше.

Чтобы построить ту же фигуру, что и pandas, вам нужно выбрать x, y в numpy как:

plot(numpy_data[:,0], numpy_data[:,1].

Вывод: сюжет зависит от того, как вы выбрали x и y значения.

0 голосов
/ 05 февраля 2020

Возможно, вы путаете строки и столбцы в массиве numpy. Соглашение - array[row_index,column_index], и я думаю, что вы хотите построить столбцы 13 и 7. Попробуйте с:

plt.plot(data_array[:, 13],data_array[:, 7])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...