Skip to content

Commit 3ee7b5a

Browse files
authoredJan 24, 2023
Add benchmarks for to_dataframe and to_dask_dataframe (#7474)
1 parent 9b30146 commit 3ee7b5a

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed
 

‎asv_bench/benchmarks/pandas.py

+36-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import xarray as xr
55

6-
from . import parameterized
6+
from . import parameterized, requires_dask
77

88

99
class MultiIndexSeries:
@@ -24,3 +24,38 @@ def setup(self, dtype, subset):
2424
@parameterized(["dtype", "subset"], ([int, float], [True, False]))
2525
def time_from_series(self, dtype, subset):
2626
xr.DataArray.from_series(self.series)
27+
28+
29+
class ToDataFrame:
30+
def setup(self, *args, **kwargs):
31+
xp = kwargs.get("xp", np)
32+
random_kws = kwargs.get("random_kws", {})
33+
method = kwargs.get("method", "to_dataframe")
34+
35+
dim1 = 10_000
36+
dim2 = 10_000
37+
ds = xr.Dataset(
38+
{
39+
"x": xr.DataArray(
40+
data=xp.random.random((dim1, dim2), **random_kws),
41+
dims=["dim1", "dim2"],
42+
coords={"dim1": np.arange(0, dim1), "dim2": np.arange(0, dim2)},
43+
)
44+
}
45+
)
46+
self.to_frame = getattr(ds, method)
47+
48+
def time_to_dataframe(self):
49+
self.to_frame()
50+
51+
def peakmem_to_dataframe(self):
52+
self.to_frame()
53+
54+
55+
class ToDataFrameDask(ToDataFrame):
56+
def setup(self, *args, **kwargs):
57+
requires_dask()
58+
59+
import dask.array as da
60+
61+
super().setup(xp=da, random_kws=dict(chunks=5000), method="to_dask_dataframe")

0 commit comments

Comments
 (0)
Please sign in to comment.