Usando a API Alpha Vantage (gratuita) para dados de mercado financeiro
import requests
import pandas as pd
from datetime import datetime
# Usando a API Alpha Vantage (gratuita) para dados de mercado financeiro
# Você precisa se registrar em https://www.alphavantage.co para obter uma API key gratuita
API_KEY = "SUA CHAVE DE API" # Chave da API fornecida pelo usuário
def get_stock_data(symbol="IBM"):
"""
Função para obter dados históricos de ações
"""
base_url = "https://www.alphavantage.co/query"
params = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"apikey": API_KEY,
"outputsize": "compact"
}
try:
response = requests.get(base_url, params=params)
data = response.json()
# Verificar se a resposta contém erro
if "Error Message" in data:
print(f"Erro da API: {data['Error Message']}")
return None
if "Note" in data:
print(f"Aviso da API: {data['Note']}")
return None
if "Time Series (Daily)" not in data:
print(f"Erro: Dados não encontrados para {symbol}")
print("Resposta da API:", data)
return None
# Convertendo dados para DataFrame
df = pd.DataFrame.from_dict(data["Time Series (Daily)"], orient="index")
# Renomeando colunas
df.columns = [col.split(". ")[1] for col in df.columns]
# Convertendo tipos de dados
for col in df.columns:
df[col] = pd.to_numeric(df[col], errors='coerce')
# Resetando índice e convertendo para datetime
df.index = pd.to_datetime(df.index)
df = df.reset_index()
df.rename(columns={"index": "date"}, inplace=True)
if df.empty:
print(f"Aviso: DataFrame vazio para {symbol}")
return None
return df
except requests.exceptions.RequestException as e:
print(f"Erro na conexão: {str(e)}")
return None
except ValueError as e:
print(f"Erro ao processar dados: {str(e)}")
return None
except Exception as e:
print(f"Erro inesperado: {str(e)}")
return None
# Exemplo de uso
symbol = "MSFT" # Símbolo da Microsoft
df = get_stock_data(symbol)
if df is not None:
try:
display(df.head()) # Usando display() que é específico do Databricks
# Criando um gráfico simples
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'])
plt.title(f'Preço de Fechamento - {symbol}')
plt.xlabel('Data')
plt.ylabel('Preço ($)')
plt.grid(True)
plt.xticks(rotation=45)
display(plt.show())
except Exception as e:
print(f"Erro ao exibir dados: {str(e)}")
import requests
import pandas as pd
from datetime import datetime
# Usando a API Alpha Vantage (gratuita) para dados de mercado financeiro
# Você precisa se registrar em https://www.alphavantage.co para obter uma API key gratuita
API_KEY = "SUA CHAVE DE API" # Chave da API fornecida pelo usuário
def get_stock_data(symbol="IBM"):
"""
Função para obter dados históricos de ações
"""
base_url = "https://www.alphavantage.co/query"
params = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"apikey": API_KEY,
"outputsize": "compact"
}
try:
response = requests.get(base_url, params=params)
data = response.json()
# Verificar se a resposta contém erro
if "Error Message" in data:
print(f"Erro da API: {data['Error Message']}")
return None
if "Note" in data:
print(f"Aviso da API: {data['Note']}")
return None
if "Time Series (Daily)" not in data:
print(f"Erro: Dados não encontrados para {symbol}")
print("Resposta da API:", data)
return None
# Convertendo dados para DataFrame
df = pd.DataFrame.from_dict(data["Time Series (Daily)"], orient="index")
# Renomeando colunas
df.columns = [col.split(". ")[1] for col in df.columns]
# Convertendo tipos de dados
for col in df.columns:
df[col] = pd.to_numeric(df[col], errors='coerce')
# Resetando índice e convertendo para datetime
df.index = pd.to_datetime(df.index)
df = df.reset_index()
df.rename(columns={"index": "date"}, inplace=True)
if df.empty:
print(f"Aviso: DataFrame vazio para {symbol}")
return None
return df
except requests.exceptions.RequestException as e:
print(f"Erro na conexão: {str(e)}")
return None
except ValueError as e:
print(f"Erro ao processar dados: {str(e)}")
return None
except Exception as e:
print(f"Erro inesperado: {str(e)}")
return None
# Exemplo de uso
symbol = "MSFT" # Símbolo da Microsoft
df = get_stock_data(symbol)
if df is not None:
try:
display(df.head()) # Usando display() que é específico do Databricks
# Criando um gráfico simples
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'])
plt.title(f'Preço de Fechamento - {symbol}')
plt.xlabel('Data')
plt.ylabel('Preço ($)')
plt.grid(True)
plt.xticks(rotation=45)
display(plt.show())
except Exception as e:
print(f"Erro ao exibir dados: {str(e)}")
Avaliação
0
0
Por enquanto não há comentários.
Participe desse curso
para ser o primeiro a comentar.