DHEIVER commited on
Commit
9b8cb2e
1 Parent(s): 9ec9b47

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -18
app.py CHANGED
@@ -1,29 +1,65 @@
1
- import gradio as gr
2
  import pandas as pd
 
 
 
 
 
 
 
3
 
4
- # Função para detectar anomalias
5
- def detect_anomalies(file_path):
6
- # Carregue o arquivo txt para um DataFrame
7
- df = pd.read_csv(file_path, sep=",")
8
 
9
- # Calcule a diferença absoluta entre cada valor e o valor médio
10
- df["delta"] = abs(df["value"] - df["value"].mean())
11
 
12
- # Encontre os valores com a maior diferença absoluta
13
- anomalies = df.loc[df["delta"] > df["delta"].quantile(0.95)]
 
 
 
 
 
 
 
 
 
14
 
15
- # Retorne os valores anômalos como um dataframe
16
  return anomalies
17
 
18
- # Interface do Gradio
19
  iface = gr.Interface(
20
  fn=detect_anomalies,
21
- inputs=gr.inputs.File(label="Carregar série temporal (TXT)"),
22
- outputs=gr.outputs.Dataframe(type="pandas", label="Pontos de Anomalia"),
23
- title="Análise de Anomalias em Séries Temporais",
24
- description="Este aplicativo detecta anomalias em uma série temporal carregada através de um arquivo de texto (TXT).",
25
- live=True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  )
27
 
28
- if __name__ == "__main__":
29
- iface.launch()
 
 
1
  import pandas as pd
2
+ import matplotlib.pyplot as plt
3
+ import gradio as gr
4
+
5
+ def detect_anomalies(data):
6
+ # Carregar os dados para um DataFrame pandas
7
+ df = pd.DataFrame(data, columns=["date", "value"])
8
+ df["date"] = pd.to_datetime(df["date"])
9
 
10
+ # Calcular a média e o desvio padrão dos valores
11
+ mean = df["value"].mean()
12
+ std = df["value"].std()
 
13
 
14
+ # Detectar anomalias (valores que estão além de 2 desvios padrão da média)
15
+ anomalies = df[df["value"] > (mean + 2 * std) | df["value"] < (mean - 2 * std)]
16
 
17
+ # Visualizar o gráfico de linhas com os dados e as anomalias destacadas
18
+ plt.figure(figsize=(10, 6))
19
+ plt.plot(df["date"], df["value"], label="Dados")
20
+ plt.scatter(anomalies["date"], anomalies["value"], color="red", label="Anomalias")
21
+ plt.xlabel("Data")
22
+ plt.ylabel("Valor")
23
+ plt.title("Análise de Anomalias nos Dados")
24
+ plt.legend()
25
+ plt.xticks(rotation=45)
26
+ plt.tight_layout()
27
+ plt.show()
28
 
 
29
  return anomalies
30
 
31
+ # Criar a interface Gradio
32
  iface = gr.Interface(
33
  fn=detect_anomalies,
34
+ inputs=gr.inputs.Dataframe(headers=["date", "value"]),
35
+ outputs="dataframe",
36
+ live=True,
37
+ capture_session=True,
38
+ examples=[
39
+ [["2023-01-01", 100],
40
+ ["2023-01-02", 105],
41
+ ["2023-01-03", 110],
42
+ ["2023-01-04", 95],
43
+ ["2023-01-05", 120],
44
+ ["2023-01-06", 125],
45
+ ["2023-01-07", 80],
46
+ ["2023-01-08", 130],
47
+ ["2023-01-09", 135],
48
+ ["2023-01-10", 140],
49
+ ["2023-01-11", 75],
50
+ ["2023-01-12", 145],
51
+ ["2023-01-13", 150],
52
+ ["2023-01-14", 155],
53
+ ["2023-01-15", 60],
54
+ ["2023-01-16", 160],
55
+ ["2023-01-17", 165],
56
+ ["2023-01-18", 170],
57
+ ["2023-01-19", 55],
58
+ ["2023-01-20", 175]]
59
+ ],
60
+ title="Detecção de Anomalias em Dados",
61
+ description="Insira os dados em formato de tabela com duas colunas: 'date' e 'value'. O aplicativo detectará e destacará anomalias nos valores."
62
  )
63
 
64
+ # Executar o aplicativo
65
+ iface.launch()