Skip to content

Commit c494c03

Browse files
committed
make running multiple values of ngroups easy
1 parent 3d5db57 commit c494c03

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

vb_suite/groupby.py

+19-16
Original file line numberDiff line numberDiff line change
@@ -486,19 +486,10 @@ def f(g):
486486
groupby_agg_builtins2 = Benchmark("df.groupby(['jim', 'joe']).agg([sum, min, max])", setup)
487487

488488
#----------------------------------------------------------------------
489-
# groupby with a large value for ngroups
489+
# groupby with a variable value for ngroups
490490

491-
setup = common_setup + """
492-
np.random.seed(1234)
493-
ngroups = 10000
494-
size = ngroups * 10
495-
rng = np.arange(ngroups)
496-
df = DataFrame(dict(
497-
timestamp=rng.take(np.random.randint(0, ngroups, size=size)),
498-
value=np.random.randint(0, size, size=size)
499-
))
500-
"""
501491

492+
ngroups_list = [100, 10000]
502493
no_arg_func_list = [
503494
'all',
504495
'any',
@@ -535,12 +526,23 @@ def f(g):
535526

536527

537528
_stmt_template = "df.groupby('value')['timestamp'].%s"
529+
_setup_template = common_setup + """
530+
np.random.seed(1234)
531+
ngroups = %s
532+
size = ngroups * 10
533+
rng = np.arange(ngroups)
534+
df = DataFrame(dict(
535+
timestamp=rng.take(np.random.randint(0, ngroups, size=size)),
536+
value=np.random.randint(0, size, size=size)
537+
))
538+
"""
538539
START_DATE = datetime(2011, 7, 1)
539540

540541

541-
def make_large_ngroups_bmark(func_name, func_args=''):
542-
bmark_name = 'groupby_large_ngroups_%s' % func_name
542+
def make_large_ngroups_bmark(ngroups, func_name, func_args=''):
543+
bmark_name = 'groupby_ngroups_%s_%s' % (ngroups, func_name)
543544
stmt = _stmt_template % ('%s(%s)' % (func_name, func_args))
545+
setup = _setup_template % ngroups
544546
bmark = Benchmark(stmt, setup, start_date=START_DATE)
545547
# MUST set name
546548
bmark.name = bmark_name
@@ -553,6 +555,7 @@ def inject_bmark_into_globals(bmark):
553555
globals()[bmark.name] = bmark
554556

555557

556-
for func_name in no_arg_func_list:
557-
bmark = make_large_ngroups_bmark(func_name)
558-
inject_bmark_into_globals(bmark)
558+
for ngroups in ngroups_list:
559+
for func_name in no_arg_func_list:
560+
bmark = make_large_ngroups_bmark(ngroups, func_name)
561+
inject_bmark_into_globals(bmark)

0 commit comments

Comments
 (0)