예제 #1
0
def api3():

    confirmed = data.getConfirmed()
    confirmed = pd.concat(
        [
            confirmed.iloc[:,1].rename('country'),
            confirmed.iloc[:,-1].rename('cases'),
        ],
        axis=1,
    )
    confirmed = confirmed.groupby('country').sum()


    recovered = data.getRecovered()
    recovered = pd.concat(
        [
            recovered.iloc[:,1].rename('country'),
            recovered.iloc[:,-1].rename('recovered'),
        ],
        axis=1,
    )
    recovered = recovered.groupby('country').sum()


    death = data.getDeath()
    death = pd.concat(
        [
            death.iloc[:,1].rename('country'),
            death.iloc[:,-1].rename('deaths'),
        ],
        axis=1,
    )
    death = death.groupby('country').sum()


    days = data.getConfirmed()
    days['days'] = (days.iloc[:,4:] != 0).astype('int').sum(axis=1)
    days = days.iloc[:,[1,-1]]
    days = days.rename(columns={'Country/Region': 'country'}).sort_values('days', ascending=False)
    days = days.drop_duplicates(subset ="country")
    days = days.set_index('country').sort_index()
    # print(days)

    result = pd.concat([confirmed, recovered, death, days], axis=1, sort=False)
    result = result.reset_index()
    result['flag'] = 'assets/flags/' + result['country'] + '.png'
    result['active'] = result['cases'] - result['deaths'] - result['recovered']
    result['death_rate'] = round(result['deaths'] / result['cases']*100, 2)
    result['recovered_rate'] = round(result['recovered'] / result['cases']*100, 2)
    result = result.sort_values('cases', axis=0, ascending=False)
    result = result.reset_index(drop=True)
    result.index = result.index.set_names(['rank'])
    result = result.reset_index()
    result = result.to_dict('record')

    return jsonify(result)
예제 #2
0
def api4_detail():

    country = request.args.get('country')

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]

    date = confirmed.columns
    confirmed = confirmed.sum(axis=0).values

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    recovered = recovered.iloc[:,4:]
    recovered = recovered.sum(axis=0).values

    death = data.getDeath()
    death = death[death['Country/Region'] == country]
    death = death.iloc[:,4:]
    death = death.sum(axis=0).values

    return {
        'date': np.nan_to_num(date).tolist(),
        'cases': np.nan_to_num(confirmed).tolist(),
        'deaths': np.nan_to_num(death).tolist(),
        'recovered': np.nan_to_num(recovered).tolist()
    }
예제 #3
0
def api10():

    confirmed = data.getConfirmed()
    confirmed = confirmed.iloc[:,4:]
    total_confirmed = confirmed.sum(axis=0)

    recovered = data.getRecovered()
    recovered = recovered.iloc[:,4:]
    total_recovered = recovered.sum(axis=0)

    death = data.getDeath()
    death = death.iloc[:,4:]
    total_death = death.sum(axis=0)
    

    date = total_confirmed.index.values.tolist()
    
    recovered_rate = np.nan_to_num(total_recovered.values / total_confirmed.values * 100).round(2)
    death_rate = np.nan_to_num(total_death.values / total_confirmed.values * 100).round(2)

    return {
        'date': date,
        'recovered_rate': recovered_rate.tolist(),
        'death_rate': death_rate.tolist(),
    }
예제 #4
0
def vn_linechart01():

    country = 'Vietnam'

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]

    date = confirmed.columns
    confirmed = confirmed.sum(axis=0).values

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    recovered = recovered.iloc[:,4:]
    recovered = recovered.sum(axis=0).values

    death = data.getDeath()
    death = death[death['Country/Region'] == country]
    death = death.iloc[:,4:]
    death = death.sum(axis=0).values

    active = confirmed - recovered - death

    return {
        'cases': np.nan_to_num(confirmed).tolist(),
        'active': np.nan_to_num(active).tolist()
    }
예제 #5
0
def vn_linechart03():

    country = 'Vietnam'

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]
    total_confirmed = confirmed.sum(axis=0)

    deaths = data.getDeath()
    deaths = deaths[deaths['Country/Region'] == country]
    deaths = deaths.iloc[:,4:]
    total_deaths = deaths.sum(axis=0)

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    recovered = recovered.iloc[:,4:]
    total_recovered = recovered.sum(axis=0)


    labels = total_confirmed.index[1:].values.tolist()
    new_cases = np.nan_to_num(total_confirmed.values[1:] - total_confirmed.values[:-1]).tolist()
    new_deaths = np.nan_to_num(total_deaths.values[1:] - total_deaths.values[:-1]).tolist()
    new_recovered = np.nan_to_num(total_recovered.values[1:] - total_recovered.values[:-1]).tolist()

    return {
        'Daily_case': new_cases,
        'Daily_death': new_deaths,
        'Daily_recovered': new_recovered,
    }
