Построение двух графиков на одном графике после сопоставления значений в столбце - PullRequest
0 голосов
/ 05 мая 2019

У меня есть файл test.csv, который выглядит как

Company   Year   Actual   Predicted
A         2010    500       700
A         2011    600       650
A         2012    700       690
B         2010    800       590
B         2011    670       800
B         2012    570       600

Я хочу построить кривые по компании.

Это означает, что у меня будет две кривые для этого набора данных;один для компании A и другой для компании B. И я хочу, чтобы кривые выглядели так:

enter image description here

Я новичок в Python, поэтому мне нужна помощь.

Я попробовал этот код

import  matplotlib.pyplot as plt
import  csv
Year=[]
Prediction=[]
Actual=[]

with open('C:\\Users\\Dell\\Desktop\\New Beginnings\\financial\\test1.csv','r') as csvfile:
    plots =csv.reader(csvfile,delimiter=',')
    for column in plots:
        Year.append(int(column[1]))
        Prediction.append(int(column[3]))
        Actual.append(int(column[2]))

plt.plot(Year,Prediction,Actual ,label='Loaded from file!')
plt.xlabel('Year')
plt.ylabel('Predicted')
plt.ylabel('Actual')

plt.title('Share Market Price')
plt.legend()
plt.show()

Но есть несколько проблем с этим кодом.

Во-первых, я получаю эту ошибку ValueError: invalid literal for int() with base 10: 'Predicted'

И, во-вторых, я не добавил никакого кода для отдельного построения компании.

Может кто-нибудь отредактировать следующий код?Спасибо за помощь.

1 Ответ

0 голосов
/ 06 мая 2019

int преобразование

Вы можете выполнить

    next(csvfile)

непосредственно перед назначением plots, чтобы пропустить начальную строку заголовков столбцов.Преобразование текстового заголовка в int не будет работать, как вы видели.

построение графиков для компании

Определение функции:

def plot_actual_and_predicted(company, filename):

Поместите большую частьваш код в этой функции.Теперь вставьте тест, чтобы ваш цикл выглядел следующим образом:

    for column in plots:
        if column[0] == company:
            Year.append(int(column[1]))
            Prediction.append(int(column[3]))
            Actual.append(int(column[2]))

Вызовите функцию дважды, чтобы получить пару графиков:

plot_actual_and_predicted('A', filename)
plot_actual_and_predicted('B', filename)

Каждый вызов вызовет только специфическую для компаниичасть данных, аналогичная выполнению $ egrep '^A,' *.csv, или выделение строк, начинающихся с B.

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