pilot-etf-tech / common_functionality.py
Artem Kalyta
added excel merging
66e4785
import json
import openai
import pandas as pd
import yfinance as yf
from config import Config
def convert_to_excel(dataframes: dict[pd.DataFrame], filename="updated_data", index=True) -> str:
"""
Accepts a dictionary of dataframes and converts it to an Excel file
"""
filename = f"{filename}.xlsx"
print(f"Writing to {filename}")
writer = pd.ExcelWriter(filename, engine='openpyxl')
for ticker, df in dataframes.items():
print(f"Sheet name: {ticker}")
df.reset_index(drop=True, inplace=True)
df.to_excel(writer, index=index, sheet_name=ticker)
writer.close()
return filename
def send_openai_request(prompt: str, max_tokens=6000, temperature=0.1, model="gpt-4") -> dict:
try:
response = openai.ChatCompletion.create(
model=model,
messages=[
{
"role": "user",
"content": f"{prompt}"
}
],
temperature=temperature,
max_tokens=max_tokens,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
except:
response = openai.ChatCompletion.create(
model=model,
messages=[
{
"role": "user",
"content": f"{prompt}"
}
],
temperature=temperature,
max_tokens=max_tokens,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return json.loads(response.choices[0]["message"]["content"])
def get_financial_columns(data: pd.DataFrame) -> list:
test = yf.Ticker("AAPL")
financial_columns = [x for x in data.columns if x in (test.info.keys() or Config.FINANCE_HISTORICAL_RETURN in x)
and x != "Country"]
return financial_columns