Извлеките имена заголовков из CSV и используйте их для построения друг против друга в Python?

Я довольно новичок в python и кодировании в целом. У меня есть этот код до сих пор.

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('data.csv', delimiter=',', skiprows=1)

mSec = data[:,0]
Airspeed = data[:,10]
AS_Cmd = data[:,25]
airspeed = data[:,3]

plt.rc('xtick', labelsize=25) #increase xaxis tick size
plt.rc('ytick', labelsize=25) #increase yaxis tick size

fig, ax = plt.subplots(figsize=(40,40), edgecolor='b')
ax.patch.set_facecolor('white')


ax.plot(mSec, Airspeed, label='Ground speed [m/s]')
ax.plot(mSec, AS_Cmd, label='Voltage [V]')

plt.legend(loc='best',prop={'size':20})
fig.savefig('trans2.png', dpi=(200), bbox_inches='tight') #borderless on save

Однако я не хочу индивидуально читать каждый столбец данных. Я хочу иметь возможность загрузить csv-файл и прочитать все имена столбцов, а затем спросить пользователей, что вы хотите для вашей оси x и оси y, и построить график. Формат файла csv:

time(s),speed(mph),heading,bvoltage(v)
20,30,50,10
25,45,50,10
30,50,55,9

Вот моя попытка кода, но я пропускаю много информации:

import numpy as np
import matplotlib.pyplot as plt



data = np.loadtxt('data.csv', delimiter=',')
## names = where I will store the column names

white True:
    ## display names to user
    print ('Pick your x-axis')
    xaxis = input()
    print ('Pick your y-axis')
    yaxis1 = input()
    print('pick a 2nd y-axis or enter none')
    yaxis2 = input()
        if input()= 'none'
        break;
        else continue
    #plot xaxis vs yaxis vs 2nd yaxis

Я понимаю, что цикл не является правильным. Я не хочу, чтобы кто-то поправил меня на том, что я сам разберусь, однако, я хотел бы способ доступа к этим значениям из файла CSV, чтобы я мог использовать его в этом методе.

2 ответа

  1. Если вы не против использовать/установить другой модуль, то панды должны сделать это.

  2. Используя pandasВы можете сделать:

    import pandas as pd
    data = pd.read_csv("yourFile.csv", delimiter=",")
    

    и построить столбцы с именамиColName1, ColName2друг против друга с:

    data.plot(x='Col1', y='Col2')
    

    Если у вас есть первая строка в csv-файле с нужными именами столбцов, pandasто подберем те автоматически, иначе можно играть с headerаргументом of read_csv.

    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html