Advertisement
Guest User

Untitled

a guest
Mar 20th, 2024
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.01 KB | None | 0 0
  1. import numpy as np
  2. import polars as pl
  3. import perfplot
  4.  
  5.  
  6. def map_elements(s):
  7.     return s.map_elements(lambda x: [y for y in x if y != 'remove']).list.join('_')
  8.  
  9. def list_eval(s):
  10.     return s.list.eval(pl.element().filter(pl.element() != 'remove'))
  11.  
  12. def list_set_difference(s):
  13.     return s.list.set_difference(['remove'])
  14.  
  15.  
  16. def filter(s):
  17.     return (pl.select(a=s)
  18.  .with_row_index('i')
  19.  .explode('a')
  20.  .filter(pl.col('a')!='remove')
  21.  .group_by('i')
  22.  .agg('a')
  23.  .select('a')
  24. )
  25.    
  26. def gather(s):
  27.     return (pl.select(a=s)
  28.  .with_row_index('i')
  29.  .group_by('i')
  30.  .agg(pl.col('a').list.gather(pl.arg_where(pl.col('a').explode()!="remove")).first())
  31.  .select('a')
  32. )
  33.  
  34. def setup(n):
  35.     return pl.Series([list(map(str, range(100)))+['remove'] for _ in range(n)])
  36.  
  37. b2 = perfplot.bench(
  38.     setup=setup,
  39.     kernels=[map_elements, list_eval, list_set_difference, filter, gather],
  40.     n_range=np.logspace(1, 5, num=10),
  41.     xlabel='len(df)',
  42.     equality_check=None,
  43.     max_time=10
  44. )
  45.  
  46. b2.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement