Wykres ceny i wolumenu

0

Napisałem funkcję, której celem jest stworzenie wykresu pokazującego jak kształtowała się cena zamknięcia wraz z wielkością wolumenu dla danej spółki w danych okresie

def plot_unicredit(market):
    """
    Get asset, show price and volume
    """
    # Get asset
    unicredit_market = ceny[ceny.Spolka=='UniCredit']
    unicredit_market.index = unicredit_market.Dzien


    
    # Plotting
    f, axs = plt.subplots(2,1, sharex=True, figsize=(12,8))
    # Close price 
    unicredit_market.Zamkniecie.plot(ax=axs[0])
    axs[0].set_ylabel("Cena")

    # Volume
    unicredit.Wolumen.plot(ax=axs[1], color='darkred')
    axs[1].set_ylabel("Wolumen")

    # Show the plot
    f.suptitle("Wykres: %s" % 'UniCredit' , fontsize=22)
    plt.tight_layout()
    plt.subplots_adjust(top=0.93)
    plt.show()

plot_unicredit(ceny)

Plik źródłowy "cena" w załączeniu. Funkcja zwraca mi błąd:

AttributeError: 'Series' object has no attribute 'Wolumen'

Problem polega na tym, że w pliku źródłowym znajdują się notowania 13 spółek, a powyższy błąd pojawia się tylko w dwóch z nich - UniCredit i Santander. W pozostałych przypadkach funkcja działa. Dane pochodzą z tego samego źródła i mają ten sam format. Co może być tego przyczyną?

0

Używasz jakiś wartości globalnych, nie wiemy co się z nimi dzieje. A nie masz problemu z spółką GNB? Bo patrząc na excel UniCredit, Santander i GNB łączy jedno: wszystkie mają wolumen o wartości 0 w excelu.

0
AsterFV napisał(a):

Używasz jakiś wartości globalnych, nie wiemy co się z nimi dzieje. A nie masz problemu z spółką GNB? Bo patrząc na excel UniCredit, Santander i GNB łączy jedno: wszystkie mają wolumen o wartości 0 w excelu.

Nie, tak jak napisalem, błąd pojawia się tylko w przypadku UniCredit i Santander Rozumiem, że masz na myśli zerowy wolumen w wybrane dni sesyjne? Ale to nie powinno mieć znacznia, po prostu w takim wypadku na wykresie powinno być 0.

0

Strzelałem bo mam za mało danych aby coś wymyślić. Gdzie ceny.xlsx jest parsowane? Problem raczej nie powstaje na etapie rysowania wykresu. Swoją drogą dlaczego masz "plot_unicredit" - chyba nie implementujesz ręcznie plotowania dla każdej spółki z listy?

0

Wklej cały kod, albo go sklej tak żeby dało się go odpalić i wczytać ten plik.
Podejrzewam że problem może polegać na tym że po indeksowaniu unicredit nie jest już DataFrame, a Series. Jak chcesz otrzymać podzbiór z DF skłądający się z jednej kolumny to robisz coś takiego:

new_df = df[['col1']]

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