Witam. Czy może ktoś pomóc z poprawnym napisaniem def funkcji dla odczytania danych z csv i ich otrzymania na wykresie? Jestem początkująca, dlatego nie udaje mi się właśnie to. Oto program jakim próbuję to realizować:
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as dates
def readfile(x):
data_pd = pd.read_csv(x, parse_dates=[['DATE', 'TIME']])
format = '%Y%m%d %H%M'
data_pd = data_pd.set_index(data_pd['DATE_TIME'])
data_pd['DATE_TIME'] = pd.to_datetime(data_pd['DATE_TIME'], format = format)
data_pd = data_pd.set_index(data_pd['DATE_TIME'])
data_pd = data_pd.drop(columns = ['DATE_TIME'])
return data_pd
readfile(r'C:\Users\Beata\Desktop\Duomenys\minute.csv')
print(readfile)
def draw(y):
fig = plt.figure(figsize=(10,7))
fig.add_axes()
ax = fig.add_subplot(111)
ax.xaxis.grid(True, which='minor')
date_formatter = dates.DateFormatter('%H:%M')
ax.xaxis.set_major_locator(dates.MinuteLocator(interval=35))
ax.xaxis.set_major_formatter(date_formatter)
plt.setp(ax.xaxis.get_majorticklabels(), rotation=90, fontsize=7)
fig.autofmt_xdate()
ax.autoscale_view()
y['OPEN'].plot()
ax.set(title='SPY 2012-03-30', ylabel='Cena', xlabel='Czas')
plt.legend(loc='upper left')
plt.grid()
plt.show()
draw(data_pd)
Dane wyglądają:
DATE TIME OPEN HIGH LOW CLOSE VOLUME SPLITS EARNINGDIVIDENDS
20120330 400 140.66 140.66 140.66 140.66 2160 1 0 0
20120330 405 140.63 140.63 140.63 140.63 180 1 0 0
20120330 407 140.64 140.64 140.64 140.64 100 1 0 0
20120330 409 140.64 140.64 140.61 140.61 1110 1 0 0
20120330 410 140.58 140.58 140.58 140.58 100 1 0 0
20120330 420 140.51 140.51 140.51 140.51 500 1 0 0
Otrzymuję takie błędy:
Traceback (most recent call last):
File "C:/Users/Beata/PycharmProjects/1zad/1u.py", line 36, in <module>
draw(data_pd)
NameError: name 'data_pd' is not defined