Wrap in a class and set function as static
This commit is contained in:
+20
-16
@@ -1,16 +1,20 @@
|
|||||||
import yfinance as yf
|
import yfinance as yf
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
# Import the S&P 500 symbols
|
class DataPuller:
|
||||||
symbols = pd.read_excel("./data/stock_symbols.xlsx")
|
|
||||||
symbols.columns = symbols.columns.str.strip()
|
|
||||||
tickers = symbols['Symbol'].tolist()
|
|
||||||
|
|
||||||
# Scrape the data
|
@staticmethod
|
||||||
all_data = []
|
def pull():
|
||||||
for i, symbol in enumerate(tickers): # Try first 20
|
# Import the S&P 500 symbols
|
||||||
|
symbols = pd.read_excel("./data/stock_symbols.xlsx")
|
||||||
|
symbols.columns = symbols.columns.str.strip()
|
||||||
|
tickers = symbols['Symbol'].tolist()
|
||||||
|
|
||||||
|
# Scrape the data
|
||||||
|
all_data = []
|
||||||
|
for i, symbol in enumerate(tickers): # Try first 20
|
||||||
print(f"Processing: {i} of {len(tickers)}")
|
print(f"Processing: {i} of {len(tickers)}")
|
||||||
df = yf.download(symbol, period="max")
|
df = yf.download(symbol, period="max", auto_adjust=True)
|
||||||
if not df.empty:
|
if not df.empty:
|
||||||
# Remove the ticker column
|
# Remove the ticker column
|
||||||
df.columns = df.columns.get_level_values(0)
|
df.columns = df.columns.get_level_values(0)
|
||||||
@@ -37,13 +41,13 @@ for i, symbol in enumerate(tickers): # Try first 20
|
|||||||
|
|
||||||
all_data.append(df)
|
all_data.append(df)
|
||||||
|
|
||||||
# Concatinate into a combined list and cache
|
# Concatinate into a combined list and cache
|
||||||
print("Processing data")
|
print("Processing data")
|
||||||
final_df = pd.concat(all_data)
|
final_df = pd.concat(all_data)
|
||||||
|
|
||||||
# Drop rows with null values
|
# Drop rows with null values
|
||||||
final_df.dropna(inplace=True)
|
final_df.dropna(inplace=True)
|
||||||
|
|
||||||
print("Writing data to file")
|
print("Writing data to file")
|
||||||
final_df.to_parquet("./data/stocks.parquet")
|
final_df.to_parquet("./data/stocks.parquet")
|
||||||
final_df.head(200).to_csv("./data/stocks_preview.csv")
|
final_df.head(200).to_csv("./data/stocks_preview.csv")
|
||||||
Reference in New Issue
Block a user