polars-df 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,6 +8,51 @@ module Polars
8
8
  ldf
9
9
  end
10
10
 
11
+ # def columns
12
+ # end
13
+
14
+ # def dtypes
15
+ # end
16
+
17
+ # def schema
18
+ # end
19
+
20
+ # def width
21
+ # end
22
+
23
+ # def include?(key)
24
+ # end
25
+
26
+ # clone handled by initialize_copy
27
+
28
+ # def [](item)
29
+ # end
30
+
31
+ # def to_s
32
+ # end
33
+ # alias_method :inspect, :to_s
34
+
35
+ # def write_json
36
+ # end
37
+
38
+ # def pipe
39
+ # end
40
+
41
+ # def describe_plan
42
+ # end
43
+
44
+ # def describe_optimized_plan
45
+ # end
46
+
47
+ # def show_graph
48
+ # end
49
+
50
+ # def sort
51
+ # end
52
+
53
+ # def profile
54
+ # end
55
+
11
56
  def collect(
12
57
  type_coercion: true,
13
58
  predicate_pushdown: true,
@@ -42,8 +87,21 @@ module Polars
42
87
  Utils.wrap_df(ldf.collect)
43
88
  end
44
89
 
90
+ # def fetch
91
+ # end
92
+
93
+ def lazy
94
+ self
95
+ end
96
+
97
+ # def cache
98
+ # end
99
+
100
+ # def cleared
101
+ # end
102
+
45
103
  def filter(predicate)
46
- self.class._from_rbldf(
104
+ _from_rbldf(
47
105
  _ldf.filter(
48
106
  Utils.expr_to_lit_or_expr(predicate, str_to_lit: false)._rbexpr
49
107
  )
@@ -52,7 +110,7 @@ module Polars
52
110
 
53
111
  def select(exprs)
54
112
  exprs = Utils.selection_to_rbexpr_list(exprs)
55
- self.class._from_rbldf(_ldf.select(exprs))
113
+ _from_rbldf(_ldf.select(exprs))
56
114
  end
57
115
 
58
116
  def groupby(by, maintain_order: false)
@@ -61,6 +119,15 @@ module Polars
61
119
  LazyGroupBy.new(lgb, self.class)
62
120
  end
63
121
 
122
+ # def groupby_rolling
123
+ # end
124
+
125
+ # def groupby_dynamic
126
+ # end
127
+
128
+ # def join_asof
129
+ # end
130
+
64
131
  def join(
65
132
  other,
66
133
  left_on: nil,
@@ -76,7 +143,7 @@ module Polars
76
143
  end
77
144
 
78
145
  if how == "cross"
79
- return self.class._from_rbldf(
146
+ return _from_rbldf(
80
147
  _ldf.join(
81
148
  other._ldf, [], [], allow_parallel, force_parallel, how, suffix
82
149
  )
@@ -94,7 +161,7 @@ module Polars
94
161
  raise ArgumentError, "must specify `on` OR `left_on` and `right_on`"
95
162
  end
96
163
 
97
- self.class._from_rbldf(
164
+ _from_rbldf(
98
165
  self._ldf.join(
99
166
  other._ldf,
100
167
  rbexprs_left,
@@ -123,17 +190,128 @@ module Polars
123
190
  when Expr
124
191
  rbexprs << e._rbexpr
125
192
  when Series
126
- rbexprs = Internal.lit(e)._rbexpr
193
+ rbexprs = Utils.lit(e)._rbexpr
127
194
  else
128
195
  raise ArgumentError, "Expected an expression, got #{e}"
129
196
  end
130
197
  end
131
198
 
132
- self.class._from_rbldf(_ldf.with_columns(rbexprs))
199
+ _from_rbldf(_ldf.with_columns(rbexprs))
133
200
  end
134
201
 
202
+ # def with_context
203
+ # end
204
+
135
205
  def with_column(column)
136
206
  with_columns([column])
137
207
  end
208
+
209
+ # def drop
210
+ # end
211
+
212
+ def rename(mapping)
213
+ existing = mapping.keys
214
+ _new = mapping.values
215
+ _from_rbldf(_ldf.rename(existing, _new))
216
+ end
217
+
218
+ # def reverse
219
+ # end
220
+
221
+ # def shift
222
+ # end
223
+
224
+ # def shift_and_fill
225
+ # end
226
+
227
+ # def slice
228
+ # end
229
+
230
+ # def limit
231
+ # end
232
+
233
+ # def head
234
+ # end
235
+
236
+ # def tail
237
+ # end
238
+
239
+ # def last
240
+ # end
241
+
242
+ # def first
243
+ # end
244
+
245
+ # def with_row_count
246
+ # end
247
+
248
+ # def take_every
249
+ # end
250
+
251
+ # def fill_null
252
+ # end
253
+
254
+ def fill_nan(fill_value)
255
+ if !fill_value.is_a?(Expr)
256
+ fill_value = Utils.lit(fill_value)
257
+ end
258
+ _from_rbldf(_ldf.fill_nan(fill_value._rbexpr))
259
+ end
260
+
261
+ # def std
262
+ # end
263
+
264
+ # def var
265
+ # end
266
+
267
+ # def max
268
+ # end
269
+
270
+ # def min
271
+ # end
272
+
273
+ # def sum
274
+ # end
275
+
276
+ # def mean
277
+ # end
278
+
279
+ # def median
280
+ # end
281
+
282
+ # def quantile
283
+ # end
284
+
285
+ # def explode
286
+ # end
287
+
288
+ # def unique
289
+ # end
290
+
291
+ # def drop_nulls
292
+ # end
293
+
294
+ # def melt
295
+ # end
296
+
297
+ # def map
298
+ # end
299
+
300
+ # def interpolate
301
+ # end
302
+
303
+ # def unnest
304
+ # end
305
+
306
+ private
307
+
308
+ def initialize_copy(other)
309
+ super
310
+ self._ldf = _ldf._clone
311
+ end
312
+
313
+ def _from_rbldf(rb_ldf)
314
+ self.class._from_rbldf(rb_ldf)
315
+ end
138
316
  end
139
317
  end
@@ -5,6 +5,10 @@ module Polars
5
5
  Utils.wrap_expr(RbExpr.col(name))
6
6
  end
7
7
 
8
+ def element
9
+ col("")
10
+ end
11
+
8
12
  def std(column, ddof: 1)
9
13
  if column.is_a?(Series)
10
14
  column.std(ddof: ddof)
@@ -0,0 +1,108 @@
1
+ module Polars
2
+ class ListExpr
3
+ attr_accessor :_rbexpr
4
+
5
+ def initialize(expr)
6
+ self._rbexpr = expr._rbexpr
7
+ end
8
+
9
+ def lengths
10
+ Utils.wrap_expr(_rbexpr.arr_lengths)
11
+ end
12
+
13
+ def sum
14
+ Utils.wrap_expr(_rbexpr.lst_sum)
15
+ end
16
+
17
+ def max
18
+ Utils.wrap_expr(_rbexpr.lst_max)
19
+ end
20
+
21
+ def min
22
+ Utils.wrap_expr(_rbexpr.lst_min)
23
+ end
24
+
25
+ def mean
26
+ Utils.wrap_expr(_rbexpr.lst_mean)
27
+ end
28
+
29
+ def sort(reverse: false)
30
+ Utils.wrap_expr(_rbexpr.lst_sort(reverse))
31
+ end
32
+
33
+ def reverse
34
+ Utils.wrap_expr(_rbexpr.lst_reverse)
35
+ end
36
+
37
+ def unique
38
+ Utils.wrap_expr(_rbexpr.lst_unique)
39
+ end
40
+
41
+ # def concat
42
+ # end
43
+
44
+ def get(index)
45
+ index = Utils.expr_to_lit_or_expr(index, str_to_lit: false)._rbexpr
46
+ Utils.wrap_expr(_rbexpr.lst_get(index))
47
+ end
48
+
49
+ def [](item)
50
+ get(item)
51
+ end
52
+
53
+ def first
54
+ get(0)
55
+ end
56
+
57
+ def last
58
+ get(-1)
59
+ end
60
+
61
+ def contains(item)
62
+ Utils.wrap_expr(_rbexpr.arr_contains(Utils.expr_to_lit_or_expr(item)._rbexpr))
63
+ end
64
+
65
+ def join(separator)
66
+ Utils.wrap_expr(_rbexpr.lst_join(separator))
67
+ end
68
+
69
+ def arg_min
70
+ Utils.wrap_expr(_rbexpr.lst_arg_min)
71
+ end
72
+
73
+ def arg_max
74
+ Utils.wrap_expr(_rbexpr.lst_arg_max)
75
+ end
76
+
77
+ def diff(n: 1, null_behavior: "ignore")
78
+ Utils.wrap_expr(_rbexpr.lst_diff(n, null_behavior))
79
+ end
80
+
81
+ def shift(periods = 1)
82
+ Utils.wrap_expr(_rbexpr.lst_shift(periods))
83
+ end
84
+
85
+ def slice(offset, length = nil)
86
+ offset = Utils.expr_to_lit_or_expr(offset, str_to_lit: false)._rbexpr
87
+ length = Utils.expr_to_lit_or_expr(length, str_to_lit: false)._rbexpr
88
+ Utils.wrap_expr(_rbexpr.lst_slice(offset, length))
89
+ end
90
+
91
+ def head(n = 5)
92
+ slice(0, n)
93
+ end
94
+
95
+ def tail(n = 5)
96
+ offset = -Utils.expr_to_lit_or_expr(n, str_to_lit: false)
97
+ slice(offset, n)
98
+ end
99
+
100
+ # def to_struct(n_field_strategy: "first_non_null", name_generator: nil)
101
+ # Utils.wrap_expr(_rbexpr.lst_to_struct(n_field_strategy, name_generator))
102
+ # end
103
+
104
+ def eval(expr, parallel: false)
105
+ Utils.wrap_expr(_rbexpr.lst_eval(expr._rbexpr, parallel))
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,33 @@
1
+ module Polars
2
+ class MetaExpr
3
+ attr_accessor :_rbexpr
4
+
5
+ def initialize(expr)
6
+ self._rbexpr = expr._rbexpr
7
+ end
8
+
9
+ def ==(other)
10
+ _rbexpr.meta_eq(other._rbexpr)
11
+ end
12
+
13
+ def !=(other)
14
+ !(self == other)
15
+ end
16
+
17
+ def pop
18
+ _rbexpr.meta_pop.map { |e| Utils.wrap_expr(e) }
19
+ end
20
+
21
+ def root_names
22
+ _rbexpr.meta_roots
23
+ end
24
+
25
+ def output_name
26
+ _rbexpr.meta_output_name
27
+ end
28
+
29
+ def undo_aliases
30
+ Utils.wrap_expr(_rbexpr.meta_undo_aliases)
31
+ end
32
+ end
33
+ end