#python #pandas #matplotlib
#python #pandas #matplotlib
Вопрос:
Я пытаюсь построить график ниже, используя python, но я получаю сообщение об ошибке.
Команды Python, которые я использую, следующие:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('data/filtro_bovespa_final.csv')
data.loc[(data['codigo'] == 'BBAS3') amp; (data['codigo'] == 'BBDC4')]
data.date = pd.to_datetime(data['date'],format='%Y%m%d')
data.set_index(['date','codigo'])
plt.plot(data.date,data.preco)
plt.show()
Ошибка, которую я получаю, это:
Я получил этот график, но это не то, что мне нужно:
Файл csv, который я использую: Bovespa
Мне нужен график, который позволяет мне сравнивать цену, связанную с обоими кодами (BBAS3 и BBDC4), как на первом графике, который я показал.
Что еще я должен сделать, чтобы получить нужный мне график?
Комментарии:
1. Что вы пытаетесь сделать с
data.plot
иdata.show
. Вы имеете в видуplt.show()
?2. Судя по сообщению об ошибке, похоже
data.show
, что произойдет, если я закомментирую?3. Я исправил это… но я получил другую ошибку… Я обновил вопрос.
4. Соответствуют ли графики представленным вами данным?
5. ДА… данные, которые я представил, приведены на графике рисунка, который я загрузил здесь. Я попытался построить эту же фигуру с помощью python… однако он не работает. Надеюсь, вы сможете мне помочь.
Ответ №1:
Чтобы нарисовать их по атрибутам, мы используем pivot для преобразования фреймов данных в столбцы по атрибутам. Я также изменил условие извлечения на ИЛИ.
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('./Data/filtro_bovespa_final.csv')
data.date = pd.to_datetime(data['date'],format='%Y%m%d')
data = data.loc[(data['codigo'] == 'BBAS3') | (data['codigo'] == 'BBDC4')]
data.set_index('date', inplace=True)
data = data.pivot(columns='codigo')
data.columns = ['BBAS3','BBDC4']
data.plot()
plt.show()