Class: Polars::Expr
- Inherits:
-
Object
- Object
- Polars::Expr
- Defined in:
- lib/polars/expr.rb
Overview
Expressions that can be used in various contexts.
Direct Known Subclasses
Class Method Summary collapse
-
.deserialize(source) ⇒ Expr
Read a serialized expression from a file.
Instance Method Summary collapse
-
#! ⇒ Expr
(also: #~)
Performs boolean not.
-
#!=(other) ⇒ Expr
Not equal.
-
#%(other) ⇒ Expr
Returns the modulo.
-
#&(other) ⇒ Expr
Bitwise AND.
-
#*(other) ⇒ Expr
Performs multiplication.
-
#**(power) ⇒ Expr
Raises to the power of exponent.
-
#+(other) ⇒ Expr
Performs addition.
-
#-(other) ⇒ Expr
Performs subtraction.
-
#-@ ⇒ Expr
Performs negation.
-
#/(other) ⇒ Expr
Performs division.
-
#<(other) ⇒ Expr
Less than.
-
#<=(other) ⇒ Expr
Less than or equal.
-
#==(other) ⇒ Expr
Equal.
-
#>(other) ⇒ Expr
Greater than.
-
#>=(other) ⇒ Expr
Greater than or equal.
-
#^(other) ⇒ Expr
Bitwise XOR.
-
#abs ⇒ Expr
Compute absolute values.
-
#add(other) ⇒ Expr
Method equivalent of addition operator
expr + other. -
#agg_groups ⇒ Expr
Get the group indexes of the group by operation.
-
#alias(name) ⇒ Expr
Rename the output of an expression.
-
#all(ignore_nulls: true) ⇒ Boolean
Check if all boolean values in a Boolean column are
true. -
#and_(*others) ⇒ Expr
Method equivalent of bitwise "and" operator
expr & other & .... -
#any(ignore_nulls: true) ⇒ Boolean
Check if any boolean value in a Boolean column is
true. -
#append(other, upcast: true) ⇒ Expr
Append expressions.
-
#approx_n_unique ⇒ Expr
Approx count unique values.
-
#arccos ⇒ Expr
Compute the element-wise value for the inverse cosine.
-
#arccosh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic cosine.
-
#arcsin ⇒ Expr
Compute the element-wise value for the inverse sine.
-
#arcsinh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic sine.
-
#arctan ⇒ Expr
Compute the element-wise value for the inverse tangent.
-
#arctanh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic tangent.
-
#arg_max ⇒ Expr
Get the index of the maximal value.
-
#arg_min ⇒ Expr
Get the index of the minimal value.
-
#arg_sort(descending: false, nulls_last: false) ⇒ Expr
Get the index values that would sort this column.
-
#arg_true ⇒ Expr
Return indices where expression evaluates
true. -
#arg_unique ⇒ Expr
Get index of first unique value.
-
#arr ⇒ ArrayExpr
Create an object namespace of all array related methods.
-
#backward_fill(limit: nil) ⇒ Expr
Fill missing values with the next to be seen values.
-
#bin ⇒ BinaryExpr
Create an object namespace of all binary related methods.
-
#bitwise_and ⇒ Expr
Perform an aggregation of bitwise ANDs.
-
#bitwise_count_ones ⇒ Expr
Evaluate the number of set bits.
-
#bitwise_count_zeros ⇒ Expr
Evaluate the number of unset bits.
-
#bitwise_leading_ones ⇒ Expr
Evaluate the number most-significant set bits before seeing an unset bit.
-
#bitwise_leading_zeros ⇒ Expr
Evaluate the number most-significant unset bits before seeing a set bit.
-
#bitwise_or ⇒ Expr
Perform an aggregation of bitwise ORs.
-
#bitwise_trailing_ones ⇒ Expr
Evaluate the number least-significant set bits before seeing an unset bit.
-
#bitwise_trailing_zeros ⇒ Expr
Evaluate the number least-significant unset bits before seeing a set bit.
-
#bitwise_xor ⇒ Expr
Perform an aggregation of bitwise XORs.
-
#bottom_k(k: 5) ⇒ Expr
Return the
ksmallest elements. -
#bottom_k_by(by, k: 5, reverse: false) ⇒ Expr
Return the elements corresponding to the
ksmallest elements of thebycolumn(s). -
#cast(dtype, strict: true, wrap_numerical: false) ⇒ Expr
Cast between data types.
-
#cat ⇒ CatExpr
Create an object namespace of all categorical related methods.
-
#cbrt ⇒ Expr
Compute the cube root of the elements.
-
#ceil ⇒ Expr
Rounds up to the nearest integer value.
-
#clip(lower_bound = nil, upper_bound = nil) ⇒ Expr
Set values outside the given boundaries to the boundary value.
-
#cos ⇒ Expr
Compute the element-wise value for the cosine.
-
#cosh ⇒ Expr
Compute the element-wise value for the hyperbolic cosine.
-
#cot ⇒ Expr
Compute the element-wise value for the cotangent.
-
#count ⇒ Expr
Count the number of values in this expression.
-
#cum_count(reverse: false) ⇒ Expr
Get an array with the cumulative count computed at every element.
-
#cum_max(reverse: false) ⇒ Expr
Get an array with the cumulative max computed at every element.
-
#cum_min(reverse: false) ⇒ Expr
Get an array with the cumulative min computed at every element.
-
#cum_prod(reverse: false) ⇒ Expr
Get an array with the cumulative product computed at every element.
-
#cum_sum(reverse: false) ⇒ Expr
Get an array with the cumulative sum computed at every element.
-
#cumulative_eval(expr, min_samples: 1) ⇒ Expr
Run an expression over a sliding window that increases
1slot every iteration. -
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Expr
Bin continuous values into discrete categories.
-
#degrees ⇒ Expr
Convert from radians to degrees.
-
#diff(n: 1, null_behavior: "ignore") ⇒ Expr
Calculate the n-th discrete difference.
-
#dot(other) ⇒ Expr
Compute the dot/inner product between two Expressions.
-
#drop_nans ⇒ Expr
Drop floating point NaN values.
-
#drop_nulls ⇒ Expr
Drop null values.
-
#dt ⇒ DateTimeExpr
Create an object namespace of all datetime related methods.
-
#entropy(base: nil, normalize: true) ⇒ Expr
Computes the entropy.
-
#eq(other) ⇒ Expr
Method equivalent of equality operator
expr == other. -
#eq_missing(other) ⇒ Expr
Method equivalent of equality operator
expr == otherwherenil == nil. -
#ewm_mean(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving average.
-
#ewm_mean_by(by, half_life:) ⇒ Expr
Compute time-based exponentially weighted moving average.
-
#ewm_std(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving standard deviation.
-
#ewm_var(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving variance.
-
#exclude(columns, *more_columns) ⇒ Expr
Exclude certain columns from a wildcard/regex selection.
-
#exp ⇒ Expr
Compute the exponential, element-wise.
-
#explode(empty_as_null: true, keep_nulls: true) ⇒ Expr
Explode a list or utf8 Series.
-
#ext ⇒ ExtensionExpr
Create an object namespace of all extension type related expressions.
-
#extend_constant(value, n) ⇒ Expr
Extend the Series with given number of values.
-
#fill_nan(value) ⇒ Expr
Fill floating point NaN value with a fill value.
-
#fill_null(value = nil, strategy: nil, limit: nil) ⇒ Expr
Fill null values using the specified value or strategy.
-
#filter(*predicates, **constraints) ⇒ Expr
Filter a single column.
-
#first(ignore_nulls: false) ⇒ Expr
Get the first value.
-
#flatten ⇒ Expr
deprecated
Deprecated.
Expr#flattenis deprecated and will be removed in a future version. UseExpr.list.explode(keep_nulls: false, empty_as_null: false)instead, which provides the behavior you likely expect. -
#floor ⇒ Expr
Rounds down to the nearest integer value.
-
#floordiv(other) ⇒ Expr
Method equivalent of integer division operator
expr // other. -
#forward_fill(limit: nil) ⇒ Expr
Fill missing values with the latest seen values.
-
#gather(indices) ⇒ Expr
Take values by index.
-
#gather_every(n, offset = 0) ⇒ Expr
Take every nth value in the Series and return as a new Series.
-
#ge(other) ⇒ Expr
Method equivalent of "greater than or equal" operator
expr >= other. -
#get(index, null_on_oob: false) ⇒ Expr
Return a single value by index.
-
#gt(other) ⇒ Expr
Method equivalent of "greater than" operator
expr > other. -
#has_nulls ⇒ Expr
Check whether the expression contains one or more null values.
-
#hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Expr
Hash the elements in the selection.
-
#head(n = 10) ⇒ Expr
Get the first
nrows. -
#hist(bins: nil, bin_count: nil, include_category: false, include_breakpoint: false) ⇒ Expr
Bin values into buckets and count their occurrences.
-
#implode ⇒ Expr
Aggregate to list.
-
#index_of(element) ⇒ Expr
Get the index of the first occurrence of a value, or
nilif it's not found. -
#inspect_(fmt = "%s") ⇒ Expr
Print the value that this expression evaluates to and pass on the value.
-
#interpolate(method: "linear") ⇒ Expr
Fill nulls with linear interpolation over missing values.
-
#interpolate_by(by) ⇒ Expr
Fill null values using interpolation based on another column.
-
#is_between(lower_bound, upper_bound, closed: "both") ⇒ Expr
Check if this expression is between start and end.
-
#is_close(other, abs_tol: 0.0, rel_tol: 1.0e-09, nans_equal: false) ⇒ Expr
Check if this expression is close, i.e.
-
#is_duplicated ⇒ Expr
Get mask of duplicated values.
-
#is_finite ⇒ Expr
Returns a boolean Series indicating which values are finite.
-
#is_first_distinct ⇒ Expr
Get a mask of the first unique value.
-
#is_in(other, nulls_equal: false) ⇒ Expr
(also: #in?)
Check if elements of this expression are present in the other Series.
-
#is_infinite ⇒ Expr
Returns a boolean Series indicating which values are infinite.
-
#is_last_distinct ⇒ Expr
Return a boolean mask indicating the last occurrence of each distinct value.
-
#is_nan ⇒ Expr
Returns a boolean Series indicating which values are NaN.
-
#is_not ⇒ Expr
(also: #not_)
Negate a boolean expression.
-
#is_not_nan ⇒ Expr
Returns a boolean Series indicating which values are not NaN.
-
#is_not_null ⇒ Expr
Returns a boolean Series indicating which values are not null.
-
#is_null ⇒ Expr
Returns a boolean Series indicating which values are null.
-
#is_unique ⇒ Expr
Get mask of unique values.
-
#item(allow_empty: false) ⇒ Expr
Get the single value.
-
#kurtosis(fisher: true, bias: true) ⇒ Expr
Compute the kurtosis (Fisher or Pearson) of a dataset.
-
#last(ignore_nulls: false) ⇒ Expr
Get the last value.
-
#le(other) ⇒ Expr
Method equivalent of "less than or equal" operator
expr <= other. -
#len ⇒ Expr
(also: #length)
Count the number of values in this expression.
-
#limit(n = 10) ⇒ Expr
Get the first
nrows. -
#list ⇒ ListExpr
Create an object namespace of all list related methods.
-
#log(base = Math::E) ⇒ Expr
Compute the logarithm to a given base.
-
#log10 ⇒ Expr
Compute the base 10 logarithm of the input array, element-wise.
-
#log1p ⇒ Expr
Compute the natural logarithm of each element plus one.
-
#lower_bound ⇒ Expr
Calculate the lower bound.
-
#lt(other) ⇒ Expr
Method equivalent of "less than" operator
expr < other. -
#map_batches(return_dtype: nil, is_elementwise: false, returns_scalar: false, &function) ⇒ Expr
Apply a custom Ruby function to a Series or array of Series.
-
#map_elements(return_dtype: nil, skip_nulls: true, pass_name: false, strategy: "thread_local", returns_scalar: false, &function) ⇒ Expr
Apply a custom/user-defined function (UDF) in a GroupBy or Projection context.
-
#max ⇒ Expr
Get maximum value.
-
#mean ⇒ Expr
Get mean value.
-
#median ⇒ Expr
Get median value using linear interpolation.
-
#meta ⇒ MetaExpr
Create an object namespace of all meta related expression methods.
-
#min ⇒ Expr
Get minimum value.
-
#mod(other) ⇒ Expr
Method equivalent of modulus operator
expr % other. -
#mode(maintain_order: false) ⇒ Expr
Compute the most occurring value(s).
-
#mul(other) ⇒ Expr
Method equivalent of multiplication operator
expr * other. -
#n_unique ⇒ Expr
Count unique values.
-
#name ⇒ NameExpr
Create an object namespace of all expressions that modify expression names.
-
#nan_max ⇒ Expr
Get maximum value, but propagate/poison encountered NaN values.
-
#nan_min ⇒ Expr
Get minimum value, but propagate/poison encountered NaN values.
-
#ne(other) ⇒ Expr
Method equivalent of inequality operator
expr != other. -
#ne_missing(other) ⇒ Expr
Method equivalent of equality operator
expr != otherwherenil == nil. -
#neg ⇒ Expr
Method equivalent of unary minus operator
-expr. -
#null_count ⇒ Expr
Count null values.
-
#or_(*others) ⇒ Expr
Method equivalent of bitwise "or" operator
expr | other | .... -
#over(partition_by = nil, *more_exprs, order_by: nil, descending: false, nulls_last: false, mapping_strategy: "group_to_rows") ⇒ Expr
Apply window function over a subgroup.
-
#pct_change(n: 1) ⇒ Expr
Computes percentage change between values.
-
#peak_max ⇒ Expr
Get a boolean mask of the local maximum peaks.
-
#peak_min ⇒ Expr
Get a boolean mask of the local minimum peaks.
-
#pipe(function, *args, **kwargs) ⇒ Object
Offers a structured way to apply a sequence of user-defined functions (UDFs).
-
#pow(exponent) ⇒ Expr
Raise expression to the power of exponent.
-
#product ⇒ Expr
Compute the product of an expression.
-
#qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) ⇒ Expr
Bin continuous values into discrete categories based on their quantiles.
-
#quantile(quantile, interpolation: "nearest") ⇒ Expr
Get quantile value.
-
#radians ⇒ Expr
Convert from degrees to radians.
-
#rank(method: "average", descending: false, seed: nil) ⇒ Expr
Assign ranks to data, dealing with ties appropriately.
-
#rechunk ⇒ Expr
Create a single chunk of memory for this Series.
-
#reinterpret(signed: nil) ⇒ Expr
Reinterpret the underlying bits as a signed/unsigned integer.
-
#repeat_by(by) ⇒ Expr
Repeat the elements in this Series as specified in the given expression.
-
#replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Expr
Replace values by different values.
-
#replace_strict(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Expr
Replace all values by different values.
-
#reshape(dimensions) ⇒ Expr
Reshape this Expr to a flat Series or a Series of Lists.
-
#reverse ⇒ Expr
Reverse the selection.
-
#rle ⇒ Expr
Get the lengths of runs of identical values.
-
#rle_id ⇒ Expr
Map values to run IDs.
-
#rolling(index_column:, period:, offset: nil, closed: "right") ⇒ Expr
Create rolling groups based on a temporal or integer column.
-
#rolling_kurtosis(window_size, fisher: true, bias: true, min_samples: nil, center: false) ⇒ Expr
Compute a rolling kurtosis.
-
#rolling_max(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
Apply a rolling max (moving max) over the values in this array.
-
#rolling_max_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
Apply a rolling max based on another column.
-
#rolling_mean(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
Apply a rolling mean (moving mean) over the values in this array.
-
#rolling_mean_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
Apply a rolling mean based on another column.
-
#rolling_median(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
Compute a rolling median.
-
#rolling_median_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
Compute a rolling median based on another column.
-
#rolling_min(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
Apply a rolling min (moving min) over the values in this array.
-
#rolling_min_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
Apply a rolling min based on another column.
-
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false) ⇒ Expr
Compute a rolling quantile.
-
#rolling_quantile_by(by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right") ⇒ Expr
Compute a rolling quantile based on another column.
-
#rolling_rank(window_size, method: "average", seed: nil, min_samples: nil, center: false) ⇒ Expr
Compute a rolling rank.
-
#rolling_rank_by(by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right") ⇒ Expr
Compute a rolling rank based on another column.
-
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Expr
Compute a rolling skew.
-
#rolling_std(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Expr
Compute a rolling standard deviation.
-
#rolling_std_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Expr
Compute a rolling standard deviation based on another column.
-
#rolling_sum(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
Apply a rolling sum (moving sum) over the values in this array.
-
#rolling_sum_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
Apply a rolling sum based on another column.
-
#rolling_var(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Expr
Compute a rolling variance.
-
#rolling_var_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Expr
Compute a rolling variance based on another column.
-
#round(decimals = 0, mode: "half_to_even") ⇒ Expr
Round underlying floating point data by
decimalsdigits. -
#round_sig_figs(digits) ⇒ Expr
Round to a number of significant figures.
-
#sample(fraction: nil, with_replacement: nil, shuffle: false, seed: nil, n: nil) ⇒ Expr
Sample from this expression.
-
#search_sorted(element, side: "any", descending: false) ⇒ Expr
Find indices where elements should be inserted to maintain order.
-
#set_sorted(descending: false) ⇒ Expr
Flags the expression as 'sorted'.
-
#shift(n = 1, fill_value: nil) ⇒ Expr
Shift the values by a given period.
-
#shuffle(seed: nil) ⇒ Expr
Shuffle the contents of this expr.
-
#sign ⇒ Expr
Compute the element-wise indication of the sign.
-
#sin ⇒ Expr
Compute the element-wise value for the sine.
-
#sinh ⇒ Expr
Compute the element-wise value for the hyperbolic sine.
-
#skew(bias: true) ⇒ Expr
Compute the sample skewness of a data set.
-
#slice(offset, length = nil) ⇒ Expr
Get a slice of this expression.
-
#sort(descending: false, nulls_last: false) ⇒ Expr
Sort this column.
-
#sort_by(by, *more_by, descending: false, nulls_last: false, multithreaded: true, maintain_order: false) ⇒ Expr
Sort this column by the ordering of another column, or multiple other columns.
-
#sqrt ⇒ Expr
Compute the square root of the elements.
-
#std(ddof: 1) ⇒ Expr
Get standard deviation.
-
#str ⇒ StringExpr
Create an object namespace of all string related methods.
-
#struct ⇒ StructExpr
Create an object namespace of all struct related methods.
-
#sub(other) ⇒ Expr
Method equivalent of subtraction operator
expr - other. -
#sum ⇒ Expr
Get sum value.
-
#tail(n = 10) ⇒ Expr
Get the last
nrows. -
#tan ⇒ Expr
Compute the element-wise value for the tangent.
-
#tanh ⇒ Expr
Compute the element-wise value for the hyperbolic tangent.
-
#to_physical ⇒ Expr
Cast to physical representation of the logical dtype.
-
#to_s ⇒ String
(also: #inspect)
Returns a string representing the Expr.
-
#top_k(k: 5) ⇒ Expr
Return the
klargest elements. -
#top_k_by(by, k: 5, reverse: false) ⇒ Expr
Return the elements corresponding to the
klargest elements of thebycolumn(s). -
#truediv(other) ⇒ Expr
Method equivalent of float division operator
expr / other. -
#unique(maintain_order: false) ⇒ Expr
Get unique values of this expression.
-
#unique_counts ⇒ Expr
Return a count of the unique values in the order of appearance.
-
#upper_bound ⇒ Expr
Calculate the upper bound.
-
#value_counts(sort: false, parallel: false, name: nil, normalize: false) ⇒ Expr
Count all unique values and create a struct mapping value to count.
-
#var(ddof: 1) ⇒ Expr
Get variance.
-
#xor(other) ⇒ Expr
Method equivalent of bitwise exclusive-or operator
expr ^ other. -
#|(other) ⇒ Expr
Bitwise OR.
Class Method Details
.deserialize(source) ⇒ Expr
This function uses marshaling if the logical plan contains Ruby UDFs, and as such inherits the security implications. Deserializing can execute arbitrary code, so it should only be attempted on trusted data.
Serialization is not stable across Polars versions: a LazyFrame serialized in one Polars version may not be deserializable in another Polars version.
Read a serialized expression from a file.
168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/polars/expr.rb', line 168 def self.deserialize(source) raise Todo unless RbExpr.respond_to?(:deserialize_binary) if Utils.pathlike?(source) source = Utils.normalize_filepath(source) end deserializer = RbExpr.method(:deserialize_binary) _from_rbexpr(deserializer.(source)) end |
Instance Method Details
#! ⇒ Expr Also known as: ~
Performs boolean not.
134 135 136 |
# File 'lib/polars/expr.rb', line 134 def ! is_not end |
#!=(other) ⇒ Expr
Not equal.
113 114 115 |
# File 'lib/polars/expr.rb', line 113 def !=(other) wrap_expr(_rbexpr.neq(_to_expr(other)._rbexpr)) end |
#%(other) ⇒ Expr
Returns the modulo.
77 78 79 |
# File 'lib/polars/expr.rb', line 77 def %(other) wrap_expr(_rbexpr % _to_rbexpr(other)) end |
#&(other) ⇒ Expr
Bitwise AND.
33 34 35 36 |
# File 'lib/polars/expr.rb', line 33 def &(other) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.and_(other)) end |
#*(other) ⇒ Expr
Performs multiplication.
63 64 65 |
# File 'lib/polars/expr.rb', line 63 def *(other) wrap_expr(_rbexpr * _to_rbexpr(other)) end |
#**(power) ⇒ Expr
Raises to the power of exponent.
84 85 86 87 |
# File 'lib/polars/expr.rb', line 84 def **(power) exponent = Utils.parse_into_expression(power) wrap_expr(_rbexpr.pow(exponent)) end |
#+(other) ⇒ Expr
Performs addition.
49 50 51 |
# File 'lib/polars/expr.rb', line 49 def +(other) wrap_expr(_rbexpr + _to_rbexpr(other)) end |
#-(other) ⇒ Expr
Performs subtraction.
56 57 58 |
# File 'lib/polars/expr.rb', line 56 def -(other) wrap_expr(_rbexpr - _to_rbexpr(other)) end |
#-@ ⇒ Expr
Performs negation.
142 143 144 |
# File 'lib/polars/expr.rb', line 142 def -@ wrap_expr(_rbexpr.neg) end |
#/(other) ⇒ Expr
Performs division.
70 71 72 |
# File 'lib/polars/expr.rb', line 70 def /(other) wrap_expr(_rbexpr / _to_rbexpr(other)) end |
#<(other) ⇒ Expr
Less than.
120 121 122 |
# File 'lib/polars/expr.rb', line 120 def <(other) wrap_expr(_rbexpr.lt(_to_expr(other)._rbexpr)) end |
#<=(other) ⇒ Expr
Less than or equal.
99 100 101 |
# File 'lib/polars/expr.rb', line 99 def <=(other) wrap_expr(_rbexpr.lt_eq(_to_expr(other)._rbexpr)) end |
#==(other) ⇒ Expr
Equal.
106 107 108 |
# File 'lib/polars/expr.rb', line 106 def ==(other) wrap_expr(_rbexpr.eq(_to_expr(other)._rbexpr)) end |
#>(other) ⇒ Expr
Greater than.
127 128 129 |
# File 'lib/polars/expr.rb', line 127 def >(other) wrap_expr(_rbexpr.gt(_to_expr(other)._rbexpr)) end |
#>=(other) ⇒ Expr
Greater than or equal.
92 93 94 |
# File 'lib/polars/expr.rb', line 92 def >=(other) wrap_expr(_rbexpr.gt_eq(_to_expr(other)._rbexpr)) end |
#^(other) ⇒ Expr
Bitwise XOR.
25 26 27 28 |
# File 'lib/polars/expr.rb', line 25 def ^(other) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.xor_(other)) end |
#abs ⇒ Expr
Compute absolute values.
6512 6513 6514 |
# File 'lib/polars/expr.rb', line 6512 def abs wrap_expr(_rbexpr.abs) end |
#add(other) ⇒ Expr
Method equivalent of addition operator expr + other.
4055 4056 4057 |
# File 'lib/polars/expr.rb', line 4055 def add(other) self + other end |
#agg_groups ⇒ Expr
Get the group indexes of the group by operation.
Should be used in aggregation context only.
738 739 740 |
# File 'lib/polars/expr.rb', line 738 def agg_groups wrap_expr(_rbexpr.agg_groups) end |
#alias(name) ⇒ Expr
Rename the output of an expression.
400 401 402 |
# File 'lib/polars/expr.rb', line 400 def alias(name) wrap_expr(_rbexpr.alias(name)) end |
#all(ignore_nulls: true) ⇒ Boolean
Check if all boolean values in a Boolean column are true.
This method is an expression - not to be confused with
Polars.all which is a function to select all columns.
251 252 253 |
# File 'lib/polars/expr.rb', line 251 def all(ignore_nulls: true) wrap_expr(_rbexpr.all(ignore_nulls)) end |
#and_(*others) ⇒ Expr
Method equivalent of bitwise "and" operator expr & other & ....
3692 3693 3694 |
# File 'lib/polars/expr.rb', line 3692 def and_(*others) ([self] + others).reduce(:&) end |
#any(ignore_nulls: true) ⇒ Boolean
Check if any boolean value in a Boolean column is true.
226 227 228 |
# File 'lib/polars/expr.rb', line 226 def any(ignore_nulls: true) wrap_expr(_rbexpr.any(ignore_nulls)) end |
#append(other, upcast: true) ⇒ Expr
Append expressions.
This is done by adding the chunks of other to this Series.
850 851 852 853 |
# File 'lib/polars/expr.rb', line 850 def append(other, upcast: true) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.append(other, upcast)) end |
#approx_n_unique ⇒ Expr
Approx count unique values.
This is done using the HyperLogLog++ algorithm for cardinality estimation.
2451 2452 2453 |
# File 'lib/polars/expr.rb', line 2451 def approx_n_unique wrap_expr(_rbexpr.approx_n_unique) end |
#arccos ⇒ Expr
Compute the element-wise value for the inverse cosine.
6933 6934 6935 |
# File 'lib/polars/expr.rb', line 6933 def arccos wrap_expr(_rbexpr.arccos) end |
#arccosh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic cosine.
7053 7054 7055 |
# File 'lib/polars/expr.rb', line 7053 def arccosh wrap_expr(_rbexpr.arccosh) end |
#arcsin ⇒ Expr
Compute the element-wise value for the inverse sine.
6913 6914 6915 |
# File 'lib/polars/expr.rb', line 6913 def arcsin wrap_expr(_rbexpr.arcsin) end |
#arcsinh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic sine.
7033 7034 7035 |
# File 'lib/polars/expr.rb', line 7033 def arcsinh wrap_expr(_rbexpr.arcsinh) end |
#arctan ⇒ Expr
Compute the element-wise value for the inverse tangent.
6953 6954 6955 |
# File 'lib/polars/expr.rb', line 6953 def arctan wrap_expr(_rbexpr.arctan) end |
#arctanh ⇒ Expr
Compute the element-wise value for the inverse hyperbolic tangent.
7073 7074 7075 |
# File 'lib/polars/expr.rb', line 7073 def arctanh wrap_expr(_rbexpr.arctanh) end |
#arg_max ⇒ Expr
Get the index of the maximal value.
1725 1726 1727 |
# File 'lib/polars/expr.rb', line 1725 def arg_max wrap_expr(_rbexpr.arg_max) end |
#arg_min ⇒ Expr
Get the index of the minimal value.
1749 1750 1751 |
# File 'lib/polars/expr.rb', line 1749 def arg_min wrap_expr(_rbexpr.arg_min) end |
#arg_sort(descending: false, nulls_last: false) ⇒ Expr
Get the index values that would sort this column.
1701 1702 1703 |
# File 'lib/polars/expr.rb', line 1701 def arg_sort(descending: false, nulls_last: false) wrap_expr(_rbexpr.arg_sort(descending, nulls_last)) end |
#arg_true ⇒ Expr
Modifies number of rows returned, so will fail in combination with other
expressions. Use as only expression in select / with_columns.
Return indices where expression evaluates true.
277 278 279 |
# File 'lib/polars/expr.rb', line 277 def arg_true wrap_expr(Plr.arg_where(_rbexpr)) end |
#arg_unique ⇒ Expr
Get index of first unique value.
2542 2543 2544 |
# File 'lib/polars/expr.rb', line 2542 def arg_unique wrap_expr(_rbexpr.arg_unique) end |
#arr ⇒ ArrayExpr
Create an object namespace of all array related methods.
8287 8288 8289 |
# File 'lib/polars/expr.rb', line 8287 def arr ArrayExpr.new(self) end |
#backward_fill(limit: nil) ⇒ Expr
Fill missing values with the next to be seen values.
2163 2164 2165 |
# File 'lib/polars/expr.rb', line 2163 def backward_fill(limit: nil) fill_null(strategy: "backward", limit: limit) end |
#bin ⇒ BinaryExpr
Create an object namespace of all binary related methods.
8294 8295 8296 |
# File 'lib/polars/expr.rb', line 8294 def bin BinaryExpr.new(self) end |
#bitwise_and ⇒ Expr
Perform an aggregation of bitwise ANDs.
8201 8202 8203 |
# File 'lib/polars/expr.rb', line 8201 def bitwise_and wrap_expr(_rbexpr.bitwise_and) end |
#bitwise_count_ones ⇒ Expr
Evaluate the number of set bits.
8130 8131 8132 |
# File 'lib/polars/expr.rb', line 8130 def bitwise_count_ones wrap_expr(_rbexpr.bitwise_count_ones) end |
#bitwise_count_zeros ⇒ Expr
Evaluate the number of unset bits.
8137 8138 8139 |
# File 'lib/polars/expr.rb', line 8137 def bitwise_count_zeros wrap_expr(_rbexpr.bitwise_count_zeros) end |
#bitwise_leading_ones ⇒ Expr
Evaluate the number most-significant set bits before seeing an unset bit.
8144 8145 8146 |
# File 'lib/polars/expr.rb', line 8144 def bitwise_leading_ones wrap_expr(_rbexpr.bitwise_leading_ones) end |
#bitwise_leading_zeros ⇒ Expr
Evaluate the number most-significant unset bits before seeing a set bit.
8151 8152 8153 |
# File 'lib/polars/expr.rb', line 8151 def bitwise_leading_zeros wrap_expr(_rbexpr.bitwise_leading_zeros) end |
#bitwise_or ⇒ Expr
Perform an aggregation of bitwise ORs.
8237 8238 8239 |
# File 'lib/polars/expr.rb', line 8237 def bitwise_or wrap_expr(_rbexpr.bitwise_or) end |
#bitwise_trailing_ones ⇒ Expr
Evaluate the number least-significant set bits before seeing an unset bit.
8158 8159 8160 |
# File 'lib/polars/expr.rb', line 8158 def bitwise_trailing_ones wrap_expr(_rbexpr.bitwise_trailing_ones) end |
#bitwise_trailing_zeros ⇒ Expr
Evaluate the number least-significant unset bits before seeing a set bit.
8165 8166 8167 |
# File 'lib/polars/expr.rb', line 8165 def bitwise_trailing_zeros wrap_expr(_rbexpr.bitwise_trailing_zeros) end |
#bitwise_xor ⇒ Expr
Perform an aggregation of bitwise XORs.
8273 8274 8275 |
# File 'lib/polars/expr.rb', line 8273 def bitwise_xor wrap_expr(_rbexpr.bitwise_xor) end |
#bottom_k(k: 5) ⇒ Expr
Return the k smallest elements.
If 'reverse: true` the smallest elements will be given.
1563 1564 1565 1566 |
# File 'lib/polars/expr.rb', line 1563 def bottom_k(k: 5) k = Utils.parse_into_expression(k) wrap_expr(_rbexpr.bottom_k(k)) end |
#bottom_k_by(by, k: 5, reverse: false) ⇒ Expr
Return the elements corresponding to the k smallest elements of the by column(s).
Non-null elements are always preferred over null elements, regardless of
the value of reverse. The output is not guaranteed to be in any
particular order, call :func:sort after this function if you wish the
output to be sorted.
1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 |
# File 'lib/polars/expr.rb', line 1663 def bottom_k_by( by, k: 5, reverse: false ) k = Utils.parse_into_expression(k) by = Utils.parse_into_list_of_expressions(by) reverse = Utils.extend_bool(reverse, by.length, "reverse", "by") wrap_expr(_rbexpr.bottom_k_by(by, k, reverse)) end |
#cast(dtype, strict: true, wrap_numerical: false) ⇒ Expr
Cast between data types.
1304 1305 1306 1307 |
# File 'lib/polars/expr.rb', line 1304 def cast(dtype, strict: true, wrap_numerical: false) dtype = Utils.parse_into_datatype_expr(dtype) wrap_expr(_rbexpr.cast(dtype._rbdatatype_expr, strict, wrap_numerical)) end |
#cat ⇒ CatExpr
Create an object namespace of all categorical related methods.
8301 8302 8303 |
# File 'lib/polars/expr.rb', line 8301 def cat CatExpr.new(self) end |
#cbrt ⇒ Expr
Compute the cube root of the elements.
321 322 323 |
# File 'lib/polars/expr.rb', line 321 def cbrt wrap_expr(_rbexpr.cbrt) end |
#ceil ⇒ Expr
Rounds up to the nearest integer value.
Only works on floating point Series.
1145 1146 1147 |
# File 'lib/polars/expr.rb', line 1145 def ceil wrap_expr(_rbexpr.ceil) end |
#clip(lower_bound = nil, upper_bound = nil) ⇒ Expr
Set values outside the given boundaries to the boundary value.
Only works for numeric and temporal columns. If you want to clip other data
types, consider writing a when-then-otherwise expression.
6737 6738 6739 6740 6741 6742 6743 6744 6745 |
# File 'lib/polars/expr.rb', line 6737 def clip(lower_bound = nil, upper_bound = nil) if !lower_bound.nil? lower_bound = Utils.parse_into_expression(lower_bound) end if !upper_bound.nil? upper_bound = Utils.parse_into_expression(upper_bound) end wrap_expr(_rbexpr.clip(lower_bound, upper_bound)) end |
#cos ⇒ Expr
Compute the element-wise value for the cosine.
6853 6854 6855 |
# File 'lib/polars/expr.rb', line 6853 def cos wrap_expr(_rbexpr.cos) end |
#cosh ⇒ Expr
Compute the element-wise value for the hyperbolic cosine.
6993 6994 6995 |
# File 'lib/polars/expr.rb', line 6993 def cosh wrap_expr(_rbexpr.cosh) end |
#cot ⇒ Expr
Compute the element-wise value for the cotangent.
6893 6894 6895 |
# File 'lib/polars/expr.rb', line 6893 def cot wrap_expr(_rbexpr.cot) end |
#count ⇒ Expr
Count the number of values in this expression.
758 759 760 |
# File 'lib/polars/expr.rb', line 758 def count wrap_expr(_rbexpr.count) end |
#cum_count(reverse: false) ⇒ Expr
Get an array with the cumulative count computed at every element.
Counting from 0 to len
1095 1096 1097 |
# File 'lib/polars/expr.rb', line 1095 def cum_count(reverse: false) wrap_expr(_rbexpr.cum_count(reverse)) end |
#cum_max(reverse: false) ⇒ Expr
Get an array with the cumulative max computed at every element.
1062 1063 1064 |
# File 'lib/polars/expr.rb', line 1062 def cum_max(reverse: false) wrap_expr(_rbexpr.cum_max(reverse)) end |
#cum_min(reverse: false) ⇒ Expr
Get an array with the cumulative min computed at every element.
1031 1032 1033 |
# File 'lib/polars/expr.rb', line 1031 def cum_min(reverse: false) wrap_expr(_rbexpr.cum_min(reverse)) end |
#cum_prod(reverse: false) ⇒ Expr
Dtypes in \{Int8, UInt8, Int16, UInt16} are cast to Int64 before summing to prevent overflow issues.
Get an array with the cumulative product computed at every element.
1000 1001 1002 |
# File 'lib/polars/expr.rb', line 1000 def cum_prod(reverse: false) wrap_expr(_rbexpr.cum_prod(reverse)) end |
#cum_sum(reverse: false) ⇒ Expr
Dtypes in \{Int8, UInt8, Int16, UInt16} are cast to Int64 before summing to prevent overflow issues.
Get an array with the cumulative sum computed at every element.
965 966 967 |
# File 'lib/polars/expr.rb', line 965 def cum_sum(reverse: false) wrap_expr(_rbexpr.cum_sum(reverse)) end |
#cumulative_eval(expr, min_samples: 1) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
This can be really slow as it can have O(n^2) complexity. Don't use this
for operations that visit all elements.
Run an expression over a sliding window that increases 1 slot every iteration.
7689 7690 7691 7692 7693 |
# File 'lib/polars/expr.rb', line 7689 def cumulative_eval(expr, min_samples: 1) wrap_expr( _rbexpr.cumulative_eval(expr._rbexpr, min_samples) ) end |
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Expr
Bin continuous values into discrete categories.
3163 3164 3165 |
# File 'lib/polars/expr.rb', line 3163 def cut(breaks, labels: nil, left_closed: false, include_breaks: false) wrap_expr(_rbexpr.cut(breaks, labels, left_closed, include_breaks)) end |
#degrees ⇒ Expr
Convert from radians to degrees.
7101 7102 7103 |
# File 'lib/polars/expr.rb', line 7101 def degrees wrap_expr(_rbexpr.degrees) end |
#diff(n: 1, null_behavior: "ignore") ⇒ Expr
Calculate the n-th discrete difference.
6607 6608 6609 6610 |
# File 'lib/polars/expr.rb', line 6607 def diff(n: 1, null_behavior: "ignore") n = Utils.parse_into_expression(n) wrap_expr(_rbexpr.diff(n, null_behavior)) end |
#dot(other) ⇒ Expr
Compute the dot/inner product between two Expressions.
1231 1232 1233 1234 |
# File 'lib/polars/expr.rb', line 1231 def dot(other) other = Utils.parse_into_expression(other, str_as_lit: false) wrap_expr(_rbexpr.dot(other)) end |
#drop_nans ⇒ Expr
Drop floating point NaN values.
930 931 932 |
# File 'lib/polars/expr.rb', line 930 def drop_nans wrap_expr(_rbexpr.drop_nans) end |
#drop_nulls ⇒ Expr
Drop null values.
903 904 905 |
# File 'lib/polars/expr.rb', line 903 def drop_nulls wrap_expr(_rbexpr.drop_nulls) end |
#dt ⇒ DateTimeExpr
Create an object namespace of all datetime related methods.
8308 8309 8310 |
# File 'lib/polars/expr.rb', line 8308 def dt DateTimeExpr.new(self) end |
#entropy(base: nil, normalize: true) ⇒ Expr
Computes the entropy.
Uses the formula -sum(pk * log(pk) where pk are discrete probabilities.
7639 7640 7641 7642 7643 7644 7645 7646 7647 |
# File 'lib/polars/expr.rb', line 7639 def entropy(base: nil, normalize: true) # TODO update (including param docs) if base.nil? warn "The default `base` for `entropy` method will change from `2` to `Math::E` in a future version" base = 2 end wrap_expr(_rbexpr.entropy(base, normalize)) end |
#eq(other) ⇒ Expr
Method equivalent of equality operator expr == other.
3765 3766 3767 |
# File 'lib/polars/expr.rb', line 3765 def eq(other) self == other end |
#eq_missing(other) ⇒ Expr
Method equivalent of equality operator expr == other where nil == nil.
This differs from default eq where null values are propagated.
3803 3804 3805 3806 |
# File 'lib/polars/expr.rb', line 3803 def eq_missing(other) other = Utils.parse_into_expression(other, str_as_lit: true) wrap_expr(_rbexpr.eq_missing(other)) end |
#ewm_mean(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving average.
7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 |
# File 'lib/polars/expr.rb', line 7287 def ewm_mean( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_samples: 1, ignore_nulls: false ) alpha = _prepare_alpha(com, span, half_life, alpha) wrap_expr(_rbexpr.ewm_mean(alpha, adjust, min_samples, ignore_nulls)) end |
#ewm_mean_by(by, half_life:) ⇒ Expr
Compute time-based exponentially weighted moving average.
7360 7361 7362 7363 7364 7365 7366 7367 |
# File 'lib/polars/expr.rb', line 7360 def ewm_mean_by( by, half_life: ) by = Utils.parse_into_expression(by) half_life = Utils.parse_as_duration_string(half_life) wrap_expr(_rbexpr.ewm_mean_by(by, half_life)) end |
#ewm_std(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving standard deviation.
7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 |
# File 'lib/polars/expr.rb', line 7387 def ewm_std( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false ) alpha = _prepare_alpha(com, span, half_life, alpha) wrap_expr(_rbexpr.ewm_std(alpha, adjust, bias, min_samples, ignore_nulls)) end |
#ewm_var(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false) ⇒ Expr
Exponentially-weighted moving variance.
7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 |
# File 'lib/polars/expr.rb', line 7419 def ewm_var( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false ) alpha = _prepare_alpha(com, span, half_life, alpha) wrap_expr(_rbexpr.ewm_var(alpha, adjust, bias, min_samples, ignore_nulls)) end |
#exclude(columns, *more_columns) ⇒ Expr
Exclude certain columns from a wildcard/regex selection.
You may also use regexes in the exclude list. They must start with ^ and end
with $.
438 439 440 |
# File 'lib/polars/expr.rb', line 438 def exclude(columns, *more_columns) .as_selector.exclude(columns, *more_columns).as_expr end |
#exp ⇒ Expr
Compute the exponential, element-wise.
365 366 367 |
# File 'lib/polars/expr.rb', line 365 def exp wrap_expr(_rbexpr.exp) end |
#explode(empty_as_null: true, keep_nulls: true) ⇒ Expr
Explode a list or utf8 Series.
This means that every item is expanded to a new row.
3551 3552 3553 |
# File 'lib/polars/expr.rb', line 3551 def explode(empty_as_null: true, keep_nulls: true) wrap_expr(_rbexpr.explode(empty_as_null, keep_nulls)) end |
#ext ⇒ ExtensionExpr
Create an object namespace of all extension type related expressions.
8343 8344 8345 |
# File 'lib/polars/expr.rb', line 8343 def ext ExtensionExpr.new(self) end |
#extend_constant(value, n) ⇒ Expr
Extend the Series with given number of values.
7459 7460 7461 7462 7463 |
# File 'lib/polars/expr.rb', line 7459 def extend_constant(value, n) value = Utils.parse_into_expression(value, str_as_lit: true) n = Utils.parse_into_expression(n) wrap_expr(_rbexpr.extend_constant(value, n)) end |
#fill_nan(value) ⇒ Expr
Fill floating point NaN value with a fill value.
2102 2103 2104 2105 |
# File 'lib/polars/expr.rb', line 2102 def fill_nan(value) fill_value_rbexpr = Utils.parse_into_expression(value, str_as_lit: true) wrap_expr(_rbexpr.fill_nan(fill_value_rbexpr)) end |
#fill_null(value = nil, strategy: nil, limit: nil) ⇒ Expr
Fill null values using the specified value or strategy.
To interpolate over null values see interpolate.
2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 |
# File 'lib/polars/expr.rb', line 2062 def fill_null(value = nil, strategy: nil, limit: nil) if !value.nil? && !strategy.nil? raise ArgumentError, "cannot specify both 'value' and 'strategy'." elsif value.nil? && strategy.nil? raise ArgumentError, "must specify either a fill 'value' or 'strategy'" elsif ["forward", "backward"].include?(strategy) && !limit.nil? raise ArgumentError, "can only specify 'limit' when strategy is set to 'backward' or 'forward'" end if !value.nil? value = Utils.parse_into_expression(value, str_as_lit: true) wrap_expr(_rbexpr.fill_null(value)) else wrap_expr(_rbexpr.fill_null_with_strategy(strategy, limit)) end end |
#filter(*predicates, **constraints) ⇒ Expr
Filter a single column.
Mostly useful in an aggregation context. If you want to filter on a DataFrame
level, use LazyFrame#filter.
3350 3351 3352 3353 3354 3355 |
# File 'lib/polars/expr.rb', line 3350 def filter(*predicates, **constraints) predicate = Utils.parse_predicates_constraints_into_expression( *predicates, **constraints ) wrap_expr(_rbexpr.filter(predicate)) end |
#first(ignore_nulls: false) ⇒ Expr
Get the first value.
2595 2596 2597 |
# File 'lib/polars/expr.rb', line 2595 def first(ignore_nulls: false) wrap_expr(_rbexpr.first(ignore_nulls)) end |
#flatten ⇒ Expr
Expr#flatten is deprecated and will be removed in a future version.
Use Expr.list.explode(keep_nulls: false, empty_as_null: false) instead,
which provides the behavior you likely expect.
Explode a list or utf8 Series. This means that every item is expanded to a new row.
Alias for #explode.
3524 3525 3526 |
# File 'lib/polars/expr.rb', line 3524 def flatten explode(empty_as_null: true, keep_nulls: true) end |
#floor ⇒ Expr
Rounds down to the nearest integer value.
Only works on floating point Series.
1120 1121 1122 |
# File 'lib/polars/expr.rb', line 1120 def floor wrap_expr(_rbexpr.floor) end |
#floordiv(other) ⇒ Expr
Method equivalent of integer division operator expr // other.
4085 4086 4087 |
# File 'lib/polars/expr.rb', line 4085 def floordiv(other) wrap_expr(_rbexpr.floordiv(_to_rbexpr(other))) end |
#forward_fill(limit: nil) ⇒ Expr
Fill missing values with the latest seen values.
2133 2134 2135 |
# File 'lib/polars/expr.rb', line 2133 def forward_fill(limit: nil) fill_null(strategy: "forward", limit: limit) end |
#gather(indices) ⇒ Expr
Take values by index.
1918 1919 1920 1921 1922 1923 1924 1925 |
# File 'lib/polars/expr.rb', line 1918 def gather(indices) if indices.is_a?(::Array) indices_lit_rbexpr = Polars.lit(Series.new("", indices, dtype: Int64))._rbexpr else indices_lit_rbexpr = Utils.parse_into_expression(indices) end wrap_expr(_rbexpr.gather(indices_lit_rbexpr)) end |
#gather_every(n, offset = 0) ⇒ Expr
Take every nth value in the Series and return as a new Series.
3573 3574 3575 |
# File 'lib/polars/expr.rb', line 3573 def gather_every(n, offset = 0) wrap_expr(_rbexpr.gather_every(n, offset)) end |
#ge(other) ⇒ Expr
Method equivalent of "greater than or equal" operator expr >= other.
3837 3838 3839 |
# File 'lib/polars/expr.rb', line 3837 def ge(other) self >= other end |
#get(index, null_on_oob: false) ⇒ Expr
Return a single value by index.
1964 1965 1966 1967 |
# File 'lib/polars/expr.rb', line 1964 def get(index, null_on_oob: false) index_lit = Utils.parse_into_expression(index) wrap_expr(_rbexpr.get(index_lit, null_on_oob)) end |
#gt(other) ⇒ Expr
Method equivalent of "greater than" operator expr > other.
3870 3871 3872 |
# File 'lib/polars/expr.rb', line 3870 def gt(other) self > other end |
#has_nulls ⇒ Expr
Check whether the expression contains one or more null values.
2502 2503 2504 |
# File 'lib/polars/expr.rb', line 2502 def has_nulls null_count > 0 end |
#hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Expr
Hash the elements in the selection.
The hash value is of type UInt64.
4497 4498 4499 4500 4501 4502 4503 |
# File 'lib/polars/expr.rb', line 4497 def hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) k0 = seed k1 = seed_1.nil? ? seed : seed_1 k2 = seed_2.nil? ? seed : seed_2 k3 = seed_3.nil? ? seed : seed_3 wrap_expr(_rbexpr._hash(k0, k1, k2, k3)) end |
#head(n = 10) ⇒ Expr
Get the first n rows.
3598 3599 3600 |
# File 'lib/polars/expr.rb', line 3598 def head(n = 10) wrap_expr(_rbexpr.head(n)) end |
#hist(bins: nil, bin_count: nil, include_category: false, include_breakpoint: false) ⇒ Expr
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Bin values into buckets and count their occurrences.
7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 |
# File 'lib/polars/expr.rb', line 7797 def hist( bins: nil, bin_count: nil, include_category: false, include_breakpoint: false ) if !bins.nil? if bins.is_a?(::Array) bins = Polars::Series.new(bins) end bins = Utils.parse_into_expression(bins) end wrap_expr( _rbexpr.hist(bins, bin_count, include_category, include_breakpoint) ) end |
#implode ⇒ Expr
Aggregate to list.
7745 7746 7747 |
# File 'lib/polars/expr.rb', line 7745 def implode wrap_expr(_rbexpr.implode) end |
#index_of(element) ⇒ Expr
Get the index of the first occurrence of a value, or nil if it's not found.
1778 1779 1780 1781 |
# File 'lib/polars/expr.rb', line 1778 def index_of(element) element = Utils.parse_into_expression(element, str_as_lit: true) wrap_expr(_rbexpr.index_of(element)) end |
#inspect_(fmt = "%s") ⇒ Expr
Print the value that this expression evaluates to and pass on the value.
4570 4571 4572 4573 4574 4575 4576 4577 |
# File 'lib/polars/expr.rb', line 4570 def inspect_(fmt = "%s") inspect = lambda do |s| puts(fmt % [s]) s end map_batches(return_dtype: F.dtype_of(self), &inspect) end |
#interpolate(method: "linear") ⇒ Expr
Fill nulls with linear interpolation over missing values.
Can also be used to regrid data to a new grid - see examples below.
4604 4605 4606 |
# File 'lib/polars/expr.rb', line 4604 def interpolate(method: "linear") wrap_expr(_rbexpr.interpolate(method)) end |
#interpolate_by(by) ⇒ Expr
Fill null values using interpolation based on another column.
4634 4635 4636 4637 |
# File 'lib/polars/expr.rb', line 4634 def interpolate_by(by) by = Utils.parse_into_expression(by) wrap_expr(_rbexpr.interpolate_by(by)) end |
#is_between(lower_bound, upper_bound, closed: "both") ⇒ Expr
Check if this expression is between start and end.
4417 4418 4419 4420 4421 4422 4423 4424 |
# File 'lib/polars/expr.rb', line 4417 def is_between(lower_bound, upper_bound, closed: "both") lower_bound = Utils.parse_into_expression(lower_bound) upper_bound = Utils.parse_into_expression(upper_bound) wrap_expr( _rbexpr.is_between(lower_bound, upper_bound, closed) ) end |
#is_close(other, abs_tol: 0.0, rel_tol: 1.0e-09, nans_equal: false) ⇒ Expr
Check if this expression is close, i.e. almost equal, to the other expression.
4453 4454 4455 4456 4457 4458 4459 4460 4461 |
# File 'lib/polars/expr.rb', line 4453 def is_close( other, abs_tol: 0.0, rel_tol: 1.0e-09, nans_equal: false ) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.is_close(other, abs_tol, rel_tol, nans_equal)) end |
#is_duplicated ⇒ Expr
Get mask of duplicated values.
2985 2986 2987 |
# File 'lib/polars/expr.rb', line 2985 def is_duplicated wrap_expr(_rbexpr.is_duplicated) end |
#is_finite ⇒ Expr
Returns a boolean Series indicating which values are finite.
611 612 613 |
# File 'lib/polars/expr.rb', line 611 def is_finite wrap_expr(_rbexpr.is_finite) end |
#is_first_distinct ⇒ Expr
Get a mask of the first unique value.
2939 2940 2941 |
# File 'lib/polars/expr.rb', line 2939 def is_first_distinct wrap_expr(_rbexpr.is_first_distinct) end |
#is_in(other, nulls_equal: false) ⇒ Expr Also known as: in?
Check if elements of this expression are present in the other Series.
4310 4311 4312 4313 |
# File 'lib/polars/expr.rb', line 4310 def is_in(other, nulls_equal: false) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.is_in(other, nulls_equal)) end |
#is_infinite ⇒ Expr
Returns a boolean Series indicating which values are infinite.
637 638 639 |
# File 'lib/polars/expr.rb', line 637 def is_infinite wrap_expr(_rbexpr.is_infinite) end |
#is_last_distinct ⇒ Expr
Return a boolean mask indicating the last occurrence of each distinct value.
2963 2964 2965 |
# File 'lib/polars/expr.rb', line 2963 def is_last_distinct wrap_expr(_rbexpr.is_last_distinct) end |
#is_nan ⇒ Expr
Floating point NaN (Not A Number) should not be confused
with missing data represented as nil.
Returns a boolean Series indicating which values are NaN.
670 671 672 |
# File 'lib/polars/expr.rb', line 670 def is_nan wrap_expr(_rbexpr.is_nan) end |
#is_not ⇒ Expr Also known as: not_
Negate a boolean expression.
526 527 528 |
# File 'lib/polars/expr.rb', line 526 def is_not wrap_expr(_rbexpr.not_) end |
#is_not_nan ⇒ Expr
Floating point NaN (Not A Number) should not be confused
with missing data represented as nil.
Returns a boolean Series indicating which values are not NaN.
703 704 705 |
# File 'lib/polars/expr.rb', line 703 def is_not_nan wrap_expr(_rbexpr.is_not_nan) end |
#is_not_null ⇒ Expr
Returns a boolean Series indicating which values are not null.
585 586 587 |
# File 'lib/polars/expr.rb', line 585 def is_not_null wrap_expr(_rbexpr.is_not_null) end |
#is_null ⇒ Expr
Returns a boolean Series indicating which values are null.
556 557 558 |
# File 'lib/polars/expr.rb', line 556 def is_null wrap_expr(_rbexpr.is_null) end |
#is_unique ⇒ Expr
Get mask of unique values.
2911 2912 2913 |
# File 'lib/polars/expr.rb', line 2911 def is_unique wrap_expr(_rbexpr.is_unique) end |
#item(allow_empty: false) ⇒ Expr
Get the single value.
This raises an error if there is not exactly one value.
2657 2658 2659 |
# File 'lib/polars/expr.rb', line 2657 def item(allow_empty: false) Utils.wrap_expr(_rbexpr.item(allow_empty)) end |
#kurtosis(fisher: true, bias: true) ⇒ Expr
Compute the kurtosis (Fisher or Pearson) of a dataset.
Kurtosis is the fourth central moment divided by the square of the variance. If Fisher's definition is used, then 3.0 is subtracted from the result to give 0.0 for a normal distribution. If bias is false then the kurtosis is calculated using k statistics to eliminate bias coming from biased moment estimators
6706 6707 6708 |
# File 'lib/polars/expr.rb', line 6706 def kurtosis(fisher: true, bias: true) wrap_expr(_rbexpr.kurtosis(fisher, bias)) end |
#last(ignore_nulls: false) ⇒ Expr
Get the last value.
2620 2621 2622 |
# File 'lib/polars/expr.rb', line 2620 def last(ignore_nulls: false) wrap_expr(_rbexpr.last(ignore_nulls)) end |
#le(other) ⇒ Expr
Method equivalent of "less than or equal" operator expr <= other.
3903 3904 3905 |
# File 'lib/polars/expr.rb', line 3903 def le(other) self <= other end |
#len ⇒ Expr Also known as: length
Count the number of values in this expression.
778 779 780 |
# File 'lib/polars/expr.rb', line 778 def len wrap_expr(_rbexpr.len) end |
#limit(n = 10) ⇒ Expr
Get the first n rows.
Alias for #head.
3650 3651 3652 |
# File 'lib/polars/expr.rb', line 3650 def limit(n = 10) head(n) end |
#list ⇒ ListExpr
Create an object namespace of all list related methods.
8280 8281 8282 |
# File 'lib/polars/expr.rb', line 8280 def list ListExpr.new(self) end |
#log(base = Math::E) ⇒ Expr
Compute the logarithm to a given base.
7575 7576 7577 7578 |
# File 'lib/polars/expr.rb', line 7575 def log(base = Math::E) base_rbexpr = Utils.parse_into_expression(base) wrap_expr(_rbexpr.log(base_rbexpr)) end |
#log10 ⇒ Expr
Compute the base 10 logarithm of the input array, element-wise.
343 344 345 |
# File 'lib/polars/expr.rb', line 343 def log10 log(10) end |
#log1p ⇒ Expr
Compute the natural logarithm of each element plus one.
This computes log(1 + x) but is more numerically stable for x close to zero.
7600 7601 7602 |
# File 'lib/polars/expr.rb', line 7600 def log1p wrap_expr(_rbexpr.log1p) end |
#lower_bound ⇒ Expr
Calculate the lower bound.
Returns a unit Series with the lowest value possible for the dtype of this expression.
6766 6767 6768 |
# File 'lib/polars/expr.rb', line 6766 def lower_bound wrap_expr(_rbexpr.lower_bound) end |
#lt(other) ⇒ Expr
Method equivalent of "less than" operator expr < other.
3936 3937 3938 |
# File 'lib/polars/expr.rb', line 3936 def lt(other) self < other end |
#map_batches(return_dtype: nil, is_elementwise: false, returns_scalar: false, &function) ⇒ Expr
Apply a custom Ruby function to a Series or array of Series.
3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 |
# File 'lib/polars/expr.rb', line 3389 def map_batches( return_dtype: nil, is_elementwise: false, returns_scalar: false, &function ) _wrap = lambda do |sl, *args, **kwargs| function.(sl[0], *args, **kwargs) end F.map_batches( [self], return_dtype: return_dtype, is_elementwise: is_elementwise, returns_scalar: returns_scalar, &_wrap ) end |
#map_elements(return_dtype: nil, skip_nulls: true, pass_name: false, strategy: "thread_local", returns_scalar: false, &function) ⇒ Expr
Apply a custom/user-defined function (UDF) in a GroupBy or Projection context.
Depending on the context it has the following behavior:
- Selection
Expects
fto be of type Callable[[Any], Any]. Applies a Ruby function over each individual value in the column. - GroupBy
Expects
fto be of type Callable[[Series], Series]. Applies a Ruby function over each group.
Implementing logic using a Ruby function is almost always significantly slower and more memory intensive than implementing the same logic using the native expression API because:
- The native expression engine runs in Rust; UDFs run in Ruby.
- Use of Ruby UDFs forces the DataFrame to be materialized in memory.
- Polars-native expressions can be parallelised (UDFs cannot).
- Polars-native expressions can be logically optimised (UDFs cannot).
Wherever possible you should strongly prefer the native expression API to achieve the best performance.
3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 |
# File 'lib/polars/expr.rb', line 3462 def map_elements( return_dtype: nil, skip_nulls: true, pass_name: false, strategy: "thread_local", returns_scalar: false, &function ) if pass_name raise Todo else wrap_f = lambda do |x, **kwargs| return_dtype = kwargs[:return_dtype] x.map_elements(return_dtype: return_dtype, skip_nulls: skip_nulls, &function) end end if strategy == "thread_local" map_batches( return_dtype: return_dtype, returns_scalar: false, is_elementwise: true, &wrap_f ) elsif strategy == "threading" raise Todo else msg = "strategy #{strategy.inspect} is not supported" raise ArgumentError, msg end end |
#max ⇒ Expr
Get maximum value.
2265 2266 2267 |
# File 'lib/polars/expr.rb', line 2265 def max wrap_expr(_rbexpr.max) end |
#mean ⇒ Expr
Get mean value.
2369 2370 2371 |
# File 'lib/polars/expr.rb', line 2369 def mean wrap_expr(_rbexpr.mean) end |
#median ⇒ Expr
Get median value using linear interpolation.
2389 2390 2391 |
# File 'lib/polars/expr.rb', line 2389 def median wrap_expr(_rbexpr.median) end |
#meta ⇒ MetaExpr
Create an object namespace of all meta related expression methods.
8315 8316 8317 |
# File 'lib/polars/expr.rb', line 8315 def MetaExpr.new(self) end |
#min ⇒ Expr
Get minimum value.
2285 2286 2287 |
# File 'lib/polars/expr.rb', line 2285 def min wrap_expr(_rbexpr.min) end |
#mod(other) ⇒ Expr
Method equivalent of modulus operator expr % other.
4112 4113 4114 |
# File 'lib/polars/expr.rb', line 4112 def mod(other) self % other end |
#mode(maintain_order: false) ⇒ Expr
Compute the most occurring value(s).
Can return multiple Values.
1263 1264 1265 |
# File 'lib/polars/expr.rb', line 1263 def mode(maintain_order: false) wrap_expr(_rbexpr.mode(maintain_order)) end |
#mul(other) ⇒ Expr
Method equivalent of multiplication operator expr * other.
4142 4143 4144 |
# File 'lib/polars/expr.rb', line 4142 def mul(other) self * other end |
#n_unique ⇒ Expr
Count unique values.
2429 2430 2431 |
# File 'lib/polars/expr.rb', line 2429 def n_unique wrap_expr(_rbexpr.n_unique) end |
#name ⇒ NameExpr
Create an object namespace of all expressions that modify expression names.
8322 8323 8324 |
# File 'lib/polars/expr.rb', line 8322 def name NameExpr.new(self) end |
#nan_max ⇒ Expr
Get maximum value, but propagate/poison encountered NaN values.
2305 2306 2307 |
# File 'lib/polars/expr.rb', line 2305 def nan_max wrap_expr(_rbexpr.nan_max) end |
#nan_min ⇒ Expr
Get minimum value, but propagate/poison encountered NaN values.
2325 2326 2327 |
# File 'lib/polars/expr.rb', line 2325 def nan_min wrap_expr(_rbexpr.nan_min) end |
#ne(other) ⇒ Expr
Method equivalent of inequality operator expr != other.
3969 3970 3971 |
# File 'lib/polars/expr.rb', line 3969 def ne(other) self != other end |
#ne_missing(other) ⇒ Expr
Method equivalent of equality operator expr != other where nil == nil.
This differs from default ne where null values are propagated.
4007 4008 4009 4010 |
# File 'lib/polars/expr.rb', line 4007 def ne_missing(other) other = Utils.parse_into_expression(other, str_as_lit: true) wrap_expr(_rbexpr.neq_missing(other)) end |
#neg ⇒ Expr
Method equivalent of unary minus operator -expr.
4195 4196 4197 |
# File 'lib/polars/expr.rb', line 4195 def neg -self end |
#null_count ⇒ Expr
Count null values.
2476 2477 2478 |
# File 'lib/polars/expr.rb', line 2476 def null_count wrap_expr(_rbexpr.null_count) end |
#or_(*others) ⇒ Expr
Method equivalent of bitwise "or" operator expr | other | ....
3733 3734 3735 |
# File 'lib/polars/expr.rb', line 3733 def or_(*others) ([self] + others).reduce(:|) end |
#over(partition_by = nil, *more_exprs, order_by: nil, descending: false, nulls_last: false, mapping_strategy: "group_to_rows") ⇒ Expr
Apply window function over a subgroup.
This is similar to a group by + aggregation + self join. Or similar to window functions in Postgres.
2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 |
# File 'lib/polars/expr.rb', line 2776 def over(partition_by = nil, *more_exprs, order_by: nil, descending: false, nulls_last: false, mapping_strategy: "group_to_rows") partition_by_rbexprs = if !partition_by.nil? Utils.parse_into_list_of_expressions(partition_by, *more_exprs) else nil end order_by_rbexprs = !order_by.nil? ? Utils.parse_into_list_of_expressions(order_by) : nil wrap_expr(_rbexpr.over(partition_by_rbexprs, order_by_rbexprs, descending, nulls_last, mapping_strategy)) end |
#pct_change(n: 1) ⇒ Expr
Computes percentage change between values.
Percentage change (as fraction) between current element and most-recent
non-null element at least n period(s) before the current element.
Computes the change from the previous row by default.
6644 6645 6646 6647 |
# File 'lib/polars/expr.rb', line 6644 def pct_change(n: 1) n = Utils.parse_into_expression(n) wrap_expr(_rbexpr.pct_change(n)) end |
#peak_max ⇒ Expr
Get a boolean mask of the local maximum peaks.
3009 3010 3011 |
# File 'lib/polars/expr.rb', line 3009 def peak_max wrap_expr(_rbexpr.peak_max) end |
#peak_min ⇒ Expr
Get a boolean mask of the local minimum peaks.
3033 3034 3035 |
# File 'lib/polars/expr.rb', line 3033 def peak_min wrap_expr(_rbexpr.peak_min) end |
#pipe(function, *args, **kwargs) ⇒ Object
Offers a structured way to apply a sequence of user-defined functions (UDFs).
482 483 484 485 486 487 488 |
# File 'lib/polars/expr.rb', line 482 def pipe( function, *args, **kwargs ) function.(self, *args, **kwargs) end |
#pow(exponent) ⇒ Expr
Raise expression to the power of exponent.
4253 4254 4255 |
# File 'lib/polars/expr.rb', line 4253 def pow(exponent) self**exponent end |
#product ⇒ Expr
Compute the product of an expression.
2409 2410 2411 |
# File 'lib/polars/expr.rb', line 2409 def product wrap_expr(_rbexpr.product) end |
#qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) ⇒ Expr
Bin continuous values into discrete categories based on their quantiles.
3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 |
# File 'lib/polars/expr.rb', line 3244 def qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) if quantiles.is_a?(Integer) rbexpr = _rbexpr.qcut_uniform( quantiles, labels, left_closed, allow_duplicates, include_breaks ) else rbexpr = _rbexpr.qcut( quantiles, labels, left_closed, allow_duplicates, include_breaks ) end wrap_expr(rbexpr) end |
#quantile(quantile, interpolation: "nearest") ⇒ Expr
Get quantile value.
3106 3107 3108 3109 |
# File 'lib/polars/expr.rb', line 3106 def quantile(quantile, interpolation: "nearest") quantile = Utils.parse_into_expression(quantile, str_as_lit: false) wrap_expr(_rbexpr.quantile(quantile, interpolation)) end |
#radians ⇒ Expr
Convert from degrees to radians.
7129 7130 7131 |
# File 'lib/polars/expr.rb', line 7129 def radians wrap_expr(_rbexpr.radians) end |
#rank(method: "average", descending: false, seed: nil) ⇒ Expr
Assign ranks to data, dealing with ties appropriately.
6576 6577 6578 |
# File 'lib/polars/expr.rb', line 6576 def rank(method: "average", descending: false, seed: nil) wrap_expr(_rbexpr.rank(method, descending, seed)) end |
#rechunk ⇒ Expr
Create a single chunk of memory for this Series.
876 877 878 |
# File 'lib/polars/expr.rb', line 876 def rechunk wrap_expr(_rbexpr.rechunk) end |
#reinterpret(signed: nil) ⇒ Expr
Reinterpret the underlying bits as a signed/unsigned integer.
This operation is only allowed for 64bit integers. For lower bits integers, you can safely use that cast operation.
4535 4536 4537 4538 4539 4540 4541 4542 4543 |
# File 'lib/polars/expr.rb', line 4535 def reinterpret(signed: nil) # TODO update if signed.nil? warn "The default `signed` for `reinterpret` method will change from `false` to `true` in a future version" signed = false end wrap_expr(_rbexpr.reinterpret(signed)) end |
#repeat_by(by) ⇒ Expr
Repeat the elements in this Series as specified in the given expression.
The repeated elements are expanded into a List.
4346 4347 4348 4349 |
# File 'lib/polars/expr.rb', line 4346 def repeat_by(by) by = Utils.parse_into_expression(by, str_as_lit: false) wrap_expr(_rbexpr.repeat_by(by)) end |
#replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Expr
Replace values by different values.
7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 |
# File 'lib/polars/expr.rb', line 7950 def replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) if !default.eql?(NO_DEFAULT) return replace_strict(old, new, default: default, return_dtype: return_dtype) end if new.eql?(NO_DEFAULT) && old.is_a?(Hash) new = Series.new(old.values) old = Series.new(old.keys) else if old.is_a?(::Array) old = Series.new(old) end if new.is_a?(::Array) new = Series.new(new) end end old = Utils.parse_into_expression(old, str_as_lit: true) new = Utils.parse_into_expression(new, str_as_lit: true) result = wrap_expr(_rbexpr.replace(old, new)) if !return_dtype.nil? result = result.cast(return_dtype) end result end |
#replace_strict(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Expr
The global string cache must be enabled when replacing categorical values.
Replace all values by different values.
8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 |
# File 'lib/polars/expr.rb', line 8106 def replace_strict( old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil ) if new.eql?(NO_DEFAULT) && old.is_a?(Hash) new = Series.new(old.values) old = Series.new(old.keys) end old = Utils.parse_into_expression(old, str_as_lit: true, list_as_series: true) new = Utils.parse_into_expression(new, str_as_lit: true, list_as_series: true) default = default.eql?(NO_DEFAULT) ? nil : Utils.parse_into_expression(default, str_as_lit: true) wrap_expr( _rbexpr.replace_strict(old, new, default, return_dtype) ) end |
#reshape(dimensions) ⇒ Expr
Reshape this Expr to a flat Series or a Series of Lists.
7175 7176 7177 |
# File 'lib/polars/expr.rb', line 7175 def reshape(dimensions) wrap_expr(_rbexpr.reshape(dimensions)) end |
#reverse ⇒ Expr
Reverse the selection.
2199 2200 2201 |
# File 'lib/polars/expr.rb', line 2199 def reverse wrap_expr(_rbexpr.reverse) end |
#rle ⇒ Expr
Get the lengths of runs of identical values.
3279 3280 3281 |
# File 'lib/polars/expr.rb', line 3279 def rle wrap_expr(_rbexpr.rle) end |
#rle_id ⇒ Expr
Map values to run IDs.
Similar to RLE, but it maps each value to an ID corresponding to the run into which it falls. This is especially useful when you want to define groups by runs of identical values rather than the values themselves.
3307 3308 3309 |
# File 'lib/polars/expr.rb', line 3307 def rle_id wrap_expr(_rbexpr.rle_id) end |
#rolling(index_column:, period:, offset: nil, closed: "right") ⇒ Expr
Create rolling groups based on a temporal or integer column.
If you have a time series <t_0, t_1, ..., t_n>, then by default the
windows created will be
- (t_0 - period, t_0]
- (t_1 - period, t_1]
- ...
- (t_n - period, t_n]
whereas if you pass a non-default offset, then the windows will be
- (t_0 + offset, t_0 + offset + period]
- (t_1 + offset, t_1 + offset + period]
- ...
- (t_n + offset, t_n + offset + period]
The period and offset arguments are created either from a timedelta, or
by using the following string language:
- 1ns (1 nanosecond)
- 1us (1 microsecond)
- 1ms (1 millisecond)
- 1s (1 second)
- 1m (1 minute)
- 1h (1 hour)
- 1d (1 calendar day)
- 1w (1 calendar week)
- 1mo (1 calendar month)
- 1q (1 calendar quarter)
- 1y (1 calendar year)
- 1i (1 index count)
Or combine them: "3d12h4m25s" # 3 days, 12 hours, 4 minutes, and 25 seconds
By "calendar day", we mean the corresponding time on the next day (which may not be 24 hours, due to daylight savings). Similarly for "calendar week", "calendar month", "calendar quarter", and "calendar year".
2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 |
# File 'lib/polars/expr.rb', line 2876 def rolling( index_column:, period:, offset: nil, closed: "right" ) index_column_rbexpr = Utils.parse_into_expression(index_column) if offset.nil? offset = Utils.negate_duration_string(Utils.parse_as_duration_string(period)) end period = Utils.parse_as_duration_string(period) offset = Utils.parse_as_duration_string(offset) wrap_expr(_rbexpr.rolling(index_column_rbexpr, period, offset, closed)) end |
#rolling_kurtosis(window_size, fisher: true, bias: true, min_samples: nil, center: false) ⇒ Expr
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Compute a rolling kurtosis.
The window at a given row will include the row itself, and the window_size - 1
elements before it.
6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 |
# File 'lib/polars/expr.rb', line 6471 def rolling_kurtosis( window_size, fisher: true, bias: true, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_kurtosis( window_size, fisher, bias, min_samples, center ) ) end |
#rolling_max(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Apply a rolling max (moving max) over the values in this array.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 |
# File 'lib/polars/expr.rb', line 5841 def rolling_max( window_size, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_max( window_size, weights, min_samples, center ) ) end |
#rolling_max_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Apply a rolling max based on another column.
4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 |
# File 'lib/polars/expr.rb', line 4852 def rolling_max_by( by, window_size, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_max_by(by, window_size, min_samples, closed) ) end |
#rolling_mean(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Apply a rolling mean (moving mean) over the values in this array.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 |
# File 'lib/polars/expr.rb', line 5919 def rolling_mean( window_size, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_mean( window_size, weights, min_samples, center ) ) end |
#rolling_mean_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Apply a rolling mean based on another column.
4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 |
# File 'lib/polars/expr.rb', line 4980 def rolling_mean_by( by, window_size, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_mean_by( by, window_size, min_samples, closed ) ) end |
#rolling_median(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Compute a rolling median.
6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 |
# File 'lib/polars/expr.rb', line 6233 def rolling_median( window_size, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_median( window_size, weights, min_samples, center ) ) end |
#rolling_median_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Compute a rolling median based on another column.
5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 |
# File 'lib/polars/expr.rb', line 5483 def rolling_median_by( by, window_size, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_median_by(by, window_size, min_samples, closed) ) end |
#rolling_min(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Apply a rolling min (moving min) over the values in this array.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 |
# File 'lib/polars/expr.rb', line 5763 def rolling_min( window_size, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_min( window_size, weights, min_samples, center ) ) end |
#rolling_min_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Apply a rolling min based on another column.
4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 |
# File 'lib/polars/expr.rb', line 4726 def rolling_min_by( by, window_size, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_min_by(by, window_size, min_samples, closed) ) end |
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Compute a rolling quantile.
6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 |
# File 'lib/polars/expr.rb', line 6311 def rolling_quantile( quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_quantile( quantile, interpolation, window_size, weights, min_samples, center ) ) end |
#rolling_quantile_by(by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Compute a rolling quantile based on another column.
5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 |
# File 'lib/polars/expr.rb', line 5589 def rolling_quantile_by( by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_quantile_by( by, quantile, interpolation, window_size, min_samples, closed, ) ) end |
#rolling_rank(window_size, method: "average", seed: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Compute a rolling rank.
A window of length window_size will traverse the array. The values
that fill this window will be ranked according to the method
parameter. The resulting values will be the rank of the value that is
at the end of the sliding window.
6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 |
# File 'lib/polars/expr.rb', line 6381 def rolling_rank( window_size, method: "average", seed: nil, min_samples: nil, center: false ) Utils.wrap_expr( _rbexpr.rolling_rank( window_size, method, seed, min_samples, center ) ) end |
#rolling_rank_by(by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right") ⇒ Expr
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Compute a rolling rank based on another column.
Given a by column <t_0, t_1, ..., t_n>, then closed: "right"
(the default) means the windows will be:
- (t_0 - window_size, t_0]
- (t_1 - window_size, t_1]
- ...
- (t_n - window_size, t_n]
5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 |
# File 'lib/polars/expr.rb', line 5676 def rolling_rank_by( by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by_rbexpr = Utils.parse_into_expression(by) Utils.wrap_expr( _rbexpr.rolling_rank_by( by_rbexpr, window_size, method, seed, min_samples, closed ) ) end |
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Expr
Compute a rolling skew.
6428 6429 6430 |
# File 'lib/polars/expr.rb', line 6428 def rolling_skew(window_size, bias: true, min_samples: nil, center: false) wrap_expr(_rbexpr.rolling_skew(window_size, bias, min_samples, center)) end |
#rolling_std(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Compute a rolling standard deviation.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 |
# File 'lib/polars/expr.rb', line 6077 def rolling_std( window_size, weights: nil, min_samples: nil, center: false, ddof: 1 ) wrap_expr( _rbexpr.rolling_std( window_size, weights, min_samples, center, ddof ) ) end |
#rolling_std_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Compute a rolling standard deviation based on another column.
5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 |
# File 'lib/polars/expr.rb', line 5239 def rolling_std_by( by, window_size, min_samples: 1, closed: "right", ddof: 1 ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_std_by( by, window_size, min_samples, closed, ddof ) ) end |
#rolling_sum(window_size, weights: nil, min_samples: nil, center: false) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Apply a rolling sum (moving sum) over the values in this array.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 |
# File 'lib/polars/expr.rb', line 5997 def rolling_sum( window_size, weights: nil, min_samples: nil, center: false ) wrap_expr( _rbexpr.rolling_sum( window_size, weights, min_samples, center ) ) end |
#rolling_sum_by(by, window_size, min_samples: 1, closed: "right") ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Apply a rolling sum based on another column.
5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 |
# File 'lib/polars/expr.rb', line 5111 def rolling_sum_by( by, window_size, min_samples: 1, closed: "right" ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_sum_by(by, window_size, min_samples, closed) ) end |
#rolling_var(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Expr
This functionality is experimental and may change without it being considered a breaking change.
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling this method can cache the window size
computation.
Compute a rolling variance.
A window of length window_size will traverse the array. The values that fill
this window will (optionally) be multiplied with the weights given by the
weight vector. The resulting values will be aggregated to their sum.
6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 |
# File 'lib/polars/expr.rb', line 6158 def rolling_var( window_size, weights: nil, min_samples: nil, center: false, ddof: 1 ) wrap_expr( _rbexpr.rolling_var( window_size, weights, min_samples, center, ddof ) ) end |
#rolling_var_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Expr
If you want to compute multiple aggregation statistics over the same dynamic
window, consider using rolling - this method can cache the window size
computation.
Compute a rolling variance based on another column.
5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 |
# File 'lib/polars/expr.rb', line 5374 def rolling_var_by( by, window_size, min_samples: 1, closed: "right", ddof: 1 ) window_size = _prepare_rolling_by_window_args(window_size) by = Utils.parse_into_expression(by) wrap_expr( _rbexpr.rolling_var_by( by, window_size, min_samples, closed, ddof ) ) end |
#round(decimals = 0, mode: "half_to_even") ⇒ Expr
Round underlying floating point data by decimals digits.
1178 1179 1180 |
# File 'lib/polars/expr.rb', line 1178 def round(decimals = 0, mode: "half_to_even") wrap_expr(_rbexpr.round(decimals, mode)) end |
#round_sig_figs(digits) ⇒ Expr
Round to a number of significant figures.
1203 1204 1205 |
# File 'lib/polars/expr.rb', line 1203 def round_sig_figs(digits) wrap_expr(_rbexpr.round_sig_figs(digits)) end |
#sample(fraction: nil, with_replacement: nil, shuffle: false, seed: nil, n: nil) ⇒ Expr
Sample from this expression.
7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 |
# File 'lib/polars/expr.rb', line 7238 def sample( fraction: nil, with_replacement: nil, shuffle: false, seed: nil, n: nil ) # TODO update if with_replacement.nil? warn "The default `with_replacement` for `sample` method will change from `true` to `false` in a future version" with_replacement = true end if !n.nil? && !fraction.nil? raise ArgumentError, "cannot specify both `n` and `fraction`" end if !n.nil? && fraction.nil? n = Utils.parse_into_expression(n) return wrap_expr(_rbexpr.sample_n(n, with_replacement, shuffle, seed)) end if fraction.nil? fraction = 1.0 end fraction = Utils.parse_into_expression(fraction) wrap_expr( _rbexpr.sample_frac(fraction, with_replacement, shuffle, seed) ) end |
#search_sorted(element, side: "any", descending: false) ⇒ Expr
Find indices where elements should be inserted to maintain order.
1819 1820 1821 1822 |
# File 'lib/polars/expr.rb', line 1819 def search_sorted(element, side: "any", descending: false) element = Utils.parse_into_expression(element, str_as_lit: false) wrap_expr(_rbexpr.search_sorted(element, side, descending)) end |
#set_sorted(descending: false) ⇒ Expr
This can lead to incorrect results if this Series is not sorted!!
Use with care!
Flags the expression as 'sorted'.
Enables downstream code to user fast paths for sorted arrays.
7720 7721 7722 |
# File 'lib/polars/expr.rb', line 7720 def set_sorted(descending: false) wrap_expr(_rbexpr.set_sorted_flag(descending)) end |
#shift(n = 1, fill_value: nil) ⇒ Expr
Shift the values by a given period.
1993 1994 1995 1996 1997 1998 1999 |
# File 'lib/polars/expr.rb', line 1993 def shift(n = 1, fill_value: nil) if !fill_value.nil? fill_value = Utils.parse_into_expression(fill_value, str_as_lit: true) end n = Utils.parse_into_expression(n) wrap_expr(_rbexpr.shift(n, fill_value)) end |
#shuffle(seed: nil) ⇒ Expr
Shuffle the contents of this expr.
7201 7202 7203 7204 7205 7206 |
# File 'lib/polars/expr.rb', line 7201 def shuffle(seed: nil) if seed.nil? seed = rand(10000) end wrap_expr(_rbexpr.shuffle(seed)) end |
#sign ⇒ Expr
Compute the element-wise indication of the sign.
6813 6814 6815 |
# File 'lib/polars/expr.rb', line 6813 def sign wrap_expr(_rbexpr.sign) end |
#sin ⇒ Expr
Compute the element-wise value for the sine.
6833 6834 6835 |
# File 'lib/polars/expr.rb', line 6833 def sin wrap_expr(_rbexpr.sin) end |
#sinh ⇒ Expr
Compute the element-wise value for the hyperbolic sine.
6973 6974 6975 |
# File 'lib/polars/expr.rb', line 6973 def sinh wrap_expr(_rbexpr.sinh) end |
#skew(bias: true) ⇒ Expr
Compute the sample skewness of a data set.
For normally distributed data, the skewness should be about zero. For
unimodal continuous distributions, a skewness value greater than zero means
that there is more weight in the right tail of the distribution. The
function skewtest can be used to determine if the skewness value
is close enough to zero, statistically speaking.
6674 6675 6676 |
# File 'lib/polars/expr.rb', line 6674 def skew(bias: true) wrap_expr(_rbexpr.skew(bias)) end |
#slice(offset, length = nil) ⇒ Expr
Get a slice of this expression.
811 812 813 814 815 816 817 818 819 |
# File 'lib/polars/expr.rb', line 811 def slice(offset, length = nil) if !offset.is_a?(Expr) offset = Polars.lit(offset) end if !length.is_a?(Expr) length = Polars.lit(length) end wrap_expr(_rbexpr.slice(offset._rbexpr, length._rbexpr)) end |
#sort(descending: false, nulls_last: false) ⇒ Expr
Sort this column. In projection/ selection context the whole column is sorted.
If used in a group by context, the groups are sorted.
1380 1381 1382 |
# File 'lib/polars/expr.rb', line 1380 def sort(descending: false, nulls_last: false) wrap_expr(_rbexpr.sort_with(descending, nulls_last)) end |
#sort_by(by, *more_by, descending: false, nulls_last: false, multithreaded: true, maintain_order: false) ⇒ Expr
Sort this column by the ordering of another column, or multiple other columns.
In projection/ selection context the whole column is sorted. If used in a group by context, the groups are sorted.
1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 |
# File 'lib/polars/expr.rb', line 1875 def sort_by(by, *more_by, descending: false, nulls_last: false, multithreaded: true, maintain_order: false) by = Utils.parse_into_list_of_expressions(by, *more_by) descending = Utils.extend_bool(descending, by.length, "descending", "by") nulls_last = Utils.extend_bool(nulls_last, by.length, "nulls_last", "by") wrap_expr( _rbexpr.sort_by( by, descending, nulls_last, multithreaded, maintain_order ) ) end |
#sqrt ⇒ Expr
Compute the square root of the elements.
299 300 301 |
# File 'lib/polars/expr.rb', line 299 def sqrt wrap_expr(_rbexpr.sqrt) end |
#std(ddof: 1) ⇒ Expr
Get standard deviation.
2222 2223 2224 |
# File 'lib/polars/expr.rb', line 2222 def std(ddof: 1) wrap_expr(_rbexpr.std(ddof)) end |
#str ⇒ StringExpr
Create an object namespace of all string related methods.
8329 8330 8331 |
# File 'lib/polars/expr.rb', line 8329 def str StringExpr.new(self) end |
#struct ⇒ StructExpr
Create an object namespace of all struct related methods.
8336 8337 8338 |
# File 'lib/polars/expr.rb', line 8336 def struct StructExpr.new(self) end |
#sub(other) ⇒ Expr
Method equivalent of subtraction operator expr - other.
4172 4173 4174 |
# File 'lib/polars/expr.rb', line 4172 def sub(other) self - other end |
#sum ⇒ Expr
Dtypes in \{Int8, UInt8, Int16, UInt16} are cast to Int64 before summing to prevent overflow issues.
Get sum value.
2349 2350 2351 |
# File 'lib/polars/expr.rb', line 2349 def sum wrap_expr(_rbexpr.sum) end |
#tail(n = 10) ⇒ Expr
Get the last n rows.
3623 3624 3625 |
# File 'lib/polars/expr.rb', line 3623 def tail(n = 10) wrap_expr(_rbexpr.tail(n)) end |
#tan ⇒ Expr
Compute the element-wise value for the tangent.
6873 6874 6875 |
# File 'lib/polars/expr.rb', line 6873 def tan wrap_expr(_rbexpr.tan) end |
#tanh ⇒ Expr
Compute the element-wise value for the hyperbolic tangent.
7013 7014 7015 |
# File 'lib/polars/expr.rb', line 7013 def tanh wrap_expr(_rbexpr.tanh) end |
#to_physical ⇒ Expr
Cast to physical representation of the logical dtype.
206 207 208 |
# File 'lib/polars/expr.rb', line 206 def to_physical wrap_expr(_rbexpr.to_physical) end |
#to_s ⇒ String Also known as: inspect
Returns a string representing the Expr.
17 18 19 |
# File 'lib/polars/expr.rb', line 17 def to_s _rbexpr.to_str end |
#top_k(k: 5) ⇒ Expr
Return the k largest elements.
If 'reverse: true` the smallest elements will be given.
1418 1419 1420 1421 |
# File 'lib/polars/expr.rb', line 1418 def top_k(k: 5) k = Utils.parse_into_expression(k) wrap_expr(_rbexpr.top_k(k)) end |
#top_k_by(by, k: 5, reverse: false) ⇒ Expr
Return the elements corresponding to the k largest elements of the by column(s).
Non-null elements are always preferred over null elements, regardless of
the value of reverse. The output is not guaranteed to be in any
particular order, call :func:sort after this function if you wish the
output to be sorted.
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 |
# File 'lib/polars/expr.rb', line 1518 def top_k_by( by, k: 5, reverse: false ) k = Utils.parse_into_expression(k) by = Utils.parse_into_list_of_expressions(by) reverse = Utils.extend_bool(reverse, by.length, "reverse", "by") wrap_expr(_rbexpr.top_k_by(by, k, reverse)) end |
#truediv(other) ⇒ Expr
Method equivalent of float division operator expr / other.
4227 4228 4229 |
# File 'lib/polars/expr.rb', line 4227 def truediv(other) self / other end |
#unique(maintain_order: false) ⇒ Expr
Get unique values of this expression.
2566 2567 2568 2569 2570 2571 2572 |
# File 'lib/polars/expr.rb', line 2566 def unique(maintain_order: false) if maintain_order wrap_expr(_rbexpr.unique_stable) else wrap_expr(_rbexpr.unique) end end |
#unique_counts ⇒ Expr
Return a count of the unique values in the order of appearance.
This method differs from value_counts in that it does not return the
values, only the counts and might be faster
7550 7551 7552 |
# File 'lib/polars/expr.rb', line 7550 def unique_counts wrap_expr(_rbexpr.unique_counts) end |
#upper_bound ⇒ Expr
Calculate the upper bound.
Returns a unit Series with the highest value possible for the dtype of this expression.
6789 6790 6791 |
# File 'lib/polars/expr.rb', line 6789 def upper_bound wrap_expr(_rbexpr.upper_bound) end |
#value_counts(sort: false, parallel: false, name: nil, normalize: false) ⇒ Expr
Count all unique values and create a struct mapping value to count.
7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 |
# File 'lib/polars/expr.rb', line 7503 def value_counts( sort: false, parallel: false, name: nil, normalize: false ) if name.nil? if normalize name = "proportion" else name = "count" end end wrap_expr( _rbexpr.value_counts(sort, parallel, name, normalize) ) end |
#var(ddof: 1) ⇒ Expr
Get variance.
2245 2246 2247 |
# File 'lib/polars/expr.rb', line 2245 def var(ddof: 1) wrap_expr(_rbexpr.var(ddof)) end |
#xor(other) ⇒ Expr
Method equivalent of bitwise exclusive-or operator expr ^ other.
4281 4282 4283 |
# File 'lib/polars/expr.rb', line 4281 def xor(other) self ^ other end |
#|(other) ⇒ Expr
Bitwise OR.
41 42 43 44 |
# File 'lib/polars/expr.rb', line 41 def |(other) other = Utils.parse_into_expression(other) wrap_expr(_rbexpr.or_(other)) end |