Log Kalkulation

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Wie kommst du denn darauf, dass die Änderung des Trennzeichens dein Problem löst?
Was du machst, ist wildes Herumraten und das ist nicht zielführend.
Zeig den Code, den du _wirklich_ gerade versuchst.
Zeig die Fehlermeldung, die erscheint.
Zeig die Daten aus der CSV-Datei.
Alles in Code-Blöcken.

Dann können wir helfen.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Also, hier noch einmal alles in Code Blöcken:

Code: Alles auswählen

import quandl
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
import statsmodels.api as sms
from scipy import stats
import matplotlib.pyplot as plt
import matplotlib

Code: Alles auswählen

# Load ABB Data
ABB = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/ABB.csv', sep=" ",decimal=";",names=['Datum','ABBN_Preis'])
Roche = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/Roche.csv', sep=" ",decimal=";", names=['ROG_Datum','ROG_Preis'])
ABB.head(10)

Code: Alles auswählen

	Datum	ABBN_Preis
0	30.09.2020	23.45
1	31.08.2020	22.97
2	31.07.2020	22.77
3	30.06.2020	21.33
4	29.05.2020	18.89
5	30.04.2020	18.325
6	31.03.2020	17.005
7	28.02.2020	20.81
8	31.01.2020	22.51
9	30.12.2019	23.37

Code: Alles auswählen

# Concatenate the different dataframes

stocks_data = pd.concat([ABB,Roche], axis=1)
stocks_data.head()

Code: Alles auswählen

Datum	ABBN_Preis	ROG_Datum	ROG_Preis
0	30.09.2020	23.45	30.09.2020	315.15
1	31.08.2020	22.97	31.08.2020	315.7
2	31.07.2020	22.77	31.07.2020	316.1
3	30.06.2020	21.33	30.06.2020	328.35
4	29.05.2020	18.89	29.05.2020	332.7

Code: Alles auswählen

stocks_data['log_ret_ABBN'] = 100*np.log(stocks_data['ABBN_Preis']).diff()
stocks_data['log_ret_ROG'] = 100*np.log(stocks_data['ROG_Preis']).diff()
stocks_data.head()
Hier die Fehlermeldung

Code: Alles auswählen

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
AttributeError: 'str' object has no attribute 'log'

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
<ipython-input-192-aecced4dfae6> in <module>
----> 1 stocks_data['log_ret_ABBN'] = 100*np.log(stocks_data['ABBN_Preis']).diff()
      2 stocks_data['log_ret_ROG'] = 100*np.log(stocks_data['ROG_Preis']).diff()
      3 stocks_data.head()

~\anaconda3\lib\site-packages\pandas\core\series.py in __array_ufunc__(self, ufunc, method, *inputs, **kwargs)
    677 
    678         inputs = tuple(extract_array(x, extract_numpy=True) for x in inputs)
--> 679         result = getattr(ufunc, method)(*inputs, **kwargs)
    680 
    681         name: Optional[Hashable]

TypeError: loop of ufunc does not support argument 0 of type str which has no callable log method
Die csv Dateien sehen wie folgt aus:

30.09.2020 23.45
31.08.2020 22.97
31.07.2020 22.77
30.06.2020 21.33
29.05.2020 18.89
30.04.2020 18.325
31.03.2020 17.005
....

Ich hoffe jetzt sieht man alles auf einmal.

Ich brauche wirklich Hilfe (bald wohl auch psychologische) sonst muss ich das Projekt beenden...was ich wirklich nicht möchte.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Und was denkst du, macht decimal=";" als Argument bei csv_read? Hast du mal einen Blick in die Dokumentation geworfen?
Du weist damit Pandas an, dass das das Dezimaltrennzeichen bei Zahlen ist. Das habe ich noch nie gesehen. Auch nicht in deinen Daten. Und deshalb ist da keine einzige Zahl in deinem DataFrame.
Und weil du die Zeile so noch nie gezeigt hast, konnten wir das auch schlecht erraten.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Danke, danke, danke, jetzt funktionierts. Bei meinem Eintrag vom Sonntag 04.10, 09:30 habe ich diese Zeile bereits geschrieben.. Aber es läuft, Danke
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@Bebbi: Hast du nicht! Da steht definitiv kein ";" als Argument bei decimal.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein hast du nicht. Da war der Separator noch der Strichpunkt. Beim Programmieren kommt es auf Exaktheit an.
Antworten