예제 #6
0
def vn_general_infomation():

    country = 'Vietnam'

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    latest_confirmed = confirmed.iloc[:,-1]
    total_confirmed = int(latest_confirmed.sum())

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    latest_recovered = recovered.iloc[:,-1]
    total_recovered = int(latest_recovered.sum())

    death = data.getDeath()
    death = death[death['Country/Region'] == country]
    latest_death = death.iloc[:,-1]
    total_death = int(latest_death.sum())

    death_rate = round(total_death / total_confirmed * 100, 2)
    recover_rate = round(total_recovered / total_confirmed * 100, 2)
    active = total_confirmed - total_recovered - total_death

    return {
        'case': total_confirmed,
        'active': active,
        'death': total_death,
        'recovered': total_recovered,
        'death_rate': death_rate,
        'recovered_rate': recover_rate
    }
예제 #7
0
def api1_detail():

    country = request.args.get('country')

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    latest_confirmed = confirmed.iloc[:,-1]
    total_confirmed = int(latest_confirmed.sum())

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    latest_recovered = recovered.iloc[:,-1]
    total_recovered = int(latest_recovered.sum())

    death = data.getDeath()
    death = death[death['Country/Region'] == country]
    latest_death = death.iloc[:,-1]
    total_death = int(latest_death.sum())

    death_rate = round(total_death / total_confirmed, 4)
    recover_rate = round(total_recovered / total_confirmed, 4)

    return {
        'cases': total_confirmed,
        'deaths': total_death,
        'recovered': total_recovered,
        'death_rate': death_rate,
        'recovered_rate': recover_rate
    }
예제 #8
0
def api11():
    confirmed = data.getConfirmed()
    confirmed = confirmed.iloc[:,4:]
    total_confirmed = confirmed.sum(axis=0)

    deaths = data.getDeath()
    deaths = deaths.iloc[:,4:]
    total_deaths = deaths.sum(axis=0)

    recovered = data.getRecovered()
    recovered = recovered.iloc[:,4:]
    total_recovered = recovered.sum(axis=0)


    labels = total_confirmed.index[1:].values.tolist()
    new_cases = np.nan_to_num(total_confirmed.values[1:] - total_confirmed.values[:-1]).tolist()
    new_deaths = np.nan_to_num(total_deaths.values[1:] - total_deaths.values[:-1]).tolist()
    new_recovered = np.nan_to_num(total_recovered.values[1:] - total_recovered.values[:-1]).tolist()

    return {
        'labels': labels,
        'new_cases': new_cases,
        'new_deaths': new_deaths,
        'new_recovered': new_recovered,
    }
예제 #9
0
def api11_detail():

    country = request.args.get('country')

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]
    total_confirmed = confirmed.sum(axis=0)

    deaths = data.getDeath()
    deaths = deaths[deaths['Country/Region'] == country]
    deaths = deaths.iloc[:,4:]
    total_deaths = deaths.sum(axis=0)

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    recovered = recovered.iloc[:,4:]
    total_recovered = recovered.sum(axis=0)


    labels = total_confirmed.index[1:].values.tolist()
    new_cases = np.nan_to_num(total_confirmed.values[1:] - total_confirmed.values[:-1]).tolist()
    new_deaths = np.nan_to_num(total_deaths.values[1:] - total_deaths.values[:-1]).tolist()
    new_recovered = np.nan_to_num(total_recovered.values[1:] - total_recovered.values[:-1]).tolist()

    return {
        'labels': labels,
        'new_cases': new_cases,
        'new_deaths': new_deaths,
        'new_recovered': new_recovered,
    }
예제 #10
0
def api10_detail():

    country = request.args.get('country')

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]
    total_confirmed = confirmed.sum(axis=0)

    recovered = data.getRecovered()
    recovered = recovered[recovered['Country/Region'] == country]
    recovered = recovered.iloc[:,4:]
    total_recovered = recovered.sum(axis=0)

    death = data.getDeath()
    death = death[death['Country/Region'] == country]
    death = death.iloc[:,4:]
    total_death = death.sum(axis=0)

    date = total_confirmed.index[1:].values.tolist()
    
    recovered_rate = np.nan_to_num(total_recovered.values / total_confirmed.values * 100).round(2)
    death_rate = np.nan_to_num(total_death.values / total_confirmed.values * 100).round(2)

    return {
        'date': date,
        'recovered_rate': recovered_rate.tolist(),
        'death_rate': death_rate.tolist(),
    }
예제 #11
0
def api7():
    confirmed = data.getConfirmed()
    confirmed = confirmed.iloc[:,4:]
    total = confirmed.sum(axis=0)
    labels = total.index[1:].values.tolist()
    new_cases = np.nan_to_num(total.values[1:] - total.values[:-1]).tolist()

    return {
        'labels': labels,
        'new_cases': new_cases,
    }
예제 #12
0
def api7_detail():

    country = request.args.get('country')

    confirmed = data.getConfirmed()
    confirmed = confirmed[confirmed['Country/Region'] == country]
    if len(confirmed.index) == 0:
        abort(404)
    confirmed = confirmed.iloc[:,4:]
    total = confirmed.sum(axis=0)
    labels = total.index[1:].values.tolist()
    new_cases = np.nan_to_num(total.values[1:] - total.values[:-1]).tolist()

    return {
        'labels': labels,
        'new_cases': new_cases,
    }
예제 #13
0
def api6():

    confirmed = data.getConfirmed()
    confirmed = pd.concat(
            [
                confirmed.iloc[:,1].rename('country'),
                confirmed.iloc[:,-1].rename('cases'),
            ],
            axis=1,
        )
    confirmed = confirmed.groupby('country').sum().sort_values('cases', ascending=False).reset_index()
    x = confirmed.head(30)
    label = x['country'].tolist()
    cases = np.nan_to_num(x['cases']).tolist()

    return {
        'label': label,
        'cases': cases,
    }
예제 #14
0
def api2():
    confirmed = data.getConfirmed()
    confirmed = pd.concat([confirmed.iloc[:,:4], confirmed.iloc[:,-1].rename('cases')], axis=1)
    confirmed['country'] = confirmed.apply(lambda a: a['Country/Region'] if isinstance(a['Province/State'], float)
            else a['Province/State'] +', ' + a['Country/Region'], axis=1)
    
    recovered = data.getRecovered().iloc[:,-1].rename('recovered')
    
    death = data.getDeath().iloc[:,-1].rename('deaths')
    
    result = pd.concat([confirmed, recovered, death], axis=1)
    result[['recovered', 'deaths']] = result[['recovered', 'deaths']].fillna(0)

    result = result.rename(columns={"Lat": "lat", "Long": "lon"})
    
    result = result.drop(['Province/State', 'Country/Region'], axis=1)

    result = result.to_dict('record')

    return jsonify(result)
예제 #15
0
def api4():

    confirmed = data.getConfirmed()
    confirmed = confirmed.iloc[:,4:]

    date = confirmed.columns
    confirmed = confirmed.sum(axis=0).values

    recovered = data.getRecovered()
    recovered = recovered.iloc[:,4:]
    recovered = recovered.sum(axis=0).values

    death = data.getDeath()
    death = death.iloc[:,4:]
    death = death.sum(axis=0).values

    return {
        'date': np.nan_to_num(date).tolist(),
        'cases': np.nan_to_num(confirmed).tolist(),
        'deaths': np.nan_to_num(death).tolist(),
        'recovered': np.nan_to_num(recovered).tolist()
    }
예제 #16
0
def api1():
    confirmed = data.getConfirmed()
    latest_confirmed = confirmed.iloc[:,-1]
    total_confirmed = int(latest_confirmed.sum())

    recovered = data.getRecovered()
    latest_recovered = recovered.iloc[:,-1]
    total_recovered = int(latest_recovered.sum())

    death = data.getDeath()
    latest_death = death.iloc[:,-1]
    total_death = int(latest_death.sum())

    death_rate = round(total_death / total_confirmed, 4)
    recover_rate = round(total_recovered / total_confirmed, 4)

    return {
        'cases': total_confirmed,
        'deaths': total_death,
        'recovered': total_recovered,
        'death_rate': death_rate,
        'recovered_rate': recover_rate
    }
예제 #17
0
def api5():

    confirmed = data.getConfirmed()
    confirmed = pd.concat(
            [
                confirmed.iloc[:,1].rename('country'),
                confirmed.iloc[:,-1].rename('cases'),
            ],
            axis=1,
        )
    confirmed = confirmed.groupby('country').sum().sort_values('cases', ascending=False).reset_index()
    x = confirmed.head(30)
    q = confirmed.iloc[30:]
    x = x.append(pd.DataFrame({'cases': q[['cases']].sum(), 'country': 'Others'})).reset_index(drop=True)
    label = x['country'].tolist()
    cases = x['cases']
    cases = round(cases / cases.sum() * 100, 2)
    cases = np.nan_to_num(cases).tolist()

    return {
        'label': label,
        'cases': cases,
    }