Wykres

0

Witam. Napisałam część programu, który wyświetla mi moje dane z csv file. Próbowałam już mnóstwo razy narysować wykres, gdzie oś x - data, oś y - close price, ale mi się nie udaje. Biblioteki potrzebne do tego mam. Może ktoś się zna na tym?

import pandas as pd
from datetime import datetime
import csv
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
headers = ['date','close','volume','open','high','low']

df = pd.read_csv('C:/Users\Beata\Desktop\Duomenys\FB_stock_prices_daily.csv',names=headers)
print (df)

Dane wyświetlone (csv file) wyglądają tak:
date close volume open high low
0 6/18/2018 198.310 16470990 194.800 199.5800 194.1300
1 6/19/2018 197.490 19968690 196.235 197.9600 193.7900
2 6/20/2018 202.000 28175590 199.100 203.5500 198.8050
..............................................................................................

0

Próbowałam już mnóstwo razy narysować wykres, gdzie oś x - data, oś y - close price, ale mi się nie udaje

Się zapytam - jak próbowałaś i jaki był tego efekt? Oraz jaki być powinien?

1

Jest w Pythonie taki magiczny cosik, którym można przeniuchać plik CSV żeby np. sprawdzić, czy na pewno jest Comma Separated a nie Space Separated albo Semicolon Separated: https://docs.python.org/3/library/csv.html#csv.Sniffer

0

Chcę otrzymać coś w tym rodzaju

0
Serechiel napisał(a):

Próbowałam już mnóstwo razy narysować wykres, gdzie oś x - data, oś y - close price, ale mi się nie udaje

Się zapytam - jak próbowałaś i jaki był tego efekt? Oraz jaki być powinien?

Chce otrzymać tak: (załącznik)

0
Beata Griškevič napisał(a):
Serechiel napisał(a):

Próbowałam już mnóstwo razy narysować wykres, gdzie oś x - data, oś y - close price, ale mi się nie udaje

Się zapytam - jak próbowałaś i jaki był tego efekt? Oraz jaki być powinien?

Chce otrzymać tak: (załącznik)

A jeszcze jedno, przekształciłaś kolumnę date do typu datetime?

df['date'] = pd.to_datetime(df['date'])

Na 99% pandas wczytał kolumnę date jako str, więc trochę średnio z użyciem jej jako osi czasu na wykresie.

0
Beata Griškevič napisał(a):

Chcę otrzymać coś w tym rodzaju

Dałaś kod, w którym wczytujesz CSV, ale nie podałaś kodu, którym chcesz wyświetlić wykres. Podaj ten kod, to będziemy mogli poszukać błędu.

0

oś x - data, oś y - close price

Na początek zobacz jak odczytane zostały kolumny:

print (df.columns)

powinno dać:

Index(['date', 'close', 'volume', 'open', 'high', 'low''],
      dtype='object')

Skoro zaczynasz, to zacznij od rzeczy najprostszych:

df.plot.line(x = df.columns[indeks(y)], y = df.columns[indeks(y)]) 

PS. Z indeksami kolumn obchodzi się jak z listą. 0 - pierwsza, 1 - druga itd. Można na osi umieścić kilka kolumn następujących po sobie.

0

Mam tak:

from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as dates
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import timeit
from IPython.display import clear_output

df = pd.read_csv('C:\Users\Beata\Desktop\FB_stock_prices_daily.csv', chunksize=10000, low_memory=False, iterator=True, infer_datetime_format=True, parse_dates='Date', 'Time')
data_tik = pd.concat(df, ignore_index=True)

fig = plt.figure(figsize=(15,9))
fig.add_axes()
ax = fig.add_subplot(111)
ax.plot(data_tik['Date_Time'], data_tik['Close'], color='green', label="FB", linewidth=0.8)
ax.xaxis.set_minor_locator(dates.MinuteLocator(interval=360))
ax.xaxis.set_minor_formatter(dates.DateFormatter('%H:%M'))
plt.setp(ax.xaxis.get_minorticklabels(), rotation=90, fontsize=5)
ax.xaxis.grid(True, which="minor")
ax.xaxis.set_major_locator(dates.DayLocator(interval=2))
ax.xaxis.set_major_formatter(dates.DateFormatter('\n\n%Y/%m/%d'))
plt.title("FB")
ax.set(title='FB', ylabel='Price', xlabel='Date')
plt.legend(loc='upper left')
plt.grid()
plt.show()

1

Czy możesz zdefiniować problem poprawnie (co ma być konkretnie wyrysowane) oraz dodać niezbędny plik z danymi (może być wycinek), tak by można było Ci pomóc?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0