NVIDIA / NVIDIA/cudf

[FEA] Series and DataFrame mean absolute deviation

Open
#3,676 1 comment 0 reactions 0 assignees View on GitHub
feature request good first issue Python
Dominant language
C++
Stars
9.8k
Forks
1.1k
Avg merge
3d 6m
Merged PRs (30d)
278

Description

For API compatibility and supporting exploratory analysis, we should support Series and DataFrame mean absolute deviation. See the pandas [mean absolute deviation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.mad.html) for more information.

This can be implemented for Python Series and DataFrame as a stopgap as `Series.mad` and then leverage `_apply_support_method` for `DataFrame.mad`. It's not 10x faster, but it gets the job done well.

```python
import cudf
import numpy as np

def mad(self):
# mad formula
n = len(self)
m = self.mean()
mad = ((self - m).abs() / n).sum()
return mad

​# 1 million rows
s = cudf.Series(np.random.normal(10,5,1_000_000))
ps = s.to_pandas()

%time mp = ps.mad()
%time mg = mad(s)
print(mp)
print(mg)
CPU times: user 31.9 ms, sys: 0 ns, total: 31.9 ms
Wall time: 32 ms
CPU times: user 0 ns, sys: 7.24 ms, total: 7.24 ms
Wall time: 23.2 ms
3.990811998439671
3.990811998439673
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.