Dask „var“ und „std“ mit ddof im Groupby-Kontext und anderen AggregationenPython

Python-Programme
Anonymous
 Dask „var“ und „std“ mit ddof im Groupby-Kontext und anderen Aggregationen

Post by Anonymous »

Angenommen, ich möchte Varianz und/oder Standardabweichung mit nicht standardmäßigem ddof in einem Groupby-Kontext berechnen, kann ich Folgendes tun:

Code: Select all

df.groupby("a")["b"].var(ddof=2)
Wenn ich möchte, dass dies zusammen mit anderen Aggregationen geschieht, kann ich Folgendes verwenden:

Code: Select all

df.groupby("a").agg(b_var = ("b", "var"), c_sum = ("c", "sum"))
Mein Verständnis ist, dass ich eine benutzerdefinierte Aggregation erstellen sollte, um ein nicht standardmäßiges ddof haben zu können.
Hier habe ich es bekommen weit:

Code: Select all

def var(ddof: int = 1) -> dd.Aggregation:
import dask.dataframe as dd

return dd.Aggregation(
name="var",
chunk=lambda s: (s.count(), s.sum(), (s.pow(2)).sum()),
agg=lambda count, sum_, sum_sq: (count.sum(), sum_.sum(), sum_sq.sum()),
finalize=lambda count, sum_, sum_sq: (sum_sq - (sum_ ** 2 / count)) / (count - ddof),
)
Dennoch stoße ich auf einen RuntimeError:

Code: Select all

df.groupby("a").agg({"b": var(2)})
RuntimeError('Fehler beim Generieren von Metadaten für DecomposableGroupbyAggregation(frame=df, arg={'b':
Was fehlt mir? Gibt es einen besseren Weg, dies zu erreichen?
Ersetzen s.pow(2) mit s**2 führt ebenfalls zu einem Fehler.
Vollständiges Skript:

Code: Select all

import dask.dataframe as dd

data = {
"a": [1, 1, 1, 1, 2, 2, 2],
"b": range(7),
"c": range(10, 3, -1),
}

df = dd.from_dict(data, 2)

def var(ddof: int = 1) -> dd.Aggregation:
import dask.dataframe as dd

return dd.Aggregation(
name="var",
chunk=lambda s: (s.count(), s.sum(), (s.pow(2)).sum()),
agg=lambda count, sum_, sum_sq: (count.sum(), sum_.sum(), sum_sq.sum()),
finalize=lambda count, sum_, sum_sq: (sum_sq - (sum_ ** 2 / count)) / (count - ddof),
)

df.groupby("a").agg(b_var = ("b", "var"), c_sum = ("c", "sum"))  #

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post