Py.Cafe

rikcav/

air-pollution-0

Mortes por Continente

DocsPricing
  • app.py
  • data.csv
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import streamlit as st
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go


df = pd.read_csv('data.csv')

df = df.drop(['ValueType', 'SpatialDimValueCode', 'FactValueUoM', 
              'FactValueNumericLowPrefix', 'FactValueNumericLow', 
              'FactValueNumericHighPrefix', 'FactValueNumericHigh',
              'Dim3ValueCode', 'DataSourceDimValueCode', 'DataSource',
              'FactValueNumericPrefix', 'FactValueTranslationID', 'FactComments',
              'Dim3 type', 'Dim3', 'IndicatorCode', 'Indicator',
              'Location type', 'Period type', 'Dim1 type', 'Dim2 type',
              'Language', 'DateModified', 'Value', 'IsLatestYear'], axis=1)
df = df.drop(df[df['Period'] < 2014].index)
df = df.drop(df[df['Dim1ValueCode'].isin(['SEX_MLE', 'SEX_FMLE'])].index)
df = df.drop(['Dim1', 'Dim1ValueCode'], axis=1)
df['FactValueNumeric'] = df['FactValueNumeric'].round().astype(int)

df.rename(columns={
    'ParentLocationCode': 'continente_code',
    'ParentLocation': 'continente',
    'Location': 'pais',
    'Period': 'ano',
    'Dim2': 'causa',
    'Dim2ValueCode': 'causa_code',
    'FactValueNumeric': 'mortes'
}, inplace=True)

renomear_continentes = {
    'Americas': 'Américas',
    'Africa': 'África',
    'Western Pacific': 'Pacífico Ocidental',
    'Europe': 'Europa',
    'South-East Asia': 'Sudeste Asiático',
    'Eastern Mediterranean': 'Mediterrâneo Oriental'
}

df['continente'] = df['continente'].replace(renomear_continentes)

st.title("Mortes por Continente")

option = st.selectbox("Selecione a Visualização", ["Total de Mortes por Continente", "Tendência de Mortes por Continente"])

if option == "Total de Mortes por Continente":
    st.header("Total de Mortes por Continente")

    continente_selecionado = st.selectbox("Selecione um Continente", options=df['continente'].unique())

    colors = ['#EAEBF8' if continent != continente_selecionado else '#6256F1' for continent in df['continente']]

    fig = go.Figure(data=[
        go.Bar(
            x=df['continente'],
            y=df['mortes'],
            marker_color=colors
        )
    ])

    fig.update_layout(
        title="Total de Mortes por Continente",
        xaxis_title="Continente",
        yaxis_title="Mortes"
    )

    st.plotly_chart(fig)
else:
    st.header("Tendência de Mortes por Continente")

    mortes_anuais_por_continente = df.groupby(['continente', 'ano'])['mortes'].sum().unstack().fillna(0).reset_index()

    mortes_anuais_por_continente = mortes_anuais_por_continente.melt(id_vars="continente", var_name="ano", value_name="mortes")

    mortes_anuais_por_continente['ano'] = mortes_anuais_por_continente['ano'].astype(int)

    mortes_anuais_por_continente['mortes'] = mortes_anuais_por_continente['mortes'].fillna(0)

    fig = px.line(mortes_anuais_por_continente, x="ano", y="mortes", color="continente", 
                title="Tendência de Mortes por Continente")
    st.plotly_chart(fig)