-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataframeFilter.py
79 lines (63 loc) · 2.71 KB
/
DataframeFilter.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
import streamlit as st
import SessionState
import pandas as pd
# Dicionário
pesso = {
'Nome': ['Guilherme', 'Fulana', 'Ciclano', 'Deltrana'],
'Idade': [22, 14, 50, 30],
'Sexo': ['M', 'F', 'M', 'F'],
'Salario': [2000, 5000, 10000, 7300]
}
# Conversão para Dataframe
df = pd.DataFrame(data=pesso)
# Armazenagem por sessão
session_state = SessionState.get(pessoas=df)
# Função main
def main():
st.title('Dataframe Filter')
st.header('Programa que filtra valores de um Dataframe Pandas')
# Parametros para restrição
parametros = st.selectbox(
"Restringir: ",
('Nenhum', 'Idade', 'Sexo', 'Salario'))
# conversão definitiva para Dataframe Pandas
pessoas = pd.DataFrame(session_state.pessoas)
# Restrição para parâmetros
if parametros == 'Idade':
radio_idade = st.radio('Escolha o intervalo', ['Maior que', 'Menor que', 'Intervalo'])
if radio_idade == 'Maior que':
input_idade = st.number_input('Digite o intervalo entre a idade', step=1)
pessoas = pessoas[pessoas["Idade"] > input_idade]
elif radio_idade == 'Menor que':
input_idade = st.number_input('Digite o intervalo entre a idade', step=1, value=100)
pessoas = pessoas[pessoas["Idade"] < input_idade]
else:
col1, col2 = st.beta_columns(2)
menor = col1.number_input('Menor que', step=1)
maior = col2.number_input('Maior que', step=1, value=100)
pessoas = pessoas[(pessoas['Idade'] < maior) & (pessoas['Idade'] > menor)]
elif parametros == 'Sexo':
sexo_select = st.selectbox(
"Escolha o sexo desejado: ",
('M', 'F'))
if sexo_select == 'M':
pessoas = pessoas[pessoas["Sexo"] == 'M']
else:
pessoas = pessoas[pessoas["Sexo"] == 'F']
elif parametros == 'Salario':
radio_salario = st.radio('Escolha o intervalo', ['Maior que', 'Menor que', 'Intervalo'])
if radio_salario == 'Maior que':
input_salario = st.number_input('Digite o intervalo entre o salário', step=1)
pessoas = pessoas[pessoas["Salario"] > input_salario]
elif radio_salario == 'Menor que':
input_salario = st.number_input('Digite o intervalo entre o salário', step=1, value=100)
pessoas = pessoas[pessoas["Salario"] < input_salario]
else:
col1, col2 = st.beta_columns(2)
menor = col1.number_input('Menor que', step=1)
maior = col2.number_input('Maior que', step=1, value=12000)
pessoas = pessoas[(pessoas['Salario'] < maior) & (pessoas['Salario'] > menor)]
# Mostrando a tabela
st.table(pessoas)
if __name__ == '__main__':
main()