Class: Polars::Series
- Inherits:
-
Object
- Object
- Polars::Series
- Defined in:
- lib/polars/series.rb
Overview
A Series represents a single column in a polars DataFrame.
Instance Method Summary collapse
-
#! ⇒ Series
Performs boolean not.
-
#!=(other) ⇒ Series
Not equal.
-
#%(other) ⇒ Series
Returns the modulo.
-
#&(other) ⇒ Series
Bitwise AND.
-
#*(other) ⇒ Series
Performs multiplication.
-
#**(power) ⇒ Series
Raises to the power of exponent.
-
#+(other) ⇒ Series
Performs addition.
-
#-(other) ⇒ Series
Performs subtraction.
-
#-@ ⇒ Series
Performs negation.
-
#/(other) ⇒ Series
Performs division.
-
#<(other) ⇒ Series
Less than.
-
#<=(other) ⇒ Series
Less than or equal.
-
#==(other) ⇒ Series
Equal.
-
#>(other) ⇒ Series
Greater than.
-
#>=(other) ⇒ Series
Greater than or equal.
-
#[](item) ⇒ Object
Returns elements of the Series.
-
#[]=(key, value) ⇒ Object
Sets an element of the Series.
-
#^(other) ⇒ Series
Bitwise XOR.
-
#_hash(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Series
Hash the Series.
-
#abs ⇒ Series
Compute absolute values.
-
#alias(name) ⇒ Series
Return a copy of the Series with a new alias/name.
-
#all?(ignore_nulls: true, &block) ⇒ Boolean
(also: #all)
Check if all boolean values in the column are
true
. -
#any?(ignore_nulls: true, &block) ⇒ Boolean
(also: #any)
Check if any boolean value in the column is
true
. -
#append(other, append_chunks: true) ⇒ Series
Append a Series to this one.
-
#approx_n_unique ⇒ Object
Approximate count of unique values.
-
#arccos ⇒ Series
(also: #acos)
Compute the element-wise value for the inverse cosine.
-
#arccosh ⇒ Series
(also: #acosh)
Compute the element-wise value for the inverse hyperbolic cosine.
-
#arcsin ⇒ Series
(also: #asin)
Compute the element-wise value for the inverse sine.
-
#arcsinh ⇒ Series
(also: #asinh)
Compute the element-wise value for the inverse hyperbolic sine.
-
#arctan ⇒ Series
(also: #atan)
Compute the element-wise value for the inverse tangent.
-
#arctanh ⇒ Series
(also: #atanh)
Compute the element-wise value for the inverse hyperbolic tangent.
-
#arg_max ⇒ Integer?
Get the index of the maximal value.
-
#arg_min ⇒ Integer?
Get the index of the minimal value.
-
#arg_sort(reverse: false, nulls_last: false) ⇒ Series
(also: #argsort)
Get the index values that would sort this Series.
-
#arg_true ⇒ Series
Get index values where Boolean Series evaluate
true
. -
#arg_unique ⇒ Series
Get unique index as Series.
-
#arr ⇒ ArrayNameSpace
Create an object namespace of all array related methods.
-
#backward_fill(limit: nil) ⇒ Series
Fill missing values with the next non-null value.
-
#bin ⇒ BinaryNameSpace
Create an object namespace of all binary related methods.
-
#bitwise_and ⇒ Object
Perform an aggregation of bitwise ANDs.
-
#bitwise_count_ones ⇒ Series
Evaluate the number of set bits.
-
#bitwise_count_zeros ⇒ Series
Evaluate the number of unset bits.
-
#bitwise_leading_ones ⇒ Series
Evaluate the number most-significant set bits before seeing an unset bit.
-
#bitwise_leading_zeros ⇒ Series
Evaluate the number most-significant unset bits before seeing a set bit.
-
#bitwise_or ⇒ Object
Perform an aggregation of bitwise ORs.
-
#bitwise_trailing_ones ⇒ Series
Evaluate the number least-significant set bits before seeing an unset bit.
-
#bitwise_trailing_zeros ⇒ Series
Evaluate the number least-significant unset bits before seeing a set bit.
-
#bitwise_xor ⇒ Object
Perform an aggregation of bitwise XORs.
-
#bottom_k(k: 5) ⇒ Boolean
Return the
k
smallest elements. -
#bottom_k_by(by, k: 5, reverse: false) ⇒ Series
Return the
k
smallest elements of theby
column. -
#cast(dtype, strict: true) ⇒ Series
Cast between data types.
-
#cat ⇒ CatNameSpace
Create an object namespace of all categorical related methods.
-
#cbrt ⇒ Series
Compute the cube root of the elements.
-
#ceil ⇒ Series
Rounds up to the nearest integer value.
-
#chunk_lengths ⇒ Array
Get the length of each individual chunk.
-
#clear(n: 0) ⇒ Series
(also: #cleared)
Create an empty copy of the current Series.
-
#clip(min_val = nil, max_val = nil) ⇒ Series
Clip (limit) the values in an array to a
min
andmax
boundary. -
#clip_max(max_val) ⇒ Series
Clip (limit) the values in an array to a
max
boundary. -
#clip_min(min_val) ⇒ Series
Clip (limit) the values in an array to a
min
boundary. -
#cos ⇒ Series
Compute the element-wise value for the cosine.
-
#cosh ⇒ Series
Compute the element-wise value for the hyperbolic cosine.
-
#cot ⇒ Series
Compute the element-wise value for the cotangent.
-
#count ⇒ Integer
Return the number of elements in the Series.
-
#cum_count(reverse: false) ⇒ Series
Return the cumulative count of the non-null values in the column.
-
#cum_max(reverse: false) ⇒ Series
(also: #cummax)
Get an array with the cumulative max computed at every element.
-
#cum_min(reverse: false) ⇒ Series
(also: #cummin)
Get an array with the cumulative min computed at every element.
-
#cum_prod(reverse: false) ⇒ Series
(also: #cumprod)
Get an array with the cumulative product computed at every element.
-
#cum_sum(reverse: false) ⇒ Series
(also: #cumsum)
Get an array with the cumulative sum computed at every element.
-
#cumulative_eval(expr, min_periods: 1) ⇒ Series
Run an expression over a sliding window that increases
1
slot every iteration. -
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories.
-
#describe ⇒ DataFrame
Quick summary statistics of a series.
-
#diff(n: 1, null_behavior: "ignore") ⇒ Series
Calculate the n-th discrete difference.
-
#dot(other) ⇒ Numeric
Compute the dot/inner product between two Series.
-
#drop_nans ⇒ Series
Drop NaN values.
-
#drop_nulls ⇒ Series
Create a new Series that copies data from this Series without null values.
-
#dt ⇒ DateTimeNameSpace
Create an object namespace of all datetime related methods.
-
#dtype ⇒ Symbol
Get the data type of this Series.
-
#each ⇒ Object
Returns an enumerator.
-
#entropy(base: Math::E, normalize: false) ⇒ Float?
Computes the entropy.
-
#eq(other) ⇒ Series
Method equivalent of operator expression
series == other
. -
#eq_missing(other) ⇒ Object
Method equivalent of equality operator
series == other
wherenil == nil
. -
#equals(other, strict: false, check_names: false, null_equal: false) ⇒ Boolean
(also: #series_equal)
Check if series is equal with another Series.
-
#estimated_size(unit = "b") ⇒ Numeric
Return an estimation of the total (heap) allocated size of the Series.
-
#ewm_mean(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving average.
-
#ewm_mean_by(by, half_life:) ⇒ Series
Compute time-based exponentially weighted moving average.
-
#ewm_std(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving standard deviation.
-
#ewm_var(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving variance.
-
#exp ⇒ Series
Compute the exponential, element-wise.
-
#explode ⇒ Series
Explode a list or utf8 Series.
-
#extend_constant(value, n) ⇒ Series
Extend the Series with given number of values.
-
#fill_nan(fill_value) ⇒ Series
Fill floating point NaN value with a fill value.
-
#fill_null(value = nil, strategy: nil, limit: nil) ⇒ Series
Fill null values using the specified value or strategy.
-
#filter(predicate) ⇒ Series
Filter elements by a boolean mask.
-
#first ⇒ Object
Get the first element of the Series.
-
#flags ⇒ Hash
Get flags that are set on the Series.
-
#floor ⇒ Series
Rounds down to the nearest integer value.
-
#forward_fill(limit: nil) ⇒ Series
Fill missing values with the next non-null value.
-
#gather(indices) ⇒ Series
(also: #take)
Take values by index.
-
#gather_every(n, offset = 0) ⇒ Series
(also: #take_every)
Take every nth value in the Series and return as new Series.
-
#ge(other) ⇒ Series
Method equivalent of operator expression
series >= other
. -
#get_chunks ⇒ Array
Get the chunks of this Series as a list of Series.
-
#gt(other) ⇒ Series
Method equivalent of operator expression
series > other
. -
#has_nulls ⇒ Boolean
(also: #has_validity)
Return
true
if the Series has a validity bitmask. -
#head(n = 10) ⇒ Series
Get the first
n
rows. -
#hist(bins: nil, bin_count: nil, include_category: true, include_breakpoint: true) ⇒ DataFrame
Bin values into buckets and count their occurrences.
-
#implode ⇒ Series
Aggregate values into a list.
-
#index_of(element) ⇒ Object
Get the index of the first occurrence of a value, or
nil
if it's not found. -
#initialize(name = nil, values = nil, dtype: nil, strict: true, nan_to_null: false, dtype_if_empty: nil) ⇒ Series
constructor
Create a new Series.
-
#interpolate(method: "linear") ⇒ Series
Interpolate intermediate values.
-
#interpolate_by(by) ⇒ Series
Fill null values using interpolation based on another column.
-
#is_between(lower_bound, upper_bound, closed: "both") ⇒ Series
Get a boolean mask of the values that are between the given lower/upper bounds.
-
#is_boolean ⇒ Boolean
(also: #boolean?, #is_bool, #bool?)
Check if this Series is a Boolean.
-
#is_close(other, abs_tol: 0.0, rel_tol: 1e-09, nans_equal: false) ⇒ Series
Get a boolean mask of the values being close to the other values.
-
#is_datelike ⇒ Boolean
(also: #datelike?, #is_temporal, #temporal?)
Check if this Series datatype is datelike.
-
#is_duplicated ⇒ Series
Get mask of all duplicated values.
-
#is_empty ⇒ Boolean
(also: #empty?)
Check if the Series is empty.
-
#is_finite ⇒ Series
Returns a boolean Series indicating which values are finite.
-
#is_first_distinct ⇒ Series
(also: #is_first)
Get a mask of the first unique value.
-
#is_float ⇒ Boolean
(also: #float?)
Check if this Series has floating point numbers.
-
#is_in(other, nulls_equal: false) ⇒ Series
(also: #in?)
Check if elements of this Series are in the other Series.
-
#is_infinite ⇒ Series
Returns a boolean Series indicating which values are infinite.
-
#is_last_distinct ⇒ Series
Return a boolean mask indicating the last occurrence of each distinct value.
-
#is_nan ⇒ Series
Returns a boolean Series indicating which values are NaN.
-
#is_not_nan ⇒ Series
Returns a boolean Series indicating which values are not NaN.
-
#is_not_null ⇒ Series
Returns a boolean Series indicating which values are not null.
-
#is_null ⇒ Series
Returns a boolean Series indicating which values are null.
-
#is_numeric ⇒ Boolean
(also: #numeric?)
Check if this Series datatype is numeric.
-
#is_sorted(descending: false, nulls_last: false) ⇒ Boolean
(also: #sorted?)
Check if the Series is sorted.
-
#is_unique ⇒ Series
Get mask of all unique values.
-
#is_utf8 ⇒ Boolean
(also: #utf8?)
Check if this Series datatype is a Utf8.
-
#item(index = nil) ⇒ Object
Return the Series as a scalar, or return the element at the given index.
-
#kurtosis(fisher: true, bias: true) ⇒ Float?
Compute the kurtosis (Fisher or Pearson) of a dataset.
-
#last ⇒ Object
Get the last element of the Series.
-
#le(other) ⇒ Series
Method equivalent of operator expression
series <= other
. -
#len ⇒ Integer
(also: #length, #size)
Return the number of elements in the Series.
-
#limit(n = 10) ⇒ Series
Get the first
n
rows. -
#list ⇒ ListNameSpace
Create an object namespace of all list related methods.
-
#log(base = Math::E) ⇒ Series
Compute the logarithm to a given base.
-
#log10 ⇒ Series
Compute the base 10 logarithm of the input array, element-wise.
-
#log1p ⇒ Series
Compute the natural logarithm of the input array plus one, element-wise.
-
#lower_bound ⇒ Series
Return the lower bound of this Series' dtype as a unit Series.
-
#lt(other) ⇒ Series
Method equivalent of operator expression
series < other
. -
#map_elements(return_dtype: nil, skip_nulls: true, &func) ⇒ Series
(also: #map, #apply)
Apply a custom/user-defined function (UDF) over elements in this Series and return a new Series.
-
#max ⇒ Object
Get the maximum value in this Series.
-
#mean ⇒ Float?
Reduce this Series to the mean value.
-
#median ⇒ Float?
Get the median of this Series.
-
#min ⇒ Object
Get the minimal value in this Series.
-
#mode ⇒ Series
Compute the most occurring value(s).
-
#n_chunks ⇒ Integer
Get the number of chunks that this Series contains.
-
#n_unique ⇒ Integer
Count the number of unique values in this Series.
-
#name ⇒ String
Get the name of this Series.
-
#nan_max ⇒ Object
Get maximum value, but propagate/poison encountered NaN values.
-
#nan_min ⇒ Object
Get minimum value, but propagate/poison encountered NaN values.
-
#ne(other) ⇒ Series
Method equivalent of operator expression
series != other
. -
#ne_missing(other) ⇒ Object
Method equivalent of equality operator
series != other
wherenil == nil
. -
#new_from_index(index, length) ⇒ Series
Create a new Series filled with values from the given index.
-
#none?(&block) ⇒ Boolean
(also: #none)
Check if all boolean values in the column are
false
. -
#not_ ⇒ Series
Negate a boolean Series.
-
#null_count ⇒ Integer
Count the null values in this Series.
-
#pct_change(n: 1) ⇒ Series
Computes percentage change between values.
-
#peak_max ⇒ Series
Get a boolean mask of the local maximum peaks.
-
#peak_min ⇒ Series
Get a boolean mask of the local minimum peaks.
-
#pow(exponent) ⇒ Series
Raise to the power of the given exponent.
-
#product ⇒ Numeric
Reduce this Series to the product value.
-
#qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories based on their quantiles.
-
#quantile(quantile, interpolation: "nearest") ⇒ Float?
Get the quantile value of this Series.
-
#rank(method: "average", reverse: false, seed: nil) ⇒ Series
Assign ranks to data, dealing with ties appropriately.
-
#rechunk(in_place: false) ⇒ Series
Create a single chunk of memory for this Series.
-
#reinterpret(signed: true) ⇒ Series
Reinterpret the underlying bits as a signed/unsigned integer.
-
#rename(name, in_place: false) ⇒ Series
Rename this Series.
-
#repeat_by(by) ⇒ Object
Repeat the elements in this Series as specified in the given expression.
-
#replace(old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace values by different values.
-
#replace_strict(old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace all values by different values.
-
#reshape(dims) ⇒ Series
Reshape this Series to a flat Series or a Series of Lists.
-
#reverse ⇒ Series
Return Series in reverse order.
-
#rle ⇒ Series
Get the lengths of runs of identical values.
-
#rle_id ⇒ Series
Map values to run IDs.
-
#rolling_kurtosis(window_size, fisher: true, bias: true, min_samples: nil, center: false) ⇒ Series
Compute a rolling kurtosis.
-
#rolling_max(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Apply a rolling max (moving max) over the values in this array.
-
#rolling_mean(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Apply a rolling mean (moving mean) over the values in this array.
-
#rolling_median(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Compute a rolling median.
-
#rolling_min(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Apply a rolling min (moving min) over the values in this array.
-
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_periods: nil, center: false) ⇒ Series
Compute a rolling quantile.
-
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Series
Compute a rolling skew.
-
#rolling_std(window_size, weights: nil, min_periods: nil, center: false, ddof: 1) ⇒ Series
Compute a rolling std dev.
-
#rolling_sum(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Apply a rolling sum (moving sum) over the values in this array.
-
#rolling_var(window_size, weights: nil, min_periods: nil, center: false, ddof: 1) ⇒ Series
Compute a rolling variance.
-
#round(decimals = 0) ⇒ Series
Round underlying floating point data by
decimals
digits. -
#round_sig_figs(digits) ⇒ Series
Round to a number of significant figures.
-
#sample(n: nil, frac: nil, with_replacement: false, shuffle: false, seed: nil) ⇒ Series
Sample from this Series.
-
#scatter(idx, value) ⇒ Series
(also: #set_at_idx)
Set values at the index locations.
-
#search_sorted(element, side: "any", descending: false) ⇒ Integer
Find indices where elements should be inserted to maintain order.
-
#set(filter, value) ⇒ Series
Set masked values.
-
#set_sorted(reverse: false) ⇒ Series
Flags the Series as sorted.
-
#shape ⇒ Array
Shape of this Series.
-
#shift(periods = 1) ⇒ Series
Shift the values by a given period.
-
#shift_and_fill(periods, fill_value) ⇒ Series
Shift the values by a given period and fill the resulting null values.
-
#shrink_dtype ⇒ Series
Shrink numeric columns to the minimal required datatype.
-
#shrink_to_fit(in_place: false) ⇒ Series
Shrink Series memory usage.
-
#shuffle(seed: nil) ⇒ Series
Shuffle the contents of this Series.
-
#sign ⇒ Series
Compute the element-wise indication of the sign.
-
#sin ⇒ Series
Compute the element-wise value for the sine.
-
#sinh ⇒ Series
Compute the element-wise value for the hyperbolic sine.
-
#skew(bias: true) ⇒ Float?
Compute the sample skewness of a data set.
-
#slice(offset, length = nil) ⇒ Series
Get a slice of this Series.
-
#sort(reverse: false, nulls_last: false, multithreaded: true, in_place: false) ⇒ Series
Sort this Series.
-
#sqrt ⇒ Series
Compute the square root of the elements.
-
#std(ddof: 1) ⇒ Float?
Get the standard deviation of this Series.
-
#str ⇒ StringNameSpace
Create an object namespace of all string related methods.
-
#struct ⇒ StructNameSpace
Create an object namespace of all struct related methods.
-
#sum ⇒ Numeric
Reduce this Series to the sum value.
-
#tail(n = 10) ⇒ Series
Get the last
n
rows. -
#tan ⇒ Series
Compute the element-wise value for the tangent.
-
#tanh ⇒ Series
Compute the element-wise value for the hyperbolic tangent.
-
#to_a ⇒ Array
Convert this Series to a Ruby Array.
-
#to_dummies(separator: "_", drop_first: false, drop_nulls: false) ⇒ DataFrame
Get dummy variables.
-
#to_frame(name = nil) ⇒ DataFrame
Cast this Series to a DataFrame.
-
#to_numo ⇒ Numo::NArray
Convert this Series to a Numo array.
-
#to_physical ⇒ Series
Cast to physical representation of the logical dtype.
-
#to_s ⇒ String
(also: #inspect)
Returns a string representing the Series.
-
#top_k(k: 5) ⇒ Boolean
Return the
k
largest elements. -
#top_k_by(by, k: 5, reverse: false) ⇒ Series
Return the
k
largest elements of theby
column. -
#unique(maintain_order: false) ⇒ Series
(also: #uniq)
Get unique elements in series.
-
#unique_counts ⇒ Series
Return a count of the unique values in the order of appearance.
-
#upper_bound ⇒ Series
Return the upper bound of this Series' dtype as a unit Series.
-
#value_counts(sort: false, parallel: false, name: nil, normalize: false) ⇒ DataFrame
Count the unique values in a Series.
-
#var(ddof: 1) ⇒ Float?
Get variance of this Series.
-
#zip_with(mask, other) ⇒ Series
Take values from self or other based on the given mask.
-
#|(other) ⇒ Series
Bitwise OR.
Constructor Details
#initialize(name = nil, values = nil, dtype: nil, strict: true, nan_to_null: false, dtype_if_empty: nil) ⇒ Series
Create a new Series.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/polars/series.rb', line 35 def initialize(name = nil, values = nil, dtype: nil, strict: true, nan_to_null: false, dtype_if_empty: nil) # Handle case where values are passed as the first argument if !name.nil? && !name.is_a?(::String) if values.nil? values = name name = nil else raise ArgumentError, "Series name must be a string." end end name = "" if name.nil? # TODO improve if values.is_a?(Range) && values.begin.is_a?(::String) values = values.to_a end if values.nil? self._s = sequence_to_rbseries(name, [], dtype: dtype, dtype_if_empty: dtype_if_empty) elsif values.is_a?(Series) self._s = series_to_rbseries(name, values) elsif values.is_a?(Range) self._s = Polars.arange( values.first, values.last + (values.exclude_end? ? 0 : 1), step: 1, eager: true, dtype: dtype ) .rename(name, in_place: true) ._s elsif values.is_a?(::Array) self._s = sequence_to_rbseries(name, values, dtype: dtype, strict: strict, dtype_if_empty: dtype_if_empty) elsif defined?(Numo::NArray) && values.is_a?(Numo::NArray) self._s = numo_to_rbseries(name, values, strict: strict, nan_to_null: nan_to_null) if !dtype.nil? self._s = self.cast(dtype, strict: true)._s end else raise ArgumentError, "Series constructor called with unsupported type; got #{values.class.name}" end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Polars::ExprDispatch
Instance Method Details
#! ⇒ Series
Performs boolean not.
408 409 410 411 412 413 |
# File 'lib/polars/series.rb', line 408 def ! if dtype == Boolean return Utils.wrap_s(_s.not_) end raise NotImplementedError end |
#!=(other) ⇒ Series
Not equal.
191 192 193 |
# File 'lib/polars/series.rb', line 191 def !=(other) _comp(other, :neq) end |
#%(other) ⇒ Series
Returns the modulo.
388 389 390 391 392 393 |
# File 'lib/polars/series.rb', line 388 def %(other) if is_datelike raise ArgumentError, "first cast to integer before applying modulo on datelike dtypes" end _arithmetic(other, :rem) end |
#&(other) ⇒ Series
Bitwise AND.
154 155 156 157 158 159 |
# File 'lib/polars/series.rb', line 154 def &(other) if !other.is_a?(Series) other = Series.new([other]) end Utils.wrap_s(_s.bitand(other._s)) end |
#*(other) ⇒ Series
Performs multiplication.
360 361 362 363 364 365 366 367 368 |
# File 'lib/polars/series.rb', line 360 def *(other) if is_temporal raise ArgumentError, "first cast to integer before multiplying datelike dtypes" elsif other.is_a?(DataFrame) other * self else _arithmetic(other, :mul) end end |
#**(power) ⇒ Series
Raises to the power of exponent.
398 399 400 401 402 403 |
# File 'lib/polars/series.rb', line 398 def **(power) if is_datelike raise ArgumentError, "first cast to integer before raising datelike dtypes to a power" end to_frame.select(Polars.col(name).pow(power)).to_series end |
#+(other) ⇒ Series
Performs addition.
346 347 348 |
# File 'lib/polars/series.rb', line 346 def +(other) _arithmetic(other, :add) end |
#-(other) ⇒ Series
Performs subtraction.
353 354 355 |
# File 'lib/polars/series.rb', line 353 def -(other) _arithmetic(other, :sub) end |
#-@ ⇒ Series
Performs negation.
418 419 420 |
# File 'lib/polars/series.rb', line 418 def -@ 0 - self end |
#/(other) ⇒ Series
Performs division.
373 374 375 376 377 378 379 380 381 382 383 |
# File 'lib/polars/series.rb', line 373 def /(other) if is_temporal raise ArgumentError, "first cast to integer before dividing datelike dtypes" end if is_float return _arithmetic(other, :div) end cast(Float64) / other end |
#<(other) ⇒ Series
Less than.
205 206 207 |
# File 'lib/polars/series.rb', line 205 def <(other) _comp(other, :lt) end |
#<=(other) ⇒ Series
Less than or equal.
219 220 221 |
# File 'lib/polars/series.rb', line 219 def <=(other) _comp(other, :lt_eq) end |
#==(other) ⇒ Series
Equal.
184 185 186 |
# File 'lib/polars/series.rb', line 184 def ==(other) _comp(other, :eq) end |
#>(other) ⇒ Series
Greater than.
198 199 200 |
# File 'lib/polars/series.rb', line 198 def >(other) _comp(other, :gt) end |
#>=(other) ⇒ Series
Greater than or equal.
212 213 214 |
# File 'lib/polars/series.rb', line 212 def >=(other) _comp(other, :gt_eq) end |
#[](item) ⇒ Object
Returns elements of the Series.
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 |
# File 'lib/polars/series.rb', line 436 def [](item) if item.is_a?(Series) && [UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64].include?(item.dtype) return Utils.wrap_s(_s.take_with_series(_pos_idxs(item)._s)) end if item.is_a?(Series) && item.bool? return filter(item) end if item.is_a?(Integer) if item < 0 item = len + item end return _s.get_index(item) end if item.is_a?(Range) return Slice.new(self).apply(item) end if Utils.is_int_sequence(item) return Utils.wrap_s(_s.take_with_series(_pos_idxs(Series.new("", item))._s)) end raise ArgumentError, "Cannot get item of type: #{item.class.name}" end |
#[]=(key, value) ⇒ Object
Sets an element of the Series.
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 |
# File 'lib/polars/series.rb', line 467 def []=(key, value) if value.is_a?(::Array) if is_numeric || is_datelike scatter(key, value) return end raise ArgumentError, "cannot set Series of dtype: #{dtype} with list/tuple as value; use a scalar value" end if key.is_a?(Series) if key.dtype == Boolean self._s = set(key, value)._s elsif key.dtype == UInt64 self._s = scatter(key.cast(UInt32), value)._s elsif key.dtype == UInt32 self._s = scatter(key, value)._s else raise Todo end elsif key.is_a?(::Array) s = Utils.wrap_s(sequence_to_rbseries("", key, dtype: UInt32)) self[s] = value elsif key.is_a?(Range) s = Series.new("", key, dtype: UInt32) self[s] = value elsif key.is_a?(Integer) self[[key]] = value else raise ArgumentError, "cannot use #{key} for indexing" end end |
#^(other) ⇒ Series
Bitwise XOR.
174 175 176 177 178 179 |
# File 'lib/polars/series.rb', line 174 def ^(other) if !other.is_a?(Series) other = Series.new([other]) end Utils.wrap_s(_s.bitxor(other._s)) end |
#_hash(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Series
Hash the Series.
The hash value is of type :u64
.
4409 4410 4411 |
# File 'lib/polars/series.rb', line 4409 def _hash(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) super end |
#abs ⇒ Series
Compute absolute values.
4498 4499 4500 |
# File 'lib/polars/series.rb', line 4498 def abs super end |
#alias(name) ⇒ Series
Return a copy of the Series with a new alias/name.
1542 1543 1544 1545 1546 |
# File 'lib/polars/series.rb', line 1542 def alias(name) s = dup s._s.rename(name) s end |
#all?(ignore_nulls: true, &block) ⇒ Boolean Also known as: all
Check if all boolean values in the column are true
.
638 639 640 641 642 643 644 |
# File 'lib/polars/series.rb', line 638 def all?(ignore_nulls: true, &block) if block_given? apply(return_dtype: Boolean, skip_nulls: ignore_nulls, &block).all? else _s.all(ignore_nulls) end end |
#any?(ignore_nulls: true, &block) ⇒ Boolean Also known as: any
Check if any boolean value in the column is true
.
614 615 616 617 618 619 620 |
# File 'lib/polars/series.rb', line 614 def any?(ignore_nulls: true, &block) if block_given? apply(return_dtype: Boolean, skip_nulls: ignore_nulls, &block).any? else _s.any(ignore_nulls) end end |
#append(other, append_chunks: true) ⇒ Series
Append a Series to this one.
1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 |
# File 'lib/polars/series.rb', line 1799 def append(other, append_chunks: true) begin if append_chunks _s.append(other._s) else _s.extend(other._s) end rescue => e if e. == "Already mutably borrowed" append(other.clone, append_chunks) else raise e end end self end |
#approx_n_unique ⇒ Object
Approximate count of unique values.
This is done using the HyperLogLog++ algorithm for cardinality estimation.
5443 5444 5445 |
# File 'lib/polars/series.rb', line 5443 def approx_n_unique _s.approx_n_unique end |
#arccos ⇒ Series Also known as: acos
Compute the element-wise value for the inverse cosine.
3563 3564 3565 |
# File 'lib/polars/series.rb', line 3563 def arccos super end |
#arccosh ⇒ Series Also known as: acosh
Compute the element-wise value for the inverse hyperbolic cosine.
3624 3625 3626 |
# File 'lib/polars/series.rb', line 3624 def arccosh super end |
#arcsin ⇒ Series Also known as: asin
Compute the element-wise value for the inverse sine.
3543 3544 3545 |
# File 'lib/polars/series.rb', line 3543 def arcsin super end |
#arcsinh ⇒ Series Also known as: asinh
Compute the element-wise value for the inverse hyperbolic sine.
3603 3604 3605 |
# File 'lib/polars/series.rb', line 3603 def arcsinh super end |
#arctan ⇒ Series Also known as: atan
Compute the element-wise value for the inverse tangent.
3583 3584 3585 |
# File 'lib/polars/series.rb', line 3583 def arctan super end |
#arctanh ⇒ Series Also known as: atanh
Compute the element-wise value for the inverse hyperbolic tangent.
3648 3649 3650 |
# File 'lib/polars/series.rb', line 3648 def arctanh super end |
#arg_max ⇒ Integer?
Get the index of the maximal value.
2170 2171 2172 |
# File 'lib/polars/series.rb', line 2170 def arg_max _s.arg_max end |
#arg_min ⇒ Integer?
Get the index of the minimal value.
2158 2159 2160 |
# File 'lib/polars/series.rb', line 2158 def arg_min _s.arg_min end |
#arg_sort(reverse: false, nulls_last: false) ⇒ Series Also known as: argsort
Get the index values that would sort this Series.
2126 2127 2128 |
# File 'lib/polars/series.rb', line 2126 def arg_sort(reverse: false, nulls_last: false) super end |
#arg_true ⇒ Series
Get index values where Boolean Series evaluate true
.
2572 2573 2574 |
# File 'lib/polars/series.rb', line 2572 def arg_true Polars.arg_where(self, eager: true) end |
#arg_unique ⇒ Series
Get unique index as Series.
2146 2147 2148 |
# File 'lib/polars/series.rb', line 2146 def arg_unique super end |
#arr ⇒ ArrayNameSpace
Create an object namespace of all array related methods.
5457 5458 5459 |
# File 'lib/polars/series.rb', line 5457 def arr ArrayNameSpace.new(self) end |
#backward_fill(limit: nil) ⇒ Series
Fill missing values with the next non-null value.
This is an alias of .fill_null(strategy: "backward")
.
3287 3288 3289 |
# File 'lib/polars/series.rb', line 3287 def backward_fill(limit: nil) fill_null(strategy: "backward", limit: limit) end |
#bin ⇒ BinaryNameSpace
Create an object namespace of all binary related methods.
5464 5465 5466 |
# File 'lib/polars/series.rb', line 5464 def bin BinaryNameSpace.new(self) end |
#bitwise_and ⇒ Object
Perform an aggregation of bitwise ANDs.
5402 5403 5404 |
# File 'lib/polars/series.rb', line 5402 def bitwise_and _s.bitwise_and end |
#bitwise_count_ones ⇒ Series
Evaluate the number of set bits.
5360 5361 5362 |
# File 'lib/polars/series.rb', line 5360 def bitwise_count_ones super end |
#bitwise_count_zeros ⇒ Series
Evaluate the number of unset bits.
5367 5368 5369 |
# File 'lib/polars/series.rb', line 5367 def bitwise_count_zeros super end |
#bitwise_leading_ones ⇒ Series
Evaluate the number most-significant set bits before seeing an unset bit.
5374 5375 5376 |
# File 'lib/polars/series.rb', line 5374 def bitwise_leading_ones super end |
#bitwise_leading_zeros ⇒ Series
Evaluate the number most-significant unset bits before seeing a set bit.
5381 5382 5383 |
# File 'lib/polars/series.rb', line 5381 def bitwise_leading_zeros super end |
#bitwise_or ⇒ Object
Perform an aggregation of bitwise ORs.
5409 5410 5411 |
# File 'lib/polars/series.rb', line 5409 def bitwise_or _s.bitwise_or end |
#bitwise_trailing_ones ⇒ Series
Evaluate the number least-significant set bits before seeing an unset bit.
5388 5389 5390 |
# File 'lib/polars/series.rb', line 5388 def bitwise_trailing_ones super end |
#bitwise_trailing_zeros ⇒ Series
Evaluate the number least-significant unset bits before seeing a set bit.
5395 5396 5397 |
# File 'lib/polars/series.rb', line 5395 def bitwise_trailing_zeros super end |
#bitwise_xor ⇒ Object
Perform an aggregation of bitwise XORs.
5416 5417 5418 |
# File 'lib/polars/series.rb', line 5416 def bitwise_xor _s.bitwise_xor end |
#bottom_k(k: 5) ⇒ Boolean
Return the k
smallest elements.
2062 2063 2064 |
# File 'lib/polars/series.rb', line 2062 def bottom_k(k: 5) super end |
#bottom_k_by(by, k: 5, reverse: false) ⇒ Series
Return the k
smallest elements of the by
column.
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 sort
after this function if you wish the
output to be sorted.
2096 2097 2098 2099 2100 2101 2102 |
# File 'lib/polars/series.rb', line 2096 def bottom_k_by( by, k: 5, reverse: false ) super end |
#cast(dtype, strict: true) ⇒ Series
Cast between data types.
2755 2756 2757 |
# File 'lib/polars/series.rb', line 2755 def cast(dtype, strict: true) super end |
#cat ⇒ CatNameSpace
Create an object namespace of all categorical related methods.
5471 5472 5473 |
# File 'lib/polars/series.rb', line 5471 def cat CatNameSpace.new(self) end |
#cbrt ⇒ Series
Compute the cube root of the elements.
595 596 597 |
# File 'lib/polars/series.rb', line 595 def cbrt super end |
#ceil ⇒ Series
Rounds up to the nearest integer value.
Only works on floating point Series.
3341 3342 3343 |
# File 'lib/polars/series.rb', line 3341 def ceil super end |
#chunk_lengths ⇒ Array
Get the length of each individual chunk.
1584 1585 1586 |
# File 'lib/polars/series.rb', line 1584 def chunk_lengths _s.chunk_lengths end |
#clear(n: 0) ⇒ Series Also known as: cleared
Create an empty copy of the current Series.
The copy has identical name/dtype but no data.
3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 |
# File 'lib/polars/series.rb', line 3188 def clear(n: 0) if n < 0 msg = "`n` should be greater than or equal to 0, got #{n}" raise ArgumentError, msg end # faster path if n == 0 return self.class._from_rbseries(_s.clear) end s = len > 0 ? self.class.new(name, [], dtype: dtype) : clone n > 0 ? s.extend_constant(nil, n) : s end |
#clip(min_val = nil, max_val = nil) ⇒ Series
Clip (limit) the values in an array to a min
and max
boundary.
Only works for numerical types.
If you want to clip other dtypes, consider writing a "when, then, otherwise" expression. See Functions#when for more information.
4740 4741 4742 |
# File 'lib/polars/series.rb', line 4740 def clip(min_val = nil, max_val = nil) super end |
#clip_max(max_val) ⇒ Series
Clip (limit) the values in an array to a max
boundary.
Only works for numerical types.
If you want to clip other dtypes, consider writing a "when, then, otherwise" expression. See Functions#when for more information.
4770 4771 4772 |
# File 'lib/polars/series.rb', line 4770 def clip_max(max_val) super end |
#clip_min(min_val) ⇒ Series
Clip (limit) the values in an array to a min
boundary.
Only works for numerical types.
If you want to clip other dtypes, consider writing a "when, then, otherwise" expression. See Functions#when for more information.
4755 4756 4757 |
# File 'lib/polars/series.rb', line 4755 def clip_min(min_val) super end |
#cos ⇒ Series
Compute the element-wise value for the cosine.
3486 3487 3488 |
# File 'lib/polars/series.rb', line 3486 def cos super end |
#cosh ⇒ Series
Compute the element-wise value for the hyperbolic cosine.
3687 3688 3689 |
# File 'lib/polars/series.rb', line 3687 def cosh super end |
#cot ⇒ Series
Compute the element-wise value for the cotangent.
3524 3525 3526 |
# File 'lib/polars/series.rb', line 3524 def cot super end |
#count ⇒ Integer
Return the number of elements in the Series.
2717 2718 2719 |
# File 'lib/polars/series.rb', line 2717 def count len - null_count end |
#cum_count(reverse: false) ⇒ Series
Return the cumulative count of the non-null values in the column.
1653 1654 1655 |
# File 'lib/polars/series.rb', line 1653 def cum_count(reverse: false) super end |
#cum_max(reverse: false) ⇒ Series Also known as: cummax
Get an array with the cumulative max computed at every element.
1698 1699 1700 |
# File 'lib/polars/series.rb', line 1698 def cum_max(reverse: false) super end |
#cum_min(reverse: false) ⇒ Series Also known as: cummin
Get an array with the cumulative min computed at every element.
1675 1676 1677 |
# File 'lib/polars/series.rb', line 1675 def cum_min(reverse: false) super end |
#cum_prod(reverse: false) ⇒ Series Also known as: cumprod
Dtypes :i8
, :u8
, :i16
, and :u16
are cast to
:i64
before multiplying to prevent overflow issues.
Get an array with the cumulative product computed at every element.
1725 1726 1727 |
# File 'lib/polars/series.rb', line 1725 def cum_prod(reverse: false) super end |
#cum_sum(reverse: false) ⇒ Series Also known as: cumsum
Dtypes :i8
, :u8
, :i16
, and :u16
are cast to
:i64
before summing to prevent overflow issues.
Get an array with the cumulative sum computed at every element.
1629 1630 1631 |
# File 'lib/polars/series.rb', line 1629 def cum_sum(reverse: false) super end |
#cumulative_eval(expr, min_periods: 1) ⇒ Series
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.
1528 1529 1530 |
# File 'lib/polars/series.rb', line 1528 def cumulative_eval(expr, min_periods: 1) super end |
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories.
1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 |
# File 'lib/polars/series.rb', line 1187 def cut(breaks, labels: nil, left_closed: false, include_breaks: false) result = ( to_frame .select( Polars.col(name).cut( breaks, labels: labels, left_closed: left_closed, include_breaks: include_breaks ) ) .to_series ) if include_breaks result = result.struct.rename_fields(["break_point", "category"]) end result end |
#describe ⇒ DataFrame
Quick summary statistics of a series.
Series with mixed datatypes will return summary statistics for the datatype of the first value.
864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 |
# File 'lib/polars/series.rb', line 864 def describe if len == 0 raise ArgumentError, "Series must contain at least one value" elsif is_numeric s = cast(:f64) stats = { "min" => s.min, "max" => s.max, "null_count" => s.null_count, "mean" => s.mean, "std" => s.std, "count" => s.len } elsif is_boolean stats = { "sum" => sum, "null_count" => null_count, "count" => len } elsif is_utf8 stats = { "unique" => unique.length, "null_count" => null_count, "count" => len } elsif is_datelike # we coerce all to string, because a polars column # only has a single dtype and dates: datetime and count: int don't match stats = { "min" => dt.min.to_s, "max" => dt.max.to_s, "null_count" => null_count.to_s, "count" => len.to_s } else raise TypeError, "This type is not supported" end Polars::DataFrame.new( {"statistic" => stats.keys, "value" => stats.values} ) end |
#diff(n: 1, null_behavior: "ignore") ⇒ Series
Calculate the n-th discrete difference.
4606 4607 4608 |
# File 'lib/polars/series.rb', line 4606 def diff(n: 1, null_behavior: "ignore") super end |
#dot(other) ⇒ Numeric
Compute the dot/inner product between two Series.
3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 |
# File 'lib/polars/series.rb', line 3401 def dot(other) if !other.is_a?(Series) other = Series.new(other) end if len != other.len n, m = len, other.len raise ArgumentError, "Series length mismatch: expected #{n}, found #{m}" end _s.dot(other._s) end |
#drop_nans ⇒ Series
Drop NaN values.
784 785 786 |
# File 'lib/polars/series.rb', line 784 def drop_nans super end |
#drop_nulls ⇒ Series
Create a new Series that copies data from this Series without null values.
765 766 767 |
# File 'lib/polars/series.rb', line 765 def drop_nulls super end |
#dt ⇒ DateTimeNameSpace
Create an object namespace of all datetime related methods.
5478 5479 5480 |
# File 'lib/polars/series.rb', line 5478 def dt DateTimeNameSpace.new(self) end |
#dtype ⇒ Symbol
Get the data type of this Series.
96 97 98 |
# File 'lib/polars/series.rb', line 96 def dtype _s.dtype end |
#each ⇒ Object
Returns an enumerator.
425 426 427 428 429 430 431 |
# File 'lib/polars/series.rb', line 425 def each return to_enum(:each) unless block_given? length.times do |i| yield self[i] end end |
#entropy(base: Math::E, normalize: false) ⇒ Float?
Computes the entropy.
Uses the formula -sum(pk * log(pk)
where pk
are discrete probabilities.
1493 1494 1495 |
# File 'lib/polars/series.rb', line 1493 def entropy(base: Math::E, normalize: false) Polars.select(Polars.lit(self).entropy(base: base, normalize: normalize)).to_series[0] end |
#eq(other) ⇒ Series
Method equivalent of operator expression series == other
.
240 241 242 |
# File 'lib/polars/series.rb', line 240 def eq(other) self == other end |
#eq_missing(other) ⇒ Object
Method equivalent of equality operator series == other
where nil == nil
.
This differs from the standard ne
where null values are propagated.
276 277 278 279 280 281 |
# File 'lib/polars/series.rb', line 276 def eq_missing(other) if other.is_a?(Expr) return Polars.lit(self).eq_missing(other) end to_frame.select(Polars.col(name).eq_missing(other)).to_series end |
#equals(other, strict: false, check_names: false, null_equal: false) ⇒ Boolean Also known as: series_equal
Check if series is equal with another Series.
2704 2705 2706 |
# File 'lib/polars/series.rb', line 2704 def equals(other, strict: false, check_names: false, null_equal: false) _s.equals(other._s, strict, check_names, null_equal) end |
#estimated_size(unit = "b") ⇒ Numeric
Return an estimation of the total (heap) allocated size of the Series.
Estimated size is given in the specified unit (bytes by default).
This estimation is the sum of the size of its buffers, validity, including nested arrays. Multiple arrays may share buffers and bitmaps. Therefore, the size of 2 arrays is not the sum of the sizes computed from this function. In particular, StructArray's size is an upper bound.
When an array is sliced, its allocated size remains constant because the buffer unchanged. However, this function will yield a smaller number. This is because this function returns the visible size of the buffer, not its total capacity.
FFI buffers are included in this estimation.
556 557 558 559 |
# File 'lib/polars/series.rb', line 556 def estimated_size(unit = "b") sz = _s.estimated_size Utils.scale_bytes(sz, to: unit) end |
#ewm_mean(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving average.
5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 |
# File 'lib/polars/series.rb', line 5091 def ewm_mean( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_periods: 1, ignore_nulls: true ) super end |
#ewm_mean_by(by, half_life:) ⇒ Series
Compute time-based exponentially weighted moving average.
5158 5159 5160 5161 5162 5163 |
# File 'lib/polars/series.rb', line 5158 def ewm_mean_by( by, half_life: ) super end |
#ewm_std(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving standard deviation.
5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 |
# File 'lib/polars/series.rb', line 5180 def ewm_std( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true ) super end |
#ewm_var(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true) ⇒ Series
Exponentially-weighted moving variance.
5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 |
# File 'lib/polars/series.rb', line 5208 def ewm_var( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_periods: 1, ignore_nulls: true ) super end |
#exp ⇒ Series
Compute the exponential, element-wise.
746 747 748 |
# File 'lib/polars/series.rb', line 746 def exp super end |
#explode ⇒ Series
Explode a list or utf8 Series.
This means that every item is expanded to a new row.
2680 2681 2682 |
# File 'lib/polars/series.rb', line 2680 def explode super end |
#extend_constant(value, n) ⇒ Series
Extend the Series with given number of values.
5244 5245 5246 |
# File 'lib/polars/series.rb', line 5244 def extend_constant(value, n) super end |
#fill_nan(fill_value) ⇒ Series
Fill floating point NaN value with a fill value.
3223 3224 3225 |
# File 'lib/polars/series.rb', line 3223 def fill_nan(fill_value) super end |
#fill_null(value = nil, strategy: nil, limit: nil) ⇒ Series
Fill null values using the specified value or strategy.
3275 3276 3277 |
# File 'lib/polars/series.rb', line 3275 def fill_null(value = nil, strategy: nil, limit: nil) super end |
#filter(predicate) ⇒ Series
Filter elements by a boolean mask.
1834 1835 1836 1837 1838 1839 |
# File 'lib/polars/series.rb', line 1834 def filter(predicate) if predicate.is_a?(::Array) predicate = Series.new("", predicate) end Utils.wrap_s(_s.filter(predicate._s)) end |
#first ⇒ Object
Get the first element of the Series.
Returns nil
if the Series is empty.
5425 5426 5427 |
# File 'lib/polars/series.rb', line 5425 def first _s.first end |
#flags ⇒ Hash
Get flags that are set on the Series.
108 109 110 111 112 113 114 115 116 117 |
# File 'lib/polars/series.rb', line 108 def flags out = { "SORTED_ASC" => _s.is_sorted_flag, "SORTED_DESC" => _s.is_sorted_reverse_flag } if dtype.is_a?(List) out["FAST_EXPLODE"] = _s.can_fast_explode_flag end out end |
#floor ⇒ Series
Rounds down to the nearest integer value.
Only works on floating point Series.
3320 3321 3322 |
# File 'lib/polars/series.rb', line 3320 def floor Utils.wrap_s(_s.floor) end |
#forward_fill(limit: nil) ⇒ Series
Fill missing values with the next non-null value.
This is an alias of .fill_null(strategy: "forward")
.
3299 3300 3301 |
# File 'lib/polars/series.rb', line 3299 def forward_fill(limit: nil) fill_null(strategy: "forward", limit: limit) end |
#gather(indices) ⇒ Series Also known as: take
Take values by index.
2281 2282 2283 |
# File 'lib/polars/series.rb', line 2281 def gather(indices) super end |
#gather_every(n, offset = 0) ⇒ Series Also known as: take_every
Take every nth value in the Series and return as new Series.
1935 1936 1937 |
# File 'lib/polars/series.rb', line 1935 def gather_every(n, offset = 0) super end |
#ge(other) ⇒ Series
Method equivalent of operator expression series >= other
.
332 333 334 |
# File 'lib/polars/series.rb', line 332 def ge(other) self >= other end |
#get_chunks ⇒ Array
Get the chunks of this Series as a list of Series.
5336 5337 5338 |
# File 'lib/polars/series.rb', line 5336 def get_chunks _s.get_chunks end |
#gt(other) ⇒ Series
Method equivalent of operator expression series > other
.
339 340 341 |
# File 'lib/polars/series.rb', line 339 def gt(other) self > other end |
#has_nulls ⇒ Boolean Also known as: has_validity
Return true
if the Series has a validity bitmask.
If there is none, it means that there are no null values. Use this to swiftly assert a Series does not have null values.
2313 2314 2315 |
# File 'lib/polars/series.rb', line 2313 def has_nulls _s.has_nulls end |
#head(n = 10) ⇒ Series
Get the first n
rows.
1858 1859 1860 |
# File 'lib/polars/series.rb', line 1858 def head(n = 10) to_frame.select(F.col(name).head(n)).to_series end |
#hist(bins: nil, bin_count: nil, include_category: true, include_breakpoint: true) ⇒ DataFrame
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.
1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 |
# File 'lib/polars/series.rb', line 1380 def hist( bins: nil, bin_count: nil, include_category: true, include_breakpoint: true ) out = ( to_frame .select_seq( F.col(name).hist( bins: bins, bin_count: bin_count, include_category: include_category, include_breakpoint: include_breakpoint ) ) .to_series ) if !include_breakpoint && !include_category out.to_frame else out.struct.unnest end end |
#implode ⇒ Series
Aggregate values into a list.
5353 5354 5355 |
# File 'lib/polars/series.rb', line 5353 def implode super end |
#index_of(element) ⇒ Object
Get the index of the first occurrence of a value, or nil
if it's not found.
3157 3158 3159 |
# File 'lib/polars/series.rb', line 3157 def index_of(element) F.select(F.lit(self).index_of(element)).item end |
#interpolate(method: "linear") ⇒ Series
Interpolate intermediate values. The interpolation method is linear.
4455 4456 4457 |
# File 'lib/polars/series.rb', line 4455 def interpolate(method: "linear") super end |
#interpolate_by(by) ⇒ Series
Fill null values using interpolation based on another column.
4479 4480 4481 |
# File 'lib/polars/series.rb', line 4479 def interpolate_by(by) super end |
#is_between(lower_bound, upper_bound, closed: "both") ⇒ Series
If the value of the lower_bound
is greater than that of the upper_bound
then the result will be False, as no value can satisfy the condition.
Get a boolean mask of the values that are between the given lower/upper bounds.
2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 |
# File 'lib/polars/series.rb', line 2914 def is_between( lower_bound, upper_bound, closed: "both" ) if closed == "none" out = (self > lower_bound) & (self < upper_bound) elsif closed == "both" out = (self >= lower_bound) & (self <= upper_bound) elsif closed == "right" out = (self > lower_bound) & (self <= upper_bound) elsif closed == "left" out = (self >= lower_bound) & (self < upper_bound) end if out.is_a?(Expr) out = F.select(out).to_series end out end |
#is_boolean ⇒ Boolean Also known as: boolean?, is_bool, bool?
Check if this Series is a Boolean.
3024 3025 3026 |
# File 'lib/polars/series.rb', line 3024 def is_boolean dtype == Boolean end |
#is_close(other, abs_tol: 0.0, rel_tol: 1e-09, nans_equal: false) ⇒ Series
Get a boolean mask of the values being close to the other values.
2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 |
# File 'lib/polars/series.rb', line 2962 def is_close( other, abs_tol: 0.0, rel_tol: 1e-09, nans_equal: false ) F.select( F.lit(self).is_close( other, abs_tol: abs_tol, rel_tol: rel_tol, nans_equal: nans_equal ) ).to_series end |
#is_datelike ⇒ Boolean Also known as: datelike?, is_temporal, temporal?
Check if this Series datatype is datelike.
2996 2997 2998 |
# File 'lib/polars/series.rb', line 2996 def is_datelike [Date, Time].include?(dtype) || dtype.is_a?(Datetime) || dtype.is_a?(Duration) end |
#is_duplicated ⇒ Series
Get mask of all duplicated values.
2656 2657 2658 |
# File 'lib/polars/series.rb', line 2656 def is_duplicated super end |
#is_empty ⇒ Boolean Also known as: empty?
Check if the Series is empty.
2326 2327 2328 |
# File 'lib/polars/series.rb', line 2326 def is_empty len == 0 end |
#is_finite ⇒ Series
Returns a boolean Series indicating which values are finite.
2428 2429 2430 |
# File 'lib/polars/series.rb', line 2428 def is_finite super end |
#is_first_distinct ⇒ Series Also known as: is_first
Get a mask of the first unique value.
2613 2614 2615 |
# File 'lib/polars/series.rb', line 2613 def is_first_distinct super end |
#is_float ⇒ Boolean Also known as: float?
Check if this Series has floating point numbers.
3011 3012 3013 |
# File 'lib/polars/series.rb', line 3011 def is_float [Float32, Float64].include?(dtype) end |
#is_in(other, nulls_equal: false) ⇒ Series Also known as: in?
Check if elements of this Series are in the other Series.
2554 2555 2556 |
# File 'lib/polars/series.rb', line 2554 def is_in(other, nulls_equal: false) super end |
#is_infinite ⇒ Series
Returns a boolean Series indicating which values are infinite.
2447 2448 2449 |
# File 'lib/polars/series.rb', line 2447 def is_infinite super end |
#is_last_distinct ⇒ Series
Return a boolean mask indicating the last occurrence of each distinct value.
2636 2637 2638 |
# File 'lib/polars/series.rb', line 2636 def is_last_distinct super end |
#is_nan ⇒ Series
Returns a boolean Series indicating which values are NaN.
2467 2468 2469 |
# File 'lib/polars/series.rb', line 2467 def is_nan super end |
#is_not_nan ⇒ Series
Returns a boolean Series indicating which values are not NaN.
2487 2488 2489 |
# File 'lib/polars/series.rb', line 2487 def is_not_nan super end |
#is_not_null ⇒ Series
Returns a boolean Series indicating which values are not null.
2409 2410 2411 |
# File 'lib/polars/series.rb', line 2409 def is_not_null super end |
#is_null ⇒ Series
Returns a boolean Series indicating which values are null.
2389 2390 2391 |
# File 'lib/polars/series.rb', line 2389 def is_null super end |
#is_numeric ⇒ Boolean Also known as: numeric?
Check if this Series datatype is numeric.
2983 2984 2985 |
# File 'lib/polars/series.rb', line 2983 def is_numeric [Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Float32, Float64].include?(dtype) end |
#is_sorted(descending: false, nulls_last: false) ⇒ Boolean Also known as: sorted?
Check if the Series is sorted.
2349 2350 2351 |
# File 'lib/polars/series.rb', line 2349 def is_sorted(descending: false, nulls_last: false) _s.is_sorted(descending, nulls_last) end |
#is_unique ⇒ Series
Get mask of all unique values.
2592 2593 2594 |
# File 'lib/polars/series.rb', line 2592 def is_unique super end |
#is_utf8 ⇒ Boolean Also known as: utf8?
Check if this Series datatype is a Utf8.
3039 3040 3041 |
# File 'lib/polars/series.rb', line 3039 def is_utf8 dtype == String end |
#item(index = nil) ⇒ Object
Return the Series as a scalar, or return the element at the given index.
If no index is provided, this is equivalent to s[0]
, with a check
that the shape is (1,). With an index, this is equivalent to s[index]
.
515 516 517 518 519 520 521 522 523 524 525 526 527 528 |
# File 'lib/polars/series.rb', line 515 def item(index = nil) if index.nil? if len != 1 msg = ( "can only call '.item' if the Series is of length 1," + " or an explicit index is provided (Series is of length #{len})" ) raise ArgumentError, msg end return _s.get_index(0) end _s.get_index_signed(index) end |
#kurtosis(fisher: true, bias: true) ⇒ Float?
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
4710 4711 4712 |
# File 'lib/polars/series.rb', line 4710 def kurtosis(fisher: true, bias: true) _s.kurtosis(fisher, bias) end |
#last ⇒ Object
Get the last element of the Series.
Returns nil
if the Series is empty.
5434 5435 5436 |
# File 'lib/polars/series.rb', line 5434 def last _s.last end |
#le(other) ⇒ Series
Method equivalent of operator expression series <= other
.
226 227 228 |
# File 'lib/polars/series.rb', line 226 def le(other) self <= other end |
#len ⇒ Integer Also known as: length, size
Return the number of elements in the Series.
2729 2730 2731 |
# File 'lib/polars/series.rb', line 2729 def len _s.len end |
#limit(n = 10) ⇒ Series
Get the first n
rows.
Alias for #head.
1902 1903 1904 |
# File 'lib/polars/series.rb', line 1902 def limit(n = 10) to_frame.select(F.col(name).limit(n)).to_series end |
#list ⇒ ListNameSpace
Create an object namespace of all list related methods.
5450 5451 5452 |
# File 'lib/polars/series.rb', line 5450 def list ListNameSpace.new(self) end |
#log(base = Math::E) ⇒ Series
Compute the logarithm to a given base.
689 690 691 |
# File 'lib/polars/series.rb', line 689 def log(base = Math::E) super end |
#log10 ⇒ Series
Compute the base 10 logarithm of the input array, element-wise.
727 728 729 |
# File 'lib/polars/series.rb', line 727 def log10 super end |
#log1p ⇒ Series
Compute the natural logarithm of the input array plus one, element-wise.
708 709 710 |
# File 'lib/polars/series.rb', line 708 def log1p super end |
#lower_bound ⇒ Series
Return the lower bound of this Series' dtype as a unit Series.
4797 4798 4799 |
# File 'lib/polars/series.rb', line 4797 def lower_bound super end |
#lt(other) ⇒ Series
Method equivalent of operator expression series < other
.
233 234 235 |
# File 'lib/polars/series.rb', line 233 def lt(other) self < other end |
#map_elements(return_dtype: nil, skip_nulls: true, &func) ⇒ Series Also known as: map, apply
Apply a custom/user-defined function (UDF) over elements in this Series and return a new Series.
If the function returns another datatype, the return_dtype arg should be set, otherwise the method will fail.
3737 3738 3739 3740 3741 3742 3743 3744 |
# File 'lib/polars/series.rb', line 3737 def map_elements(return_dtype: nil, skip_nulls: true, &func) if return_dtype.nil? pl_return_dtype = nil else pl_return_dtype = Utils.rb_type_to_dtype(return_dtype) end Utils.wrap_s(_s.map_elements(func, pl_return_dtype, skip_nulls)) end |
#max ⇒ Object
Get the maximum value in this Series.
1005 1006 1007 |
# File 'lib/polars/series.rb', line 1005 def max _s.max end |
#mean ⇒ Float?
Reduce this Series to the mean value.
931 932 933 |
# File 'lib/polars/series.rb', line 931 def mean _s.mean end |
#median ⇒ Float?
Get the median of this Series.
1091 1092 1093 |
# File 'lib/polars/series.rb', line 1091 def median _s.median end |
#min ⇒ Object
Get the minimal value in this Series.
993 994 995 |
# File 'lib/polars/series.rb', line 993 def min _s.min end |
#mode ⇒ Series
Compute the most occurring value(s).
Can return multiple Values.
3427 3428 3429 |
# File 'lib/polars/series.rb', line 3427 def mode super end |
#n_chunks ⇒ Integer
Get the number of chunks that this Series contains.
1603 1604 1605 |
# File 'lib/polars/series.rb', line 1603 def n_chunks _s.n_chunks end |
#n_unique ⇒ Integer
Count the number of unique values in this Series.
4362 4363 4364 |
# File 'lib/polars/series.rb', line 4362 def n_unique _s.n_unique end |
#name ⇒ String
Get the name of this Series.
127 128 129 |
# File 'lib/polars/series.rb', line 127 def name _s.name end |
#nan_max ⇒ Object
Get maximum value, but propagate/poison encountered NaN values.
1022 1023 1024 |
# File 'lib/polars/series.rb', line 1022 def nan_max to_frame.select(F.col(name).nan_max)[0, 0] end |
#nan_min ⇒ Object
Get minimum value, but propagate/poison encountered NaN values.
1039 1040 1041 |
# File 'lib/polars/series.rb', line 1039 def nan_min to_frame.select(F.col(name).nan_min)[0, 0] end |
#ne(other) ⇒ Series
Method equivalent of operator expression series != other
.
286 287 288 |
# File 'lib/polars/series.rb', line 286 def ne(other) self != other end |
#ne_missing(other) ⇒ Object
Method equivalent of equality operator series != other
where nil == nil
.
This differs from the standard ne
where null values are propagated.
322 323 324 325 326 327 |
# File 'lib/polars/series.rb', line 322 def ne_missing(other) if other.is_a?(Expr) return Polars.lit(self).ne_missing(other) end to_frame.select(Polars.col(name).ne_missing(other)).to_series end |
#new_from_index(index, length) ⇒ Series
Create a new Series filled with values from the given index.
5284 5285 5286 |
# File 'lib/polars/series.rb', line 5284 def new_from_index(index, length) Utils.wrap_s(_s.new_from_index(index, length)) end |
#none?(&block) ⇒ Boolean Also known as: none
Check if all boolean values in the column are false
.
662 663 664 665 666 667 668 |
# File 'lib/polars/series.rb', line 662 def none?(&block) if block_given? apply(return_dtype: Boolean, &block).none? else to_frame.select(Polars.col(name).is_not.all).to_series[0] end end |
#not_ ⇒ Series
Negate a boolean Series.
2369 2370 2371 |
# File 'lib/polars/series.rb', line 2369 def not_ self.class._from_rbseries(_s.not_) end |
#null_count ⇒ Integer
Count the null values in this Series.
2294 2295 2296 |
# File 'lib/polars/series.rb', line 2294 def null_count _s.null_count end |
#pct_change(n: 1) ⇒ Series
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.
4657 4658 4659 |
# File 'lib/polars/series.rb', line 4657 def pct_change(n: 1) super end |
#peak_max ⇒ Series
Get a boolean mask of the local maximum peaks.
4329 4330 4331 |
# File 'lib/polars/series.rb', line 4329 def peak_max super end |
#peak_min ⇒ Series
Get a boolean mask of the local minimum peaks.
4350 4351 4352 |
# File 'lib/polars/series.rb', line 4350 def peak_min super end |
#pow(exponent) ⇒ Series
Raise to the power of the given exponent.
If the exponent is float, the result follows the dtype of exponent. Otherwise, it follows dtype of base.
981 982 983 |
# File 'lib/polars/series.rb', line 981 def pow(exponent) to_frame.select_seq(F.col(name).pow(exponent)).to_series end |
#product ⇒ Numeric
Reduce this Series to the product value.
943 944 945 |
# File 'lib/polars/series.rb', line 943 def product to_frame.select(Polars.col(name).product).to_series[0] end |
#qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories based on their quantiles.
1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 |
# File 'lib/polars/series.rb', line 1272 def qcut(quantiles, labels: nil, left_closed: false, allow_duplicates: false, include_breaks: false) result = ( to_frame .select( Polars.col(name).qcut( quantiles, labels: labels, left_closed: left_closed, allow_duplicates: allow_duplicates, include_breaks: include_breaks ) ) .to_series ) if include_breaks result = result.struct.rename_fields(["break_point", "category"]) end result end |
#quantile(quantile, interpolation: "nearest") ⇒ Float?
Get the quantile value of this Series.
1108 1109 1110 |
# File 'lib/polars/series.rb', line 1108 def quantile(quantile, interpolation: "nearest") _s.quantile(quantile, interpolation) end |
#rank(method: "average", reverse: false, seed: nil) ⇒ Series
Assign ranks to data, dealing with ties appropriately.
4556 4557 4558 |
# File 'lib/polars/series.rb', line 4556 def rank(method: "average", reverse: false, seed: nil) super end |
#rechunk(in_place: false) ⇒ Series
Create a single chunk of memory for this Series.
2833 2834 2835 2836 |
# File 'lib/polars/series.rb', line 2833 def rechunk(in_place: false) opt_s = _s.rechunk(in_place) in_place ? self : Utils.wrap_s(opt_s) end |
#reinterpret(signed: true) ⇒ Series
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.
4434 4435 4436 |
# File 'lib/polars/series.rb', line 4434 def reinterpret(signed: true) super end |
#rename(name, in_place: false) ⇒ Series
Rename this Series.
1560 1561 1562 1563 1564 1565 1566 1567 |
# File 'lib/polars/series.rb', line 1560 def rename(name, in_place: false) if in_place _s.rename(name) self else self.alias(name) end end |
#repeat_by(by) ⇒ Object
Repeat the elements in this Series as specified in the given expression.
The repeated elements are expanded into a List.
5506 5507 5508 |
# File 'lib/polars/series.rb', line 5506 def repeat_by(by) super end |
#replace(old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace values by different values.
4896 4897 4898 |
# File 'lib/polars/series.rb', line 4896 def replace(old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil) super end |
#replace_strict(old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace all values by different values.
5005 5006 5007 5008 5009 5010 5011 5012 |
# File 'lib/polars/series.rb', line 5005 def replace_strict( old, new = Expr::NO_DEFAULT, default: Expr::NO_DEFAULT, return_dtype: nil ) super end |
#reshape(dims) ⇒ Series
Reshape this Series to a flat Series or a Series of Lists.
5050 5051 5052 |
# File 'lib/polars/series.rb', line 5050 def reshape(dims) super end |
#reverse ⇒ Series
Return Series in reverse order.
2853 2854 2855 |
# File 'lib/polars/series.rb', line 2853 def reverse super end |
#rle ⇒ Series
Get the lengths of runs of identical values.
1315 1316 1317 |
# File 'lib/polars/series.rb', line 1315 def rle super end |
#rle_id ⇒ Series
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.
1343 1344 1345 |
# File 'lib/polars/series.rb', line 1343 def rle_id super end |
#rolling_kurtosis(window_size, fisher: true, bias: true, min_samples: nil, center: false) ⇒ Series
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.
4254 4255 4256 4257 4258 4259 4260 4261 4262 |
# File 'lib/polars/series.rb', line 4254 def rolling_kurtosis( window_size, fisher: true, bias: true, min_samples: nil, center: false ) super end |
#rolling_max(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
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.
3910 3911 3912 3913 3914 3915 3916 3917 |
# File 'lib/polars/series.rb', line 3910 def rolling_max( window_size, weights: nil, min_periods: nil, center: false ) super end |
#rolling_mean(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
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.
3951 3952 3953 3954 3955 3956 3957 3958 |
# File 'lib/polars/series.rb', line 3951 def rolling_mean( window_size, weights: nil, min_periods: nil, center: false ) super end |
#rolling_median(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
Compute a rolling median.
4123 4124 4125 4126 4127 4128 4129 4130 |
# File 'lib/polars/series.rb', line 4123 def rolling_median( window_size, weights: nil, min_periods: nil, center: false ) super end |
#rolling_min(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
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.
3869 3870 3871 3872 3873 3874 3875 3876 |
# File 'lib/polars/series.rb', line 3869 def rolling_min( window_size, weights: nil, min_periods: nil, center: false ) super end |
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_periods: nil, center: false) ⇒ Series
Compute a rolling quantile.
4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 |
# File 'lib/polars/series.rb', line 4179 def rolling_quantile( quantile, interpolation: "nearest", window_size: 2, weights: nil, min_periods: nil, center: false ) super end |
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Series
Compute a rolling skew.
4215 4216 4217 |
# File 'lib/polars/series.rb', line 4215 def rolling_skew(window_size, bias: true, min_samples: nil, center: false) super end |
#rolling_std(window_size, weights: nil, min_periods: nil, center: false, ddof: 1) ⇒ Series
Compute a rolling std dev.
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.
4036 4037 4038 4039 4040 4041 4042 4043 4044 |
# File 'lib/polars/series.rb', line 4036 def rolling_std( window_size, weights: nil, min_periods: nil, center: false, ddof: 1 ) super end |
#rolling_sum(window_size, weights: nil, min_periods: nil, center: false) ⇒ Series
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.
3992 3993 3994 3995 3996 3997 3998 3999 |
# File 'lib/polars/series.rb', line 3992 def rolling_sum( window_size, weights: nil, min_periods: nil, center: false ) super end |
#rolling_var(window_size, weights: nil, min_periods: nil, center: false, ddof: 1) ⇒ Series
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.
4081 4082 4083 4084 4085 4086 4087 4088 4089 |
# File 'lib/polars/series.rb', line 4081 def rolling_var( window_size, weights: nil, min_periods: nil, center: false, ddof: 1 ) super end |
#round(decimals = 0) ⇒ Series
Round underlying floating point data by decimals
digits.
3363 3364 3365 |
# File 'lib/polars/series.rb', line 3363 def round(decimals = 0) super end |
#round_sig_figs(digits) ⇒ Series
Round to a number of significant figures.
3385 3386 3387 |
# File 'lib/polars/series.rb', line 3385 def round_sig_figs(digits) super end |
#sample(n: nil, frac: nil, with_replacement: false, shuffle: false, seed: nil) ⇒ Series
Sample from this Series.
4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 |
# File 'lib/polars/series.rb', line 4291 def sample( n: nil, frac: nil, with_replacement: false, shuffle: false, seed: nil ) if !n.nil? && !frac.nil? raise ArgumentError, "cannot specify both `n` and `frac`" end if n.nil? && !frac.nil? return Utils.wrap_s(_s.sample_frac(frac, with_replacement, shuffle, seed)) end if n.nil? n = 1 end Utils.wrap_s(_s.sample_n(n, with_replacement, shuffle, seed)) end |
#scatter(idx, value) ⇒ Series Also known as: set_at_idx
Set values at the index locations.
3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 |
# File 'lib/polars/series.rb', line 3114 def scatter(idx, value) if idx.is_a?(Integer) idx = [idx] end if idx.length == 0 return self end idx = Series.new("", idx) if value.is_a?(Integer) || value.is_a?(Float) || Utils.bool?(value) || value.is_a?(::String) || value.nil? value = Series.new("", [value]) # if we need to set more than a single value, we extend it if idx.length > 0 value = value.extend_constant(value[0], idx.length - 1) end elsif !value.is_a?(Series) value = Series.new("", value) end _s.scatter(idx._s, value._s) self end |
#search_sorted(element, side: "any", descending: false) ⇒ Integer
Find indices where elements should be inserted to maintain order.
2233 2234 2235 2236 2237 2238 2239 |
# File 'lib/polars/series.rb', line 2233 def search_sorted(element, side: "any", descending: false) if element.is_a?(Integer) || element.is_a?(Float) return Polars.select(Polars.lit(self).search_sorted(element, side: side, descending: descending)).item end element = Series.new(element) Polars.select(Polars.lit(self).search_sorted(element, side: side, descending: descending)).to_series end |
#set(filter, value) ⇒ Series
Use of this function is frequently an anti-pattern, as it can
block optimization (predicate pushdown, etc). Consider using
Polars.when(predicate).then(value).otherwise(self)
instead.
Set masked values.
3090 3091 3092 |
# File 'lib/polars/series.rb', line 3090 def set(filter, value) Utils.wrap_s(_s.send("set_with_mask_#{DTYPE_TO_FFINAME.fetch(dtype.class)}", filter._s, value)) end |
#set_sorted(reverse: false) ⇒ Series
This can lead to incorrect results if this Series is not sorted!! Use with care!
Flags the Series as sorted.
Enables downstream code to user fast paths for sorted arrays.
5265 5266 5267 |
# File 'lib/polars/series.rb', line 5265 def set_sorted(reverse: false) Utils.wrap_s(_s.set_sorted(reverse)) end |
#shape ⇒ Array
Shape of this Series.
139 140 141 |
# File 'lib/polars/series.rb', line 139 def shape [_s.len] end |
#shift(periods = 1) ⇒ Series
Shift the values by a given period.
3777 3778 3779 |
# File 'lib/polars/series.rb', line 3777 def shift(periods = 1) super end |
#shift_and_fill(periods, fill_value) ⇒ Series
Shift the values by a given period and fill the resulting null values.
3789 3790 3791 |
# File 'lib/polars/series.rb', line 3789 def shift_and_fill(periods, fill_value) super end |
#shrink_dtype ⇒ Series
Shrink numeric columns to the minimal required datatype.
Shrink to the dtype needed to fit the extrema of this Series. This can be used to reduce memory pressure.
5309 5310 5311 |
# File 'lib/polars/series.rb', line 5309 def shrink_dtype Utils.wrap_s(_s.shrink_dtype) end |
#shrink_to_fit(in_place: false) ⇒ Series
Shrink Series memory usage.
Shrinks the underlying array capacity to exactly fit the actual data. (Note that this function does not change the Series data type).
4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 |
# File 'lib/polars/series.rb', line 4372 def shrink_to_fit(in_place: false) if in_place _s.shrink_to_fit self else series = clone series._s.shrink_to_fit series end end |
#shuffle(seed: nil) ⇒ Series
Shuffle the contents of this Series.
5072 5073 5074 |
# File 'lib/polars/series.rb', line 5072 def shuffle(seed: nil) super end |
#sign ⇒ Series
Compute the element-wise indication of the sign.
3448 3449 3450 |
# File 'lib/polars/series.rb', line 3448 def sign super end |
#sin ⇒ Series
Compute the element-wise value for the sine.
3467 3468 3469 |
# File 'lib/polars/series.rb', line 3467 def sin super end |
#sinh ⇒ Series
Compute the element-wise value for the hyperbolic sine.
3668 3669 3670 |
# File 'lib/polars/series.rb', line 3668 def sinh super end |
#skew(bias: true) ⇒ Float?
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.
4678 4679 4680 |
# File 'lib/polars/series.rb', line 4678 def skew(bias: true) _s.skew(bias) end |
#slice(offset, length = nil) ⇒ Series
Get a slice of this Series.
1750 1751 1752 |
# File 'lib/polars/series.rb', line 1750 def slice(offset, length = nil) self.class._from_rbseries(_s.slice(offset, length)) end |
#sort(reverse: false, nulls_last: false, multithreaded: true, in_place: false) ⇒ Series
Sort this Series.
1975 1976 1977 1978 1979 1980 1981 1982 |
# File 'lib/polars/series.rb', line 1975 def sort(reverse: false, nulls_last: false, multithreaded: true, in_place: false) if in_place self._s = _s.sort(reverse, nulls_last, multithreaded) self else Utils.wrap_s(_s.sort(reverse, nulls_last, multithreaded)) end end |
#sqrt ⇒ Series
Compute the square root of the elements.
576 577 578 |
# File 'lib/polars/series.rb', line 576 def sqrt super end |
#std(ddof: 1) ⇒ Float?
Get the standard deviation of this Series.
1055 1056 1057 1058 1059 1060 1061 |
# File 'lib/polars/series.rb', line 1055 def std(ddof: 1) if !is_numeric nil else to_frame.select(Polars.col(name).std(ddof: ddof)).to_series[0] end end |
#str ⇒ StringNameSpace
Create an object namespace of all string related methods.
5485 5486 5487 |
# File 'lib/polars/series.rb', line 5485 def str StringNameSpace.new(self) end |
#struct ⇒ StructNameSpace
Create an object namespace of all struct related methods.
5492 5493 5494 |
# File 'lib/polars/series.rb', line 5492 def struct StructNameSpace.new(self) end |
#sum ⇒ Numeric
Dtypes :i8
, :u8
, :i16
, and :u16
are cast to
:i64
before summing to prevent overflow issues.
Reduce this Series to the sum value.
919 920 921 |
# File 'lib/polars/series.rb', line 919 def sum _s.sum end |
#tail(n = 10) ⇒ Series
Get the last n
rows.
1879 1880 1881 |
# File 'lib/polars/series.rb', line 1879 def tail(n = 10) to_frame.select(F.col(name).tail(n)).to_series end |
#tan ⇒ Series
Compute the element-wise value for the tangent.
3505 3506 3507 |
# File 'lib/polars/series.rb', line 3505 def tan super end |
#tanh ⇒ Series
Compute the element-wise value for the hyperbolic tangent.
3706 3707 3708 |
# File 'lib/polars/series.rb', line 3706 def tanh super end |
#to_a ⇒ Array
Convert this Series to a Ruby Array. This operation clones data.
2794 2795 2796 |
# File 'lib/polars/series.rb', line 2794 def to_a _s.to_a end |
#to_dummies(separator: "_", drop_first: false, drop_nulls: false) ⇒ DataFrame
Get dummy variables.
1137 1138 1139 |
# File 'lib/polars/series.rb', line 1137 def to_dummies(separator: "_", drop_first: false, drop_nulls: false) Utils.wrap_df(_s.to_dummies(separator, drop_first, drop_nulls)) end |
#to_frame(name = nil) ⇒ DataFrame
Cast this Series to a DataFrame.
818 819 820 821 822 823 |
# File 'lib/polars/series.rb', line 818 def to_frame(name = nil) if name return Utils.wrap_df(RbDataFrame.new([rename(name)._s])) end Utils.wrap_df(RbDataFrame.new([_s])) end |
#to_numo ⇒ Numo::NArray
Convert this Series to a Numo array. This operation clones data but is completely safe.
3057 3058 3059 3060 3061 3062 3063 |
# File 'lib/polars/series.rb', line 3057 def to_numo if is_datelike Numo::RObject.cast(to_a) else _s.to_numo end end |
#to_physical ⇒ Series
Cast to physical representation of the logical dtype.
:date
->:i32
:datetime
->:i64
:time
->:i64
:duration
->:i64
:cat
->:u32
- other data types will be left unchanged.
2782 2783 2784 |
# File 'lib/polars/series.rb', line 2782 def to_physical super end |
#to_s ⇒ String Also known as: inspect
Returns a string representing the Series.
146 147 148 |
# File 'lib/polars/series.rb', line 146 def to_s _s.to_s end |
#top_k(k: 5) ⇒ Boolean
Return the k
largest elements.
2002 2003 2004 |
# File 'lib/polars/series.rb', line 2002 def top_k(k: 5) super end |
#top_k_by(by, k: 5, reverse: false) ⇒ Series
Return the k
largest elements of the by
column.
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 sort
after this function if you wish the
output to be sorted.
2036 2037 2038 2039 2040 2041 2042 |
# File 'lib/polars/series.rb', line 2036 def top_k_by( by, k: 5, reverse: false ) super end |
#unique(maintain_order: false) ⇒ Series Also known as: uniq
Get unique elements in series.
2259 2260 2261 |
# File 'lib/polars/series.rb', line 2259 def unique(maintain_order: false) super end |
#unique_counts ⇒ Series
Return a count of the unique values in the order of appearance.
1469 1470 1471 |
# File 'lib/polars/series.rb', line 1469 def unique_counts super end |
#upper_bound ⇒ Series
Return the upper bound of this Series' dtype as a unit Series.
4824 4825 4826 |
# File 'lib/polars/series.rb', line 4824 def upper_bound super end |
#value_counts(sort: false, parallel: false, name: nil, normalize: false) ⇒ DataFrame
Count the unique values in a Series.
1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 |
# File 'lib/polars/series.rb', line 1434 def value_counts( sort: false, parallel: false, name: nil, normalize: false ) if name.nil? if normalize name = "proportion" else name = "count" end end DataFrame._from_rbdf( self._s.value_counts( sort, parallel, name, normalize ) ) end |
#var(ddof: 1) ⇒ Float?
Get variance of this Series.
1075 1076 1077 1078 1079 1080 1081 |
# File 'lib/polars/series.rb', line 1075 def var(ddof: 1) if !is_numeric nil else to_frame.select(Polars.col(name).var(ddof: ddof)).to_series[0] end end |
#zip_with(mask, other) ⇒ Series
Take values from self or other based on the given mask.
Where mask evaluates true, take values from self. Where mask evaluates false, take values from other.
3833 3834 3835 |
# File 'lib/polars/series.rb', line 3833 def zip_with(mask, other) Utils.wrap_s(_s.zip_with(mask._s, other._s)) end |
#|(other) ⇒ Series
Bitwise OR.
164 165 166 167 168 169 |
# File 'lib/polars/series.rb', line 164 def |(other) if !other.is_a?(Series) other = Series.new([other]) end Utils.wrap_s(_s.bitor(other._s)) end |