numpy 从csv文件和数组中绘制相同数据的区别?

bfhwhh0e  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(94)

我从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文件中的数据绘图:

wpx232ag

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 =  array([[1. , 3. ], [2. , 4.5]])

因此,如果你使用numpy_data[0]作为x索引,它将是[1., 3.],这与上面的[1,2]不同。
要绘制与pandas相同的图形,您需要在numpy中选择x,y:
plot(numpy_data[:,0], numpy_data[:,1]

**结论:**图取决于您如何选择x和y值。

rggaifut

rggaifut2#

你可能混淆了numpy数组中的行和列。约定是array[row_index,column_index],我认为您需要绘制列137。尝试使用:

plt.plot(data_array[:, 13],data_array[:, 7])

相关问题