## NostalgiaIndex


Compute and hold the nostalgia index for one or more topics.


Usage


``` python
NostalgiaIndex(
    window=28,
    baseline_months=12,
    spike_factor=3.0,
)
```


## Parameters


`window: int = ``28`  
Rolling-median window in days (default 28).

`baseline_months: int = ``12`  
Number of months at the start of the series used to define 100.

`spike_factor: float = ``3.0`  
Multiple of the trailing 90-day median that counts as a "revival event".


## Examples

``` python
>>> import pandas as pd
>>> d = pd.date_range("2016-01-01", periods=730)
>>> v = pd.DataFrame({"date": d, "article": "A", "views": 100})
>>> t = pd.DataFrame({"date": d, "views": 1_000_000})
>>> NostalgiaIndex().compute(v, t).nostalgia_index.iloc[-1]
np.float64(100.0)
```


## Methods

| Name | Description |
|----|----|
| [compute()](#compute) | Normalize views by project traffic, smooth, and scale to the baseline. |
| [revivals()](#revivals) | Days where the raw index exceeds `spike_factor` x the trailing 90-day median. |
| [summary()](#summary) | Per-topic: current index, all-time peak date, % change vs baseline, revival count. |

------------------------------------------------------------------------


#### compute()


Normalize views by project traffic, smooth, and scale to the baseline.


Usage


``` python
compute(views, totals)
```


##### Parameters


`views: pd.DataFrame`  
Columns `date`, `article`, `views`.

`totals: pd.DataFrame`  
Columns `date`, `views` (project-wide totals).


##### Returns


`pd.DataFrame`  
Columns `date`, `article`, `views`, `total_views`, `views_per_million`, `smoothed`, `nostalgia_index` and `raw_index` (unsmoothed, used for revival detection).


------------------------------------------------------------------------


#### revivals()


Days where the raw index exceeds `spike_factor` x the trailing 90-day median.


Usage


``` python
revivals(index_df)
```


##### Parameters


`index_df: pd.DataFrame`  
Output of [compute()](NostalgiaIndex.md#nostalgia_index.NostalgiaIndex.compute).


##### Returns


`pd.DataFrame`  
Columns `date`, `article`, `raw_index`, `trailing_median`, `multiple`.


------------------------------------------------------------------------


#### summary()


Per-topic: current index, all-time peak date, % change vs baseline, revival count.


Usage


``` python
summary(index_df)
```


##### Parameters


`index_df: pd.DataFrame`  
Output of [compute()](NostalgiaIndex.md#nostalgia_index.NostalgiaIndex.compute).


##### Returns


`pd.DataFrame`  
Columns `article`, `current`, `peak`, `peak_date`, `pct_vs_baseline`, [revivals](NostalgiaIndex.md#nostalgia_index.NostalgiaIndex.revivals).
