Seite 1 von 1

Frequency einbauen

Verfasst: Montag 31. August 2020, 20:07
von Bebbi
Hallo zusammen

Ich habe ein Problem, welches für Euch wohl eher lächerlich ist.

Ich muss für eine Arbeit Daten von Yahoo finance herunterladen. Das funktioniert mit folgendem Befehl sehr gut:

stock_data_ibm = dr.data.DataReader('ibm', data_source='yahoo', start=start_date, end=end_date)

das Problem ist nur, dass ich lediglich die monatlichen Werte und nicht die täglichen Werte benötige. Ich dachte ich kann den Befehl wie folgt ergänzen:

stock_data_ems = dr.data.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date, interval='m')

In diesem Fall erhalte ich jeweils eine Fehlermeldung. Das gleiche wenn ich anstell von "interval", "frequency" benutze. Dies sind allerdings die beiden Befehle welche ich bei der Websuche finde. Was läuft falsch?

Danke

Re: Frequency einbauen

Verfasst: Dienstag 1. September 2020, 06:20
von Jankie
Poste bei mal bitte deinen Code und den gesamten Traceback.

Folgendes funktioniert bei mir: (ist aber nur täglich) Aber auch wenn ich das Startdatum auf den 01.08 setze funktioniert es.

Code: Alles auswählen

import pandas_datareader.data as dr
from datetime import datetime

start_date = datetime(2020, 8, 31)
end_date = datetime(2020, 8, 31)
stock_data_ems = dr.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date)
print(stock_data_ems)
oder du machst es folgerndermaßen:

Code: Alles auswählen

stock_data_ems = dr.get_data_yahoo('EMSN.SW', start='2020-01-01',  interval='m')
print(stock_data_ems)

Re: Frequency einbauen

Verfasst: Mittwoch 2. September 2020, 16:23
von Bebbi
Sorry für die späte Rückmeldung:

Ich habe es folgendermassen versucht:

Code: Alles auswählen

start_date = dt.datetime(2010, 6, 30)
end_date = dt.datetime(2020, 6, 30)
frequency = interval='m'
und

Code: Alles auswählen

stock_data_ems = dr.data.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date)
Das klappt aber leider nicht.

Re: Frequency einbauen

Verfasst: Donnerstag 3. September 2020, 06:16
von Jankie
Zeig mal deinen kompletten Code (inkl. imports) und zeigt den exakten Traceback. Klappt nicht ist nicht sehr aussagekräftig.

Bei mir klappt es so, wahrscheinlich machst du irgendwas falsch. Nur um zu wissen was du falsch machst wäre der ganze Code und Traceback sinnvoll.

So bekomme ich für jeden Tag die Werte:

Code: Alles auswählen

import pandas_datareader.data as dr
from datetime import datetime

start_date = datetime(2010, 6, 30)
end_date = datetime(2020, 6, 30)

stock_data_ems = dr.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date)

print(stock_data_ems)
und so für jeden Monat:

Code: Alles auswählen

import pandas_datareader.data as dr
from datetime import datetime

start_date = datetime(2010, 6, 30)
stock_data_ems = dr.get_data_yahoo('EMSN.SW', start=start_date,  interval='m')
print(stock_data_ems)

Re: Frequency einbauen

Verfasst: Donnerstag 3. September 2020, 19:40
von Bebbi
Hier die Imports

Code: Alles auswählen

# import python data science and utility libraries
import os, io, urllib, itertools
import datetime as dt
import pandas as pd
import pandas_datareader as dr
import numpy as np
Ich habe datetime importiert und ich habe auch den pandas_datareader importiert. Trotzdem kommt bei folgendem Code die untenstehende Meldung:

Code: Alles auswählen

start_date = dt.datetime(2010, 6, 30)
end_date = dt.datetime(2020, 6, 30)

Code: Alles auswählen

stock_data_ems = dr.data.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date, interval='m')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-26-b049fb8fd785> in <module>()
----> 1 stock_data_ems = dr.data.DataReader('EMSN.SW', data_source='yahoo', start=start_date, end=end_date, interval='m')

/usr/local/lib/python3.6/dist-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    212                 else:
    213                     kwargs[new_arg_name] = new_arg_value
--> 214             return func(*args, **kwargs)
    215 
    216         return cast(F, wrapper)

TypeError: DataReader() got an unexpected keyword argument 'interval'
Irgendwie erkennt der DataReader das Argument 'interval' nicht....

Re: Frequency einbauen

Verfasst: Dienstag 8. September 2020, 06:16
von Jankie
Wie kommst du denn darauf, dass DataReader das Argument kennen sollte?