|
import streamlit as st |
|
st.set_page_config(layout="wide") |
|
import numpy as np |
|
import pandas as pd |
|
import time |
|
from fuzzywuzzy import process |
|
import random |
|
|
|
|
|
from global_func.clean_player_name import clean_player_name |
|
from global_func.load_file import load_file |
|
from global_func.load_ss_file import load_ss_file |
|
from global_func.find_name_mismatches import find_name_mismatches |
|
from global_func.predict_dupes import predict_dupes |
|
from global_func.highlight_rows import highlight_changes, highlight_changes_winners, highlight_changes_losers |
|
from global_func.load_csv import load_csv |
|
from global_func.find_csv_mismatches import find_csv_mismatches |
|
|
|
tab1, tab2 = st.tabs(["Data Load", "Contest Analysis"]) |
|
with tab1: |
|
if st.button('Clear data', key='reset1'): |
|
st.session_state.clear() |
|
|
|
col1, col2, col3 = st.columns(3) |
|
|
|
with col1: |
|
st.subheader("Draftkings/Fanduel CSV") |
|
st.info("Upload the player pricing CSV from the site you are playing on.") |
|
|
|
upload_csv_col, csv_template_col = st.columns([3, 1]) |
|
with upload_csv_col: |
|
csv_file = st.file_uploader("Upload CSV File", type=['csv']) |
|
if 'csv_file' in st.session_state: |
|
del st.session_state['csv_file'] |
|
with csv_template_col: |
|
|
|
csv_template_df = pd.DataFrame(columns=['Name', 'ID', 'Roster Position', 'Salary']) |
|
|
|
st.download_button( |
|
label="CSV Template", |
|
data=csv_template_df.to_csv(index=False), |
|
file_name="csv_template.csv", |
|
mime="text/csv" |
|
) |
|
st.session_state['csv_file'] = load_csv(csv_file) |
|
try: |
|
st.session_state['csv_file']['Salary'] = st.session_state['csv_file']['Salary'].astype(str).str.replace(',', '').astype(int) |
|
except: |
|
pass |
|
|
|
if csv_file: |
|
st.session_state['csv_file'] = st.session_state['csv_file'].drop_duplicates(subset=['Name']) |
|
st.success('Projections file loaded successfully!') |
|
st.dataframe(st.session_state['csv_file'].head(10)) |
|
|
|
with col2: |
|
st.subheader("Contest File") |
|
st.info("Go ahead and upload a Contest file here. Only include player columns and an optional 'Stack' column if you are playing MLB.") |
|
Contest_file = st.file_uploader("Upload Contest File (CSV or Excel)", type=['csv', 'xlsx', 'xls']) |
|
if 'Contest' in st.session_state: |
|
del st.session_state['Contest'] |
|
|
|
if Contest_file: |
|
st.session_state['Contest'], st.session_state['position_dict'], st.session_state['ownership_dict'], st.session_state['entry_list'] = load_file(Contest_file) |
|
st.session_state['Contest'] = st.session_state['Contest'].dropna(how='all') |
|
st.session_state['Contest'] = st.session_state['Contest'].reset_index(drop=True) |
|
if st.session_state['Contest'] is not None: |
|
st.success('Contest file loaded successfully!') |
|
st.dataframe(st.session_state['Contest'].head(10)) |
|
|
|
with col3: |
|
st.subheader("Projections File") |
|
st.info("upload a projections file that has 'player_names', 'salary', 'median', 'ownership', and 'captain ownership' (Needed for Showdown) columns. Note that the salary for showdown needs to be the FLEX salary, not the captain salary.") |
|
|
|
|
|
upload_col, template_col = st.columns([3, 1]) |
|
|
|
with upload_col: |
|
projections_file = st.file_uploader("Upload Projections File (CSV or Excel)", type=['csv', 'xlsx', 'xls']) |
|
if 'projections_df' in st.session_state: |
|
del st.session_state['projections_df'] |
|
|
|
with template_col: |
|
|
|
template_df = pd.DataFrame(columns=['player_names', 'position', 'team', 'salary', 'median', 'ownership', 'captain ownership']) |
|
|
|
st.download_button( |
|
label="Template", |
|
data=template_df.to_csv(index=False), |
|
file_name="projections_template.csv", |
|
mime="text/csv" |
|
) |
|
|
|
if projections_file: |
|
export_projections, projections = load_file(projections_file) |
|
if projections is not None: |
|
st.success('Projections file loaded successfully!') |
|
st.dataframe(projections.head(10)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with tab2: |
|
if st.button('Clear data', key='reset3'): |
|
st.session_state.clear() |
|
|