Построить график столбца DataFrame в зависимости от даты (столбец того же DF)

411 просмотра
0
0 Комментариев

Не могу построить отображение на графике 3-го столбца из файла csv в зависимости от столбца Date.

Пример данных (с наименованием столбцов) в CSV файле:

Date,1,2,3,4,A,B
2010-01-04,213.429998,214.499996,212.38000099999996,214.009998,123432400,27.727039

Date — первый столбец с датами, a['3'].plot() — отобразить 3й столбец с (он так и подписан, как «3») — не получается.

import pandas as pd
import matplotlib.pyplot as plt
a = pd.read_csv('C:/Users/II/Downloads/222.csv',
                sep=',', encoding='latin1',
                parse_dates=['Date'], dayfirst=True,
                index_col='Date')
a['3'].plot()


Добавить комментарий

2 Answers

Python Опубликовано 16.12.2018
0

код рабочий. сначала надо отделить даты в отдельный массив и преобразовать несколько, затем по каждому столбцу можно построить график

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
 
dates = ['01/02/2017','02/02/2017','03/02/2017','04/02/2017','05/02/2017']
x = [dt.datetime.strptime(d,'%d/%m/%Y').date() for d in dates]
data = np.array([[1,2],[2,5],[3,1],[4,0],[5,5]])
 
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
 
fig = plt.figure()
 
ax1 = fig.add_subplot(111)
 
ax1.set_title("Plot title...")
ax1.set_xlabel('your x label..')
ax1.set_ylabel('your y label...')
 
ax1.plot(x,data[:,0], c='r', label='data 1')
ax1.plot(x,data[:,1], c='r', label='data 2')
plt.gcf().autofmt_xdate()
 
leg = ax1.legend()
 
plt.show()

Добавить комментарий
0

Вот вариант визуализации в Pandas:

Данные:

import pandas as pd
import pandas_datareader.data as wb
import matplotlib.pyplot as plt
 
a = wb.DataReader('GOOG', 'yahoo', '2017-01-01')
 
# симулируем ваш DF
a = a.reset_index()
a.columns = ['Date', '1','2','3','4','A','B']
print(a.head())

Вывод:

        Date           1           2           3           4        A           B
0 2017-01-03  778.809998  789.630005  775.799988  786.140015  1643100  786.140015
1 2017-01-04  788.359985  791.340027  783.159973  786.900024  1065400  786.900024
2 2017-01-05  786.080017  794.479980  785.020020  794.020020  1315400  794.020020
3 2017-01-06  795.260010  807.900024  792.203979  806.150024  1620500  806.150024
4 2017-01-09  806.400024  809.966003  802.830017  806.650024  1272400  806.650024

Визуализация

import matplotlib
matplotlib.style.use('ggplot')
 
a.set_index('Date')['3'].plot()

или:

a.plot(x='Date', y='3')
plt.show()

Результат будет одинаковым:

введите сюда описание изображения

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up