コード例 #1
0
def write():

    data = funcs.get_data()
    data['Swim'].fillna(0.0, inplace=True)
    data['Bike'].fillna(0, inplace=True)
    data['Run'].fillna(0, inplace=True)
    data['T1'].fillna(0, inplace=True)
    data['T2'].fillna(0, inplace=True)

    data = funcs.removeNotFinished(data)
    data = funcs.convertTimes(data)
    data['Country Name'] = data['Country'].apply(funcs.getCountryName)

    udisp.title_awesome('Melhor natação')
    d = data[data.SwimN == data.SwimN.min()]
    st.table(removeAddicionalColumns(d))

    udisp.title_awesome('Melhor T1')
    d = data[data.T1N == data.T1N.min()]
    st.table(removeAddicionalColumns(d))

    udisp.title_awesome('Melhor bike')
    d = data[data.BikeN == data.BikeN.min()]
    st.table(removeAddicionalColumns(d))

    udisp.title_awesome('Melhor T2')
    d = data[data.T2N == data.T2N.min()]
    st.table(removeAddicionalColumns(d))

    udisp.title_awesome('Melhor corrida')
    d = data[data.RunN == data.RunN.min()]
    st.table(removeAddicionalColumns(d))
コード例 #2
0
ファイル: athlete.py プロジェクト: Luyyss/iron_man_2019_stats
def write():

    data = funcs.get_data()
    data['Country Name'] = data['Country'].apply(funcs.getCountryName)

    athletes = data['Name'].unique()

    option = st.sidebar.selectbox('Buscar atleta pelo nome:', sorted(athletes))

    atleta = data.loc[data['Name'] == option]

    atleta = atleta.drop(['Country'], axis=1)

    st.table(atleta.assign(hack='').set_index('hack'))

    atleta = funcs.convertTimes(atleta)

    source = pd.DataFrame({
        'Atividade': ['Swim', 'T1', 'Bike', 'T2', 'Run'],
        'TimeN': [
            getValueUniq(atleta, 'SwimN'),
            getValueUniq(atleta, 'T1N'),
            getValueUniq(atleta, 'BikeN'),
            getValueUniq(atleta, 'T2N'),
            getValueUniq(atleta, 'RunN')
        ],
        'Tempo': [
            getValueUniq(atleta, 'Swim'),
            getValueUniq(atleta, 'T1'),
            getValueUniq(atleta, 'Bike'),
            getValueUniq(atleta, 'T2'),
            getValueUniq(atleta, 'Run')
        ],
        'Ordem': [1, 2, 3, 4, 5]
    })

    if getValueUniq(atleta, 'Overall Rank') != 'DNF':

        st.altair_chart(
            alt.Chart(source).transform_joinaggregate(
                TotalTime='sum(TimeN)', ).transform_calculate(
                    PercentOfTotal="datum.TimeN / datum.TotalTime").mark_bar().
            encode(x=alt.X('PercentOfTotal:Q',
                           axis=alt.Axis(format='.0%'),
                           title='Porcentagem do total'),
                   y=alt.Y('Atividade:N',
                           sort=alt.EncodingSortField(field="Ordem",
                                                      order='ascending')),
                   tooltip=['Tempo']).properties(height=450, width=700))
コード例 #3
0
def write():

    data = funcs.get_data()
    data = funcs.convertTimes(data)
    data = funcs.removeNotFinished(data)
    data['Country Name'] = data['Country'].apply(funcs.getCountryName)

    createPlot(data, 'Swim', 'green')

    createPlot(data, 'T1', 'red')

    createPlot(data, 'Bike', 'yellow')

    createPlot(data, 'T2', 'black')

    createPlot(data, 'Run', 'pink')
コード例 #4
0
def write():

    data = funcs.get_data()
    data = funcs.convertTimes(data)
    data['Country Name'] = data['Country'].apply(funcs.getCountryName)

    data = funcs.removeNotFinished(data)

    ##
    ##  Gráfico
    ##

    athletes = data['Name'].unique()

    option1 = st.sidebar.selectbox('Buscar atleta pelo nome:', sorted(athletes) )
    atleta1 = data.loc[data['Name'] == option1].drop(['Country'], axis=1)

    option2 = st.sidebar.selectbox('Segundo atleta:', sorted(athletes) )
    atleta2 = data.loc[data['Name'] == option2].drop(['Country'], axis=1)

    df = pd.DataFrame([
        {'val':'1', 'Order':1, 'name': funcs.getValueUniq(atleta1, 'Name'), 'Tempo': funcs.getValueUniq(atleta1, 'Swim'), 'TempoN': funcs.getValueUniq(atleta1, 'SwimN'), 'Atividade':'Swim'},
        {'val':'2', 'Order':1, 'name': funcs.getValueUniq(atleta2, 'Name'), 'Tempo': funcs.getValueUniq(atleta2, 'Swim'), 'TempoN': funcs.getValueUniq(atleta2, 'SwimN'), 'Atividade':'Swim'},
        {'val':'1', 'Order':2, 'name': funcs.getValueUniq(atleta1, 'Name'), 'Tempo': funcs.getValueUniq(atleta1, 'T1'), 'TempoN': funcs.getValueUniq(atleta1, 'T1N'), 'Atividade':'T1'},
        {'val':'2', 'Order':2, 'name': funcs.getValueUniq(atleta2, 'Name'), 'Tempo': funcs.getValueUniq(atleta2, 'T1'), 'TempoN': funcs.getValueUniq(atleta2, 'T1N'), 'Atividade':'T1'},
        {'val':'1', 'Order':3, 'name': funcs.getValueUniq(atleta1, 'Name'), 'Tempo': funcs.getValueUniq(atleta1, 'Bike'), 'TempoN': funcs.getValueUniq(atleta1, 'BikeN'), 'Atividade':'Bike'},
        {'val':'2', 'Order':3, 'name': funcs.getValueUniq(atleta2, 'Name'), 'Tempo': funcs.getValueUniq(atleta2, 'Bike'), 'TempoN': funcs.getValueUniq(atleta2, 'BikeN'), 'Atividade':'Bike'},
        {'val':'1', 'Order':4, 'name': funcs.getValueUniq(atleta1, 'Name'), 'Tempo': funcs.getValueUniq(atleta1, 'T2'), 'TempoN': funcs.getValueUniq(atleta1, 'T2N'), 'Atividade':'T2'},
        {'val':'2', 'Order':4, 'name': funcs.getValueUniq(atleta2, 'Name'), 'Tempo': funcs.getValueUniq(atleta2, 'T2'), 'TempoN': funcs.getValueUniq(atleta2, 'T2N'), 'Atividade':'T2'},
        {'val':'1', 'Order':5, 'name': funcs.getValueUniq(atleta1, 'Name'), 'Tempo': funcs.getValueUniq(atleta1, 'Run'), 'TempoN': funcs.getValueUniq(atleta1, 'RunN'), 'Atividade':'Run'},
        {'val':'2', 'Order':5, 'name': funcs.getValueUniq(atleta2, 'Name'), 'Tempo': funcs.getValueUniq(atleta2, 'Run'), 'TempoN': funcs.getValueUniq(atleta2, 'RunN'), 'Atividade':'Run'}
    ])

    base = alt.Chart(df).properties( width=400 )

    color_scale = alt.Scale(domain=[option1, option2], range=['#1f77b4', '#1f77b4'])


    left = base.transform_filter(
        alt.datum.val == '1'
    ).encode(
        y=alt.Y('Atividade:N', axis=None, sort=alt.EncodingSortField(field="Order", order='ascending')),
        x=alt.X('sum(TempoN):Q', title='Tempo', sort=alt.SortOrder('descending')),
        color=alt.Color('name:N', scale=color_scale, legend=None),
        tooltip=['Tempo:N'],
        order=alt.Order(
            'Order',
            sort='ascending'
        )
    ).mark_bar().properties(title=option1)


    middle = base.encode(
        y=alt.Y('Atividade:N', axis=None, sort=alt.EncodingSortField(field="Order", order='ascending')),
        text=alt.Text('Atividade:N'),
        order=alt.Order(
            'Order',
            sort='ascending'
        )
    ).mark_text().properties(width=40)

    right = base.transform_filter(
        alt.datum.val == '2'
    ).encode(
        y=alt.Y('Atividade:N', axis=None, sort=alt.EncodingSortField(field="Order", order='ascending')),
        x=alt.X('sum(TempoN):Q', title='Tempo'),
        color=alt.Color('name:N', scale=color_scale, legend=None),
        tooltip=['Tempo:N']
    ).mark_bar().properties(title=option2)

    st.altair_chart( alt.concat(left, middle, right, spacing=5) )

    ##
    ##  Tabela
    ##

    df1 = pd.DataFrame([
        {'Atividade':'Swim', 'Tempo': funcs.getValueUniq(atleta1, 'Swim')},
        {'Atividade':'T1', 'Tempo': funcs.getValueUniq(atleta1, 'T1')},
        {'Atividade':'Bike', 'Tempo': funcs.getValueUniq(atleta1, 'Bike')},
        {'Atividade':'T2', 'Tempo': funcs.getValueUniq(atleta1, 'T2')},
        {'Atividade':'Run', 'Tempo': funcs.getValueUniq(atleta1, 'Run')},
        {'Atividade':'Total', 'Tempo': funcs.getValueUniq(atleta1, 'Overall')}
    ])

    df2 = pd.DataFrame([
        {'Atividade':'Swim', 'Tempo': funcs.getValueUniq(atleta2, 'Swim')},
        {'Atividade':'T1', 'Tempo': funcs.getValueUniq(atleta2, 'T1')},
        {'Atividade':'Bike', 'Tempo': funcs.getValueUniq(atleta2, 'Bike')},
        {'Atividade':'T2', 'Tempo': funcs.getValueUniq(atleta2, 'T2')},
        {'Atividade':'Run', 'Tempo': funcs.getValueUniq(atleta2, 'Run')},
        {'Atividade':'Total', 'Tempo': funcs.getValueUniq(atleta2, 'Overall')}
    ])

    with Grid("1 1", color="#000000", background_color="#FFFFFF") as grid:
        grid.cell("a", 1, 2, 1, 2).dataframe( df1.set_index('Atividade', inplace=False) )
        grid.cell("b", 2, 3, 1, 2).dataframe( df2.set_index('Atividade', inplace=False) )


    # st.write(funcs.secondsToTime( funcs.getValueUniq(atleta2, 'RunN') ))
コード例 #5
0
ファイル: dnsdnf.py プロジェクト: Luyyss/iron_man_2019_stats
def write():

    data = funcs.get_data()
    data = funcs.convertTimes(data)

    ##
    ##  Tabela
    ##

    total = data.shape[0]

    df = pd.DataFrame({
        'Athletes': [total],
        # 'Swim Finish': [  showPorcent( 100 * ( (total - data[data['Swim'].isnull()].shape[0] ) / total) ) ],
        'Swim Finish': [(total - data[data['Swim'].isnull()].shape[0])],
        'Swim DNS/DNF': [
            funcs.showPercent(100 *
                              (data['Swim'].isnull() &
                               (data['Overall Rank'].eq('DNS')
                                | data['Overall Rank'].eq('DNF'))).mean())
        ],
        # 'Bike Finish': [ showPorcent( 100 * ( (total - data[data['Bike'].isnull()].shape[0] ) / total) ) ],
        'Bike Finish': [(total - data[data['Bike'].isnull()].shape[0])],
        'Bike DNF': [
            showPorcent(100 * (data['Bike'].isnull() &
                               (data['Overall Rank'].eq('DNS')
                                | data['Overall Rank'].eq('DNF'))).mean())
        ],
        # 'Run Finish': [ showPorcent( 100 * ( (total - data[data['Run'].isnull()].shape[0] ) / total) ) ],
        'Run Finish': [(total - data[data['Run'].isnull()].shape[0])],
        'Run DNF': [
            showPorcent(
                100 *
                (data['Run'].isnull() & data['Overall Rank'].eq('DNF')).mean())
        ],
        'Overall DNS/DNF': [
            showPorcent(100 * (data['Overall Rank'].eq('DNS')
                               | data['Overall Rank'].eq('DNF')).mean())
        ],
    })

    df = df.assign(hack='').set_index('hack')

    st.table(df)

    ##
    ##  Gráficos
    ##

    data = data.drop([
        'Overall', 'Run', 'Bike', 'Swim', 'T1', 'T2', 'Division Rank',
        'Gender Rank'
    ],
                     axis=1).sort_values(['Division'], ascending=[1])
    data['Atletas'] = 1

    prepareBlock(data, 'DQ')

    prepareBlock(data, 'DNS')

    prepareBlock(data, 'DNF')
コード例 #6
0
import pandas as pd
import numpy as np
import altair as alt
import streamlit as st
import utils.display as udisp
import utils.functions as funcs

data = funcs.get_data()
data = funcs.convertTimes(data)
data = funcs.removeNotFinished(data)
data['Country Name'] = data['Country'].apply(funcs.getCountryName)
data.astype({'BikeN': int})


def calculeMedianFromCat(cat, n):

    df = data[data['Division'] == cat].head(n)

    aux = {
        'Name': cat,
        'SwimN': int(df['SwimN'].median()),
        'T1N': int(df['T1N'].median()),
        'BikeN': int(df['BikeN'].median()),
        'T2N': int(df['T2N'].median()),
        'RunN': int(df['RunN'].median()),
    }

    aux['Swim'] = funcs.secondsToTime(aux['SwimN'])
    aux['T1'] = funcs.secondsToTime(aux['T1N'])
    aux['Bike'] = funcs.secondsToTime(aux['BikeN'])
    aux['T2'] = funcs.secondsToTime(aux['T2N'])