97 lines
1.9 KiB
Python
97 lines
1.9 KiB
Python
# pyright: basic
|
|
|
|
import os
|
|
|
|
import pandas as pd
|
|
import numpy as np
|
|
|
|
STAT_MENU = """=== Earthquakes ===
|
|
== Estatísticas ==
|
|
[1] Média
|
|
[2] Variância
|
|
[3] Desvio padrão
|
|
[4] Máximo
|
|
[5] Mínimo
|
|
|
|
[Q] Voltar ao menu principal
|
|
"""
|
|
|
|
|
|
def stat_menu(df: pd.DataFrame):
|
|
inStats = True
|
|
while inStats:
|
|
os.system("cls")
|
|
print(STAT_MENU)
|
|
usrIn = input("Opção: ").lower()
|
|
|
|
match usrIn:
|
|
case "1":
|
|
pass
|
|
case "2":
|
|
pass
|
|
case "3":
|
|
pass
|
|
case "4":
|
|
pass
|
|
case "5":
|
|
pass
|
|
case "q":
|
|
inStats = False
|
|
pass
|
|
case _:
|
|
pass
|
|
|
|
|
|
def average(df: pd.DataFrame, filter_by):
|
|
values = df[filter_by].to_numpy()
|
|
|
|
if filter_by == "Magnitudes":
|
|
values = _unpack_mags(values)
|
|
|
|
return np.average(values)
|
|
|
|
|
|
def variance(df, filter_by):
|
|
values = df[filter_by].to_numpy()
|
|
|
|
if filter_by == "Magnitudes":
|
|
values = _unpack_mags(values)
|
|
|
|
return np.var(values)
|
|
|
|
|
|
def std_dev(df, filter_by):
|
|
values = df[filter_by].to_numpy()
|
|
|
|
if filter_by == "Magnitudes":
|
|
values = _unpack_mags(values)
|
|
|
|
return np.std(values)
|
|
|
|
|
|
def max(df, filter_by):
|
|
values = df[filter_by].to_numpy()
|
|
|
|
if filter_by == "Magnitudes":
|
|
values = _unpack_mags(values)
|
|
|
|
return np.max(values)
|
|
|
|
|
|
def min(df, filter_by):
|
|
values = df[filter_by].to_numpy()
|
|
|
|
if filter_by == "Magnitudes":
|
|
values = _unpack_mags(values)
|
|
|
|
return np.min(values)
|
|
|
|
|
|
def _unpack_mags(arr: np.ndarray):
|
|
newVals = np.empty(0)
|
|
for v in arr:
|
|
for m in v:
|
|
newVals = np.append(newVals, np.float32(m["Magnitude"]))
|
|
return newVals
|
|
|