получить ошибку при чтении данных Yahoo с использованием Python и панд - PullRequest
0 голосов
/ 08 июня 2018

Я работаю с Python и Pandas.

У меня есть следующий код, который читает информацию для акций Amazon:

import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pprint
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
from scipy.signal import argrelextrema
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
import pandas as pd


def sample_reading_from_yahoo():
    # setting plotting, start  / end date and time
    style.use('ggplot')

    # setting up the date and time
    start = dt.datetime(2017, 1, 1)
    end = dt.date.today()

    # pull back the data
    yf.pdr_override()
    #data = pdr.get_data_yahoo("AMZN", start, end="2017-09-12")

    data = pdr.get_data_yahoo("AMZN", start, end)

    data = data.rename(columns={'Open': 'open'})
    data = data.rename(columns={'High': 'high'})
    data = data.rename(columns={'Low': 'low'})
    data = data.rename(columns={'Close': 'close'})
    data = data.rename(columns={'Adj Close': 'adjusted'})
    data = data.rename(columns={'Volume': 'vol'})

    data = data.drop_duplicates(keep=False)

    data = data[['open', 'high', 'low', 'close', 'vol']]
    return data


# MAIN
data = sample_reading_from_yahoo()
print(data)

Вывод выглядит следующим образом:

                   open         high          low        close       vol
Date                                                                    
2017-01-03   757.919983   758.760010   747.700012   753.669983   3521100
2017-01-04   758.390015   759.679993   754.200012   757.179993   2510500
2017-01-05   761.549988   782.400024   760.260010   780.450012   5830100
2017-01-06   782.359985   799.440002   778.479980   795.989990   5986200
2017-01-09   798.000000   801.770020   791.770020   796.919983   3440100
2017-01-10   796.599976   798.000000   789.539978   795.900024   2558400

Всякий раз, когда я делаю изменения в основной области следующим образом,

# MAIN

data = sample_reading_from_yahoo()
print(data)

data.Date = pd.to_datetime(data.Date, format='%d.%m.%Y %H:%M:%S.%f')

data.set_index(data.Date)

я получаю ошибку ниже

Traceback (последний вызов был последним): файл "C: /Users/dgmufasa/PycharmProjects/Opportunities/Opportunities.py", строка 96, в файле data = sample_reading_from_yahoo () "C: / Users / dgmufasa / PycharmProjects / Opportunities/Opportunities.py ", строка 86, в sample_reading_from_yahoo data.Date = pd.to_datetime (data.Date, format = '% d.% M.% Y% H:% M:% S.% f') Файл" C: \ WORK \ Software \ Python64bitv3.6 \ lib \ site-packages \ pandas \ core \ generic.py ", строка 3614, в getattr возвращаемый объект. getattribute (self, name) AttributeError: у объекта «DataFrame» нет атрибута «Дата»

Как это исправить?

ИЗМЕНЕНИЯ

@ CK Chen- Спасибо за тОтвет.

Я внес следующие изменения:

def sample_reading_from_yahoo():
    [... snip ...]

    #print(data['vol'])

    data = data.drop_duplicates(keep=False)

    data = data[['open', 'high', 'low', 'close', 'vol']]
    return data

# MAIN

data = sample_reading_from_yahoo()

#print(data.index)

data['datetime_index'] = pd.to_datetime(data.index, format='%m-%d-%Y %H:%M:%S')
data.set_index('datetime_index')

print('THIS THE DATA RESULT')
print(data)

И получил результат:

THIS THE DATA RESULT
                   open         high          low        close       vol  \
Date                                                                       
2017-01-03   757.919983   758.760010   747.700012   753.669983   3521100   
2017-01-04   758.390015   759.679993   754.200012   757.179993   2510500   
2017-01-05   761.549988   782.400024   760.260010   780.450012   5830100    

           datetime_index  
Date                       
2017-01-03     2017-01-03  
2017-01-04     2017-01-04  
2017-01-05     2017-01-05  

Кажется, формат времени не изменился.Что я сделал не так?

TIA

1 Ответ

0 голосов
/ 08 июня 2018

Date - это имя.данных фрейма данных.
Вы можете попробовать:

data['datetime_index'] = pd.to_datetime(data.index, format='%Y-%m-%d')
data.set_index('datetime_index')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...