Metadata-Version: 2.1
Name: pyanomaly
Version: 0.0.2.2
Summary: Time series anomaly detection in Python
Home-page: https://github.com/fillipedem/pyanomaly
Author: Fillipe
Author-email: fillipedem@gmail.com
License: Apache Software License 2.0
Keywords: python anomaly detection time series
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: seaborn
Requires-Dist: matplotlib
Requires-Dist: statsmodels
Requires-Dist: pmdarima
Requires-Dist: fbprophet

# pyanomaly
> Conjunto de algoritmos para detectar anomalias em Series Temporais.


## Instalação

pip install pyanomaly

## Como usar

Iremos realizar os testes no dataset contendo temperaturas diarias da cidade de Melbourne.

dataset: https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv

```
# data
import numpy as np
import pandas as pd
# plot
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

df = pd.read_csv('./dados/daily-min-temperatures.csv', parse_dates=['Date'])
df.set_index('Date', inplace=True)
```

```
print(df.head(5).T)
```

    Date  1981-01-01  1981-01-02  1981-01-03  1981-01-04  1981-01-05
    Temp        20.7        17.9        18.8        14.6        15.8


```
df.plot(figsize=(8, 4));
```


![png](docs/images/output_6_0.png)


## Mad

```
mad = MAD()
mad.fit(df['Temp'])
outliers = mad.fit_predict(df['Temp'])

outliers.head()
```




    Date
    1981-01-15    25.0
    1981-01-18    24.8
    1981-02-09    25.0
    1982-01-17    24.0
    1982-01-20    25.2
    Name: Temp, dtype: float64



```
fig, ax = plt.subplots(1, 1, figsize=(12, 6))

sns.lineplot(x=df.index, y=df['Temp'], ax=ax)
sns.scatterplot(x=outliers.index, y=outliers, 
                color='r', ax=ax)

plt.title('Zscore Robusto', fontsize='large');
```


![png](docs/images/output_9_0.png)


## Tukey

```
tu = Tukey()

tu.fit(df['Temp'])
outliers = tu.predict(df['Temp'])

outliers.head()
```




    Date
    1981-01-15    25.0
    1981-01-18    24.8
    1981-02-09    25.0
    1982-01-17    24.0
    1982-01-20    25.2
    Name: Temp, dtype: float64



```
fig, ax = plt.subplots(1, 1, figsize=(12, 6))

sns.lineplot(x=df.index, y=df['Temp'], ax=ax)
sns.scatterplot(x=outliers.index, y=outliers, 
                color='r', ax=ax)

plt.title('Tukey Method', fontsize='large');
```


![png](docs/images/output_12_0.png)


## Twitter - S-MAD

```
outliers = twitter(df['Temp'], period=12)
outliers.head()
```




    Date
    1981-01-15    25.0
    1981-01-18    24.8
    1981-02-09    25.0
    1982-01-20    25.2
    1982-02-15    26.3
    Name: Temp, dtype: float64



```
fig, ax = plt.subplots(1, 1, figsize=(12, 6))

sns.lineplot(x=df.index, y=df['Temp'], ax=ax)
sns.scatterplot(x=outliers.index, y=outliers, 
                color='r', ax=ax)

plt.title('Tukey Method', fontsize='large');
```


![png](docs/images/output_15_0.png)



