Я пытаюсь создать таблицу цен на акции, используя datareader. Проблема заключается в том, что коды тикеров, используемые для извлечения данных, не очень интуитивно распознаваемы для построения графиков. Следовательно, я намерен (1) извлечь данные, используя datareader, и (2) заменить имена тикеров более знакомым сокращением (которое я установил внутри в отдельном CSV для; col A = тикер, col B = распознаваемое сокращение ). Тем не менее, мой код ниже, кажется, не работает - особенно начиная с строки 32 и далее. (# Извлечь и создать словарь из CSV, который будет использоваться для замены тикеров на узнаваемые имена)
Может кто-нибудь помочь мне определить, в чем проблема?
import pandas_datareader.data as web
import pandas as pd
import datetime as dt
import csv
import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np
style.use('ggplot')
# Extract closing prices from list of tickers from a txt file
end = dt.datetime.today()
start = dt.date(end.year - 10, 1, 1)
tickerCsv = open('STI constituents.txt', 'r')
reader = csv.reader(tickerCsv)
tickers = {rows[0] for rows in reader}
main_df = pd.DataFrame()
for ticker in tickers:
df = web.DataReader(ticker, 'yahoo', start, end)
df.rename(columns={'Adj Close': ticker}, inplace=True)
df.drop(['Open', 'High', 'Low', 'Close', 'Volume'], 1, inplace=True)
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df, how='outer')
print(main_df)
# Extract and create dictionary from CSV, that will be used to replace tickers into recognisable names
ticker_frame = csv.DictReader(open('Tickers.csv'))
ticker_dict = {}
for row in ticker_frame:
for column, value in row.items():
ticker_dict.setdefault(column, []).append(value)
lookup = pd.DataFrame(ticker_dict)
# Make the replacement to main_df
main_df.replace(dict(zip(lookup.Symbol, lookup.Name)))
# Save the transformed dataframe into CSV
main_df.to_csv('sti_joined.csv')