我从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
column_name1 = columns[7]
column_name2 = columns[8]
column_name3 = columns[13]
csv_file1.plot(x=column_name3,y=column_name1,label='width')
csv_file1.plot(x=column_name3,y=column_name2,label = 'normalised width')
data_array = csv_file1.to_numpy()
plt.figure()
plt.plot(data_array[13],data_array[7])
使用csv文件中的数据绘图:
使用转换为numpy数组的csv文件中的数据绘图:
2条答案
按热度按时间wpx232ag1#
基本上,它们是相同的数据,但当你绘图时,你选择了错误的索引。CSV在这里无关紧要,您将CSV文件读入DataFrame,然后使用
pandas.DataFrame
的内置plot方法。下面是一个例子:
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]
。然后,当使用
to_numpy()
方法将DataFrame转换为numpy数据时,数据将变为:因此,如果你使用
numpy_data[0]
作为x索引,它将是[1., 3.]
,这与上面的[1,2]
不同。要绘制与pandas相同的图形,您需要在numpy中选择x,y:
plot(numpy_data[:,0], numpy_data[:,1]
。**结论:**图取决于您如何选择x和y值。
rggaifut2#
你可能混淆了numpy数组中的行和列。约定是
array[row_index,column_index]
,我认为您需要绘制列13
和7
。尝试使用: