Compare commits
4 Commits
d9ddd5b3ed
...
31563ed0da
| Author | SHA1 | Date | |
|---|---|---|---|
| 31563ed0da | |||
| 8fa3b1ec10 | |||
|
|
ef2cdfdc6f | ||
|
|
d83a953a12 |
@@ -104,7 +104,13 @@ def main():
|
|||||||
retInfo = "ID do event não encontrado!"
|
retInfo = "ID do event não encontrado!"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
db = crud.delete_event(db, eid_choice)
|
table = crud.get_table(db, eid_choice)
|
||||||
|
crud.show_table(table)
|
||||||
|
row_choice = _get_usr_input("Escolhe a linha a apagar:", int)
|
||||||
|
db = crud.delete_table_row(db, eid_choice, row_choice)
|
||||||
|
new_table = crud.get_table(db, eid_choice)
|
||||||
|
crud.show_table(new_table)
|
||||||
|
print(f"Linha {row_choice} apagada com sucesso!")
|
||||||
input()
|
input()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -146,7 +152,7 @@ def main():
|
|||||||
|
|
||||||
case "8":
|
case "8":
|
||||||
if db is not None:
|
if db is not None:
|
||||||
pass
|
stats.stat_menu(db)
|
||||||
else:
|
else:
|
||||||
retInfo = "Base de dados não encontrada!"
|
retInfo = "Base de dados não encontrada!"
|
||||||
|
|
||||||
@@ -180,6 +186,9 @@ def _get_usr_input(msg:str, asType=str):
|
|||||||
return None
|
return None
|
||||||
return asType(usrIn)
|
return asType(usrIn)
|
||||||
|
|
||||||
|
def _prettify_event(df):
|
||||||
|
preambleInfo = df.drop_duplicates(subset="ID", keep="first")
|
||||||
|
stations = df[["Estacao", "Componente", "Tipo Onda", "Amplitude"]]
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ pd.set_option('display.max_columns', 500)
|
|||||||
pd.set_option('display.width', 150)
|
pd.set_option('display.width', 150)
|
||||||
|
|
||||||
HEADER_COLS = ["Data", "Distancia", "Tipo Ev", "Lat", "Long", "Prof", "Magnitudes"]
|
HEADER_COLS = ["Data", "Distancia", "Tipo Ev", "Lat", "Long", "Prof", "Magnitudes"]
|
||||||
TABLE_READ_RET = ["Data", "Lat", "Long", "Distancia", "Tipo Ev"]
|
TABLE_READ_RET = ["Data", "Lat", "Long", "Distancia", "Tipo Ev", "Amplitude"]
|
||||||
|
|
||||||
def _get_uniques(df) -> pd.DataFrame:
|
def _get_uniques(df) -> pd.DataFrame:
|
||||||
return df.get(["ID", "Data", "Regiao"]).drop_duplicates(subset="ID", keep="first")
|
return df.get(["ID", "Data", "Regiao"]).drop_duplicates(subset="ID", keep="first")
|
||||||
@@ -40,7 +40,6 @@ def read_header(df, event_id):
|
|||||||
def show_table(df, retCols=TABLE_READ_RET):
|
def show_table(df, retCols=TABLE_READ_RET):
|
||||||
print(df.loc[:,retCols])
|
print(df.loc[:,retCols])
|
||||||
|
|
||||||
|
|
||||||
def get_table(df, event_id):
|
def get_table(df, event_id):
|
||||||
rows = df[df["ID"] == event_id]
|
rows = df[df["ID"] == event_id]
|
||||||
rows = rows.drop("ID", axis=1)
|
rows = rows.drop("ID", axis=1)
|
||||||
@@ -86,13 +85,9 @@ def delete_event(df, event_id):
|
|||||||
print(f"Evento {event_id} apagado!")
|
print(f"Evento {event_id} apagado!")
|
||||||
return new_df
|
return new_df
|
||||||
|
|
||||||
def delete_table_row(df, event_id, row_number_1):
|
def delete_table_row(df, event_id, row_number):
|
||||||
# Apaga uma linha específica da tabela do evento
|
# Apaga uma linha específica da tabela do evento
|
||||||
row_number_0 = row_number_1 - 1
|
new_df = df.drop([row_number]).reset_index(drop=True)
|
||||||
table = get_table(df, event_id)
|
|
||||||
if row_number_0 < 0 or row_number_0 >= len(table):
|
|
||||||
return f"Linha {row_number_1} não pertence ao evento {event_id}."
|
|
||||||
new_df = df.drop(table.index[row_number_0])
|
|
||||||
return new_df
|
return new_df
|
||||||
|
|
||||||
def create_blank_event(df, event_id):
|
def create_blank_event(df, event_id):
|
||||||
|
|||||||
@@ -191,4 +191,3 @@ def _parse_type_i(data: list[str]):
|
|||||||
|
|
||||||
FUNCS = {1: _parse_type_1, 3: _parse_type_3, 6: _parse_type_6, "E": _parse_type_e, "I": _parse_type_i}
|
FUNCS = {1: _parse_type_1, 3: _parse_type_3, 6: _parse_type_6, "E": _parse_type_e, "I": _parse_type_i}
|
||||||
|
|
||||||
parse("dados.txt")
|
|
||||||
|
|||||||
124
utils/stats.py
124
utils/stats.py
@@ -5,45 +5,119 @@ import os
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
STAT_MENU = """=== Earthquakes ===
|
STAT_HEADER ="""=== Earthquakes ===
|
||||||
== Estatísticas ==
|
== Estatísticas ==
|
||||||
[1] Média
|
"""
|
||||||
|
|
||||||
|
STAT_MENU = """[1] Média
|
||||||
[2] Variância
|
[2] Variância
|
||||||
[3] Desvio padrão
|
[3] Desvio padrão
|
||||||
[4] Máximo
|
[4] Máximo
|
||||||
[5] Mínimo
|
[5] Mínimo
|
||||||
|
[6] Moda
|
||||||
|
|
||||||
[Q] Voltar ao menu principal
|
[Q] Voltar ao menu principal
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
FILTER_CHOICES = """[1] Magnitudes
|
||||||
|
[2] Distância
|
||||||
|
[3] Profundidade
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
CHOICE = {"1": "Magnitudes", "2": "Distancia","3": "Prof"}
|
||||||
|
|
||||||
|
|
||||||
|
def filter_submenu(type: str):
|
||||||
|
os.system("cls")
|
||||||
|
print(f"{STAT_HEADER}\n = {type} = ")
|
||||||
|
print(FILTER_CHOICES)
|
||||||
|
|
||||||
|
choice = input("Qual dos valores: ")
|
||||||
|
|
||||||
|
try:
|
||||||
|
usrChoice = CHOICE[choice]
|
||||||
|
return usrChoice
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def stat_menu(df: pd.DataFrame):
|
def stat_menu(df: pd.DataFrame):
|
||||||
inStats = True
|
inStats = True
|
||||||
while inStats:
|
while inStats:
|
||||||
os.system("cls")
|
os.system("cls")
|
||||||
print(STAT_MENU)
|
print(STAT_HEADER + "\n" + STAT_MENU)
|
||||||
usrIn = input("Opção: ").lower()
|
usrIn = input("Opção: ").lower()
|
||||||
|
|
||||||
match usrIn:
|
match usrIn:
|
||||||
case "1":
|
case "1":
|
||||||
pass
|
# TODO: verificar se estamos a tratar de numeros ou strings
|
||||||
|
c = filter_submenu("Média")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = average(df, c)
|
||||||
|
print(f"A média de {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
case "2":
|
case "2":
|
||||||
pass
|
c = filter_submenu("Variância")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = variance(df, c)
|
||||||
|
print(f"A variância dos dados de {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
case "3":
|
case "3":
|
||||||
pass
|
# TODO: verificar se estamos a tratar de numeros ou strings
|
||||||
|
c = filter_submenu("Desvio Padrão")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = std_dev(df, c)
|
||||||
|
print(f"O desvio padrão de {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
case "4":
|
case "4":
|
||||||
pass
|
c = filter_submenu("Máximo")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = max_v(df, c)
|
||||||
|
print(f"O valor máximo em {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
case "5":
|
case "5":
|
||||||
pass
|
c = filter_submenu("Mínimo")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = min_v(df, c)
|
||||||
|
print(f"O valor mínimo em {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
case "6":
|
||||||
|
c = filter_submenu("Mínimo")
|
||||||
|
|
||||||
|
if c is not None:
|
||||||
|
retValue = moda(df, c)
|
||||||
|
print(f"O valor moda em {c} é {retValue}")
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
case "q":
|
case "q":
|
||||||
inStats = False
|
inStats = False
|
||||||
pass
|
continue
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
pass
|
pass
|
||||||
|
input("Clica Enter para continuar")
|
||||||
|
|
||||||
|
|
||||||
def average(df: pd.DataFrame, filter_by):
|
def average(df: pd.DataFrame, filter_by):
|
||||||
values = df[filter_by].to_numpy()
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
if filter_by == "Magnitudes":
|
if filter_by == "Magnitudes":
|
||||||
values = _unpack_mags(values)
|
values = _unpack_mags(values)
|
||||||
@@ -52,7 +126,8 @@ def average(df: pd.DataFrame, filter_by):
|
|||||||
|
|
||||||
|
|
||||||
def variance(df, filter_by):
|
def variance(df, filter_by):
|
||||||
values = df[filter_by].to_numpy()
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
if filter_by == "Magnitudes":
|
if filter_by == "Magnitudes":
|
||||||
values = _unpack_mags(values)
|
values = _unpack_mags(values)
|
||||||
@@ -61,7 +136,8 @@ def variance(df, filter_by):
|
|||||||
|
|
||||||
|
|
||||||
def std_dev(df, filter_by):
|
def std_dev(df, filter_by):
|
||||||
values = df[filter_by].to_numpy()
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
if filter_by == "Magnitudes":
|
if filter_by == "Magnitudes":
|
||||||
values = _unpack_mags(values)
|
values = _unpack_mags(values)
|
||||||
@@ -69,8 +145,9 @@ def std_dev(df, filter_by):
|
|||||||
return np.std(values)
|
return np.std(values)
|
||||||
|
|
||||||
|
|
||||||
def max(df, filter_by):
|
def max_v(df, filter_by):
|
||||||
values = df[filter_by].to_numpy()
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
if filter_by == "Magnitudes":
|
if filter_by == "Magnitudes":
|
||||||
values = _unpack_mags(values)
|
values = _unpack_mags(values)
|
||||||
@@ -78,19 +155,32 @@ def max(df, filter_by):
|
|||||||
return np.max(values)
|
return np.max(values)
|
||||||
|
|
||||||
|
|
||||||
def min(df, filter_by):
|
def min_v(df, filter_by):
|
||||||
values = df[filter_by].to_numpy()
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
if filter_by == "Magnitudes":
|
if filter_by == "Magnitudes":
|
||||||
values = _unpack_mags(values)
|
values = _unpack_mags(values)
|
||||||
|
|
||||||
return np.min(values)
|
return np.min(values)
|
||||||
|
|
||||||
|
def moda(df, filter_by):
|
||||||
|
events = df.drop_duplicates(subset="ID", keep='first')
|
||||||
|
values = events[filter_by].to_numpy()
|
||||||
|
|
||||||
|
if filter_by == "Magnitudes":
|
||||||
|
values = _unpack_mags(values)
|
||||||
|
|
||||||
|
uniques, count = np.unique(values, return_counts=True)
|
||||||
|
uniques_list = list(zip(uniques, count))
|
||||||
|
|
||||||
|
return sorted(uniques_list, reverse=True ,key=lambda x: x[1])[0][0]
|
||||||
|
|
||||||
|
|
||||||
def _unpack_mags(arr: np.ndarray):
|
def _unpack_mags(arr: np.ndarray):
|
||||||
newVals = np.empty(0)
|
newVals = np.empty(0)
|
||||||
for v in arr:
|
for v in arr:
|
||||||
for m in v:
|
for m in v:
|
||||||
newVals = np.append(newVals, np.float32(m["Magnitude"]))
|
newVals = np.append(newVals, float(m["Magnitude"]))
|
||||||
return newVals
|
return newVals
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user