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.
Log Kalkulation
Also, hier noch einmal alles in Code Blöcken:
Hier die Fehlermeldung
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.
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()
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
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.
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.
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.