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.
-
#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) ⇒ Series
Append a Series to this one.
-
#approx_n_unique ⇒ Object
Approximate count of unique values.
-
#arccos ⇒ Series
Compute the element-wise value for the inverse cosine.
-
#arccosh ⇒ Series
Compute the element-wise value for the inverse hyperbolic cosine.
-
#arcsin ⇒ Series
Compute the element-wise value for the inverse sine.
-
#arcsinh ⇒ Series
Compute the element-wise value for the inverse hyperbolic sine.
-
#arctan ⇒ Series
Compute the element-wise value for the inverse tangent.
-
#arctanh ⇒ Series
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(descending: false, nulls_last: false) ⇒ Series
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
ksmallest elements. -
#bottom_k_by(by, k: 5, reverse: false) ⇒ Series
Return the
ksmallest elements of thebycolumn. -
#cast(dtype, strict: true, wrap_numerical: false) ⇒ 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
Create an empty copy of the current Series.
-
#clip(lower_bound = nil, upper_bound = nil) ⇒ Series
Set values outside the given boundaries to the boundary value.
-
#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
Get an array with the cumulative max computed at every element.
-
#cum_min(reverse: false) ⇒ Series
Get an array with the cumulative min computed at every element.
-
#cum_prod(reverse: false) ⇒ Series
Get an array with the cumulative product computed at every element.
-
#cum_sum(reverse: false) ⇒ Series
Get an array with the cumulative sum computed at every element.
-
#cumulative_eval(expr, min_samples: 1) ⇒ Series
Run an expression over a sliding window that increases
1slot every iteration. -
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories.
-
#describe(percentiles: [0.25, 0.5, 0.75], interpolation: "nearest") ⇒ 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: true) ⇒ Float?
Computes the entropy.
-
#eq(other) ⇒ Series
Method equivalent of operator expression
series == other. -
#eq_missing(other) ⇒ Object
Method equivalent of equality operator
series == otherwherenil == nil. -
#equals(other, check_dtypes: false, check_names: false, null_equal: true) ⇒ Boolean
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_samples: 1, ignore_nulls: false) ⇒ 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_samples: 1, ignore_nulls: false) ⇒ Series
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) ⇒ Series
Exponentially-weighted moving variance.
-
#exp ⇒ Series
Compute the exponential, element-wise.
-
#explode(empty_as_null: true, keep_nulls: true) ⇒ Series
Explode a list or utf8 Series.
-
#ext ⇒ ExtensionNameSpace
Create an object namespace of all extension type related methods.
-
#extend(other) ⇒ Series
Extend the memory backed by this Series with the values from another.
-
#extend_constant(value, n) ⇒ Series
Extend the Series with given number of values.
-
#fill_nan(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(ignore_nulls: false) ⇒ 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, null_on_oob: false) ⇒ Series
Take values by index.
-
#gather_every(n, offset = 0) ⇒ Series
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
Return
trueif the Series has a validity bitmask. -
#hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Series
Hash the Series.
-
#head(n = 10) ⇒ Series
Get the first
nrows. -
#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
nilif it's not found. -
#initialize(name = nil, values = nil, dtype: nil, strict: true, nan_to_null: false) ⇒ 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_close(other, abs_tol: 0.0, rel_tol: 1.0e-09, nans_equal: false) ⇒ Series
Get a boolean mask of the values being close to the other values.
-
#is_duplicated ⇒ Series
Get mask of all duplicated values.
-
#is_empty(ignore_nulls: false) ⇒ 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
Get a mask of the first unique value.
-
#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_sorted(descending: false, nulls_last: false) ⇒ Boolean
(also: #sorted?)
Check if the Series is sorted.
-
#is_unique ⇒ Series
Get mask of all unique values.
-
#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(ignore_nulls: false) ⇒ 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
nrows. -
#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, &function) ⇒ Series
(also: #map)
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.
-
#max_by(by) ⇒ Object
Get the maximum value in this Series, ordered by an expression.
-
#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.
-
#min_by(by) ⇒ Expr
Get the minimum value in this Series, ordered by an expression.
-
#mode(maintain_order: false) ⇒ 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 != otherwherenil == 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.
-
#plot ⇒ SeriesPlot
Create a plot namespace.
-
#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", descending: 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: nil, dtype: nil) ⇒ Series
Reinterpret the underlying bits as a signed/unsigned integer or float.
-
#rename(name) ⇒ Series
Rename this Series.
-
#repeat_by(by) ⇒ Object
Repeat the elements in this Series as specified in the given expression.
-
#replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace values by different values.
-
#replace_strict(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace all values by different values.
-
#reshape(dimensions) ⇒ 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_map(window_size, weights: nil, min_samples: nil, center: false, &function) ⇒ Series
Compute a custom rolling window function.
-
#rolling_max(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Apply a rolling max (moving max) over the values in this array.
-
#rolling_max_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
Compute a rolling max based on another series.
-
#rolling_mean(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Apply a rolling mean (moving mean) over the values in this array.
-
#rolling_mean_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
Compute a rolling mean based on another series.
-
#rolling_median(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Compute a rolling median.
-
#rolling_median_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
Compute a rolling median based on another series.
-
#rolling_min(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Apply a rolling min (moving min) over the values in this array.
-
#rolling_min_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
Compute a rolling min based on another series.
-
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false) ⇒ Series
Compute a rolling quantile.
-
#rolling_quantile_by(by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right") ⇒ Series
Compute a rolling quantile based on another series.
-
#rolling_rank(window_size, method: "average", seed: nil, min_samples: nil, center: false) ⇒ Series
Compute a rolling rank.
-
#rolling_rank_by(by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right") ⇒ Series
Compute a rolling rank based on another column.
-
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Series
Compute a rolling skew.
-
#rolling_std(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Series
Compute a rolling std dev.
-
#rolling_std_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Series
Compute a rolling standard deviation based on another series.
-
#rolling_sum(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Apply a rolling sum (moving sum) over the values in this array.
-
#rolling_sum_by(by, window_size, min_samples: 0, closed: "right") ⇒ Series
Compute a rolling sum based on another series.
-
#rolling_var(window_size, weights: nil, min_samples: nil, center: false, ddof: 1) ⇒ Series
Compute a rolling variance.
-
#rolling_var_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Series
Compute a rolling variance based on another series.
-
#round(decimals = 0, mode: "half_to_even") ⇒ Series
Round underlying floating point data by
decimalsdigits. -
#round_sig_figs(digits) ⇒ Series
Round to a number of significant figures.
-
#sample(n: nil, fraction: nil, with_replacement: false, shuffle: false, seed: nil) ⇒ Series
Sample from this Series.
-
#scatter(indices, values) ⇒ Series
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(descending: false) ⇒ Series
Flags the Series as sorted.
-
#shape ⇒ Array
Shape of this Series.
-
#shift(n = 1, fill_value: nil) ⇒ Series
Shift the values by a given period.
-
#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(descending: false, nulls_last: false, multithreaded: true, in_place: false) ⇒ Series
Sort this Series.
-
#sql(query, table_name: "self") ⇒ DataFrame
Execute a SQL query against the 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
nrows. -
#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_arrow ⇒ Nanoarrow::Array
Return the underlying Arrow 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
klargest elements. -
#top_k_by(by, k: 5, reverse: false) ⇒ Series
Return the
klargest elements of thebycolumn. -
#truncate(decimals = 0) ⇒ Series
Truncate numeric data toward zero to
decimalsnumber of decimal places. -
#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) ⇒ Series
Create a new Series.
32 33 34 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 80 81 |
# File 'lib/polars/series.rb', line 32 def initialize(name = nil, values = nil, dtype: nil, strict: true, nan_to_null: false) # If 'Unknown' treat as nil to trigger type inference if dtype == Unknown dtype = nil elsif !dtype.nil? && !Utils.is_polars_dtype(dtype) dtype = Utils.parse_into_dtype(dtype) end # Handle case where values are passed as the first argument original_name = nil if name.nil? name = "" elsif name.is_a?(::String) original_name = name else if values.nil? values = name name = "" else raise TypeError, "Series name must be a string" end end if values.is_a?(::Array) || values.is_a?(Range) self._s = Utils.sequence_to_rbseries( name, values, dtype: dtype, strict: strict ) elsif values.nil? self._s = Utils.sequence_to_rbseries(name, [], dtype: dtype) elsif defined?(Numo::NArray) && values.is_a?(Numo::NArray) self._s = Utils.numo_to_rbseries(name, values, strict: strict, nan_to_null: nan_to_null) if !dtype.nil? self._s = cast(dtype, strict: strict)._s end elsif values.is_a?(Series) self._s = Utils.series_to_rbseries(original_name, values, dtype: dtype, strict: strict) elsif values.is_a?(DataFrame) self._s = Utils.dataframe_to_rbseries( original_name, values, dtype: dtype, strict: strict ) elsif values.respond_to?(:arrow_c_stream) self._s = RbSeries.from_arrow_c_stream(values) else raise TypeError, "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.
410 411 412 413 414 415 |
# File 'lib/polars/series.rb', line 410 def ! if dtype == Boolean return Utils.wrap_s(_s.not_) end raise NotImplementedError end |
#!=(other) ⇒ Series
Not equal.
193 194 195 |
# File 'lib/polars/series.rb', line 193 def !=(other) _comp(other, :neq) end |
#%(other) ⇒ Series
Returns the modulo.
390 391 392 393 394 395 |
# File 'lib/polars/series.rb', line 390 def %(other) if dtype.temporal? raise ArgumentError, "first cast to integer before applying modulo on datelike dtypes" end _arithmetic(other, :rem) end |
#&(other) ⇒ Series
Bitwise AND.
156 157 158 159 160 161 |
# File 'lib/polars/series.rb', line 156 def &(other) if !other.is_a?(Series) other = Series.new([other]) end Utils.wrap_s(_s.bitand(other._s)) end |
#*(other) ⇒ Series
Performs multiplication.
362 363 364 365 366 367 368 369 370 |
# File 'lib/polars/series.rb', line 362 def *(other) if dtype.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.
400 401 402 403 404 405 |
# File 'lib/polars/series.rb', line 400 def **(power) if dtype.temporal? 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.
348 349 350 |
# File 'lib/polars/series.rb', line 348 def +(other) _arithmetic(other, :add) end |
#-(other) ⇒ Series
Performs subtraction.
355 356 357 |
# File 'lib/polars/series.rb', line 355 def -(other) _arithmetic(other, :sub) end |
#-@ ⇒ Series
Performs negation.
420 421 422 |
# File 'lib/polars/series.rb', line 420 def -@ 0 - self end |
#/(other) ⇒ Series
Performs division.
375 376 377 378 379 380 381 382 383 384 385 |
# File 'lib/polars/series.rb', line 375 def /(other) if dtype.temporal? raise ArgumentError, "first cast to integer before dividing datelike dtypes" end if dtype.float? return _arithmetic(other, :div) end cast(Float64) / other end |
#<(other) ⇒ Series
Less than.
207 208 209 |
# File 'lib/polars/series.rb', line 207 def <(other) _comp(other, :lt) end |
#<=(other) ⇒ Series
Less than or equal.
221 222 223 |
# File 'lib/polars/series.rb', line 221 def <=(other) _comp(other, :lt_eq) end |
#==(other) ⇒ Series
Equal.
186 187 188 |
# File 'lib/polars/series.rb', line 186 def ==(other) _comp(other, :eq) end |
#>(other) ⇒ Series
Greater than.
200 201 202 |
# File 'lib/polars/series.rb', line 200 def >(other) _comp(other, :gt) end |
#>=(other) ⇒ Series
Greater than or equal.
214 215 216 |
# File 'lib/polars/series.rb', line 214 def >=(other) _comp(other, :gt_eq) end |
#[](item) ⇒ Object
Returns elements of the Series.
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 463 464 |
# File 'lib/polars/series.rb', line 438 def [](item) if item.is_a?(Series) && [UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64].include?(item.dtype) return Utils.wrap_s(_s.gather_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.gather_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.
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 498 499 |
# File 'lib/polars/series.rb', line 469 def []=(key, value) if value.is_a?(::Array) if dtype.numeric? || dtype.temporal? 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(Utils.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.
176 177 178 179 180 181 |
# File 'lib/polars/series.rb', line 176 def ^(other) if !other.is_a?(Series) other = Series.new([other]) end Utils.wrap_s(_s.bitxor(other._s)) end |
#abs ⇒ Series
Compute absolute values.
5474 5475 5476 |
# File 'lib/polars/series.rb', line 5474 def abs super end |
#alias(name) ⇒ Series
Return a copy of the Series with a new alias/name.
1582 1583 1584 1585 1586 |
# File 'lib/polars/series.rb', line 1582 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.
645 646 647 648 649 650 651 |
# File 'lib/polars/series.rb', line 645 def all?(ignore_nulls: true, &block) if block_given? map_elements(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.
621 622 623 624 625 626 627 |
# File 'lib/polars/series.rb', line 621 def any?(ignore_nulls: true, &block) if block_given? map_elements(return_dtype: Boolean, skip_nulls: ignore_nulls, &block).any? else _s.any(ignore_nulls) end end |
#append(other) ⇒ Series
Append a Series to this one.
1813 1814 1815 1816 1817 |
# File 'lib/polars/series.rb', line 1813 def append(other) Utils.require_same_type(self, other) _s.append(other._s) self end |
#approx_n_unique ⇒ Object
Approximate count of unique values.
This is done using the HyperLogLog++ algorithm for cardinality estimation.
6398 6399 6400 |
# File 'lib/polars/series.rb', line 6398 def approx_n_unique _s.approx_n_unique end |
#arccos ⇒ Series
Compute the element-wise value for the inverse cosine.
3689 3690 3691 |
# File 'lib/polars/series.rb', line 3689 def arccos super end |
#arccosh ⇒ Series
Compute the element-wise value for the inverse hyperbolic cosine.
3747 3748 3749 |
# File 'lib/polars/series.rb', line 3747 def arccosh super end |
#arcsin ⇒ Series
Compute the element-wise value for the inverse sine.
3670 3671 3672 |
# File 'lib/polars/series.rb', line 3670 def arcsin super end |
#arcsinh ⇒ Series
Compute the element-wise value for the inverse hyperbolic sine.
3727 3728 3729 |
# File 'lib/polars/series.rb', line 3727 def arcsinh super end |
#arctan ⇒ Series
Compute the element-wise value for the inverse tangent.
3708 3709 3710 |
# File 'lib/polars/series.rb', line 3708 def arctan super end |
#arctanh ⇒ Series
Compute the element-wise value for the inverse hyperbolic tangent.
3770 3771 3772 |
# File 'lib/polars/series.rb', line 3770 def arctanh super end |
#arg_max ⇒ Integer?
Get the index of the maximal value.
2297 2298 2299 |
# File 'lib/polars/series.rb', line 2297 def arg_max _s.arg_max end |
#arg_min ⇒ Integer?
Get the index of the minimal value.
2285 2286 2287 |
# File 'lib/polars/series.rb', line 2285 def arg_min _s.arg_min end |
#arg_sort(descending: false, nulls_last: false) ⇒ Series
Get the index values that would sort this Series.
2254 2255 2256 |
# File 'lib/polars/series.rb', line 2254 def arg_sort(descending: false, nulls_last: false) super end |
#arg_true ⇒ Series
Get index values where Boolean Series evaluate true.
2711 2712 2713 |
# File 'lib/polars/series.rb', line 2711 def arg_true Polars.arg_where(self, eager: true) end |
#arg_unique ⇒ Series
Get unique index as Series.
2273 2274 2275 |
# File 'lib/polars/series.rb', line 2273 def arg_unique super end |
#arr ⇒ ArrayNameSpace
Create an object namespace of all array related methods.
6412 6413 6414 |
# File 'lib/polars/series.rb', line 6412 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").
3362 3363 3364 |
# File 'lib/polars/series.rb', line 3362 def backward_fill(limit: nil) fill_null(strategy: "backward", limit: limit) end |
#bin ⇒ BinaryNameSpace
Create an object namespace of all binary related methods.
6419 6420 6421 |
# File 'lib/polars/series.rb', line 6419 def bin BinaryNameSpace.new(self) end |
#bitwise_and ⇒ Object
Perform an aggregation of bitwise ANDs.
6347 6348 6349 |
# File 'lib/polars/series.rb', line 6347 def bitwise_and _s.bitwise_and end |
#bitwise_count_ones ⇒ Series
Evaluate the number of set bits.
6305 6306 6307 |
# File 'lib/polars/series.rb', line 6305 def bitwise_count_ones super end |
#bitwise_count_zeros ⇒ Series
Evaluate the number of unset bits.
6312 6313 6314 |
# File 'lib/polars/series.rb', line 6312 def bitwise_count_zeros super end |
#bitwise_leading_ones ⇒ Series
Evaluate the number most-significant set bits before seeing an unset bit.
6319 6320 6321 |
# File 'lib/polars/series.rb', line 6319 def bitwise_leading_ones super end |
#bitwise_leading_zeros ⇒ Series
Evaluate the number most-significant unset bits before seeing a set bit.
6326 6327 6328 |
# File 'lib/polars/series.rb', line 6326 def bitwise_leading_zeros super end |
#bitwise_or ⇒ Object
Perform an aggregation of bitwise ORs.
6354 6355 6356 |
# File 'lib/polars/series.rb', line 6354 def bitwise_or _s.bitwise_or end |
#bitwise_trailing_ones ⇒ Series
Evaluate the number least-significant set bits before seeing an unset bit.
6333 6334 6335 |
# File 'lib/polars/series.rb', line 6333 def bitwise_trailing_ones super end |
#bitwise_trailing_zeros ⇒ Series
Evaluate the number least-significant unset bits before seeing a set bit.
6340 6341 6342 |
# File 'lib/polars/series.rb', line 6340 def bitwise_trailing_zeros super end |
#bitwise_xor ⇒ Object
Perform an aggregation of bitwise XORs.
6361 6362 6363 |
# File 'lib/polars/series.rb', line 6361 def bitwise_xor _s.bitwise_xor end |
#bottom_k(k: 5) ⇒ Boolean
Return the k smallest elements.
2190 2191 2192 |
# File 'lib/polars/series.rb', line 2190 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.
2224 2225 2226 2227 2228 2229 2230 |
# File 'lib/polars/series.rb', line 2224 def bottom_k_by( by, k: 5, reverse: false ) super end |
#cast(dtype, strict: true, wrap_numerical: false) ⇒ Series
Cast between data types.
2899 2900 2901 2902 |
# File 'lib/polars/series.rb', line 2899 def cast(dtype, strict: true, wrap_numerical: false) dtype = Utils.parse_into_dtype(dtype) self.class._from_rbseries(_s.cast(dtype, strict, wrap_numerical)) end |
#cat ⇒ CatNameSpace
Create an object namespace of all categorical related methods.
6426 6427 6428 |
# File 'lib/polars/series.rb', line 6426 def cat CatNameSpace.new(self) end |
#cbrt ⇒ Series
Compute the cube root of the elements.
602 603 604 |
# File 'lib/polars/series.rb', line 602 def cbrt super end |
#ceil ⇒ Series
Rounds up to the nearest integer value.
Only works on floating point Series.
3416 3417 3418 |
# File 'lib/polars/series.rb', line 3416 def ceil super end |
#chunk_lengths ⇒ Array
Get the length of each individual chunk.
1625 1626 1627 |
# File 'lib/polars/series.rb', line 1625 def chunk_lengths _s.chunk_lengths end |
#clear(n: 0) ⇒ Series
Create an empty copy of the current Series.
The copy has identical name/dtype but no data.
3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 |
# File 'lib/polars/series.rb', line 3264 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(lower_bound = nil, upper_bound = nil) ⇒ Series
Set values outside the given boundaries to the boundary value.
5715 5716 5717 |
# File 'lib/polars/series.rb', line 5715 def clip(lower_bound = nil, upper_bound = nil) super end |
#cos ⇒ Series
Compute the element-wise value for the cosine.
3613 3614 3615 |
# File 'lib/polars/series.rb', line 3613 def cos super end |
#cosh ⇒ Series
Compute the element-wise value for the hyperbolic cosine.
3808 3809 3810 |
# File 'lib/polars/series.rb', line 3808 def cosh super end |
#cot ⇒ Series
Compute the element-wise value for the cotangent.
3651 3652 3653 |
# File 'lib/polars/series.rb', line 3651 def cot super end |
#count ⇒ Integer
Return the number of elements in the Series.
2858 2859 2860 |
# File 'lib/polars/series.rb', line 2858 def count len - null_count end |
#cum_count(reverse: false) ⇒ Series
Return the cumulative count of the non-null values in the column.
1693 1694 1695 |
# File 'lib/polars/series.rb', line 1693 def cum_count(reverse: false) super end |
#cum_max(reverse: false) ⇒ Series
Get an array with the cumulative max computed at every element.
1737 1738 1739 |
# File 'lib/polars/series.rb', line 1737 def cum_max(reverse: false) super end |
#cum_min(reverse: false) ⇒ Series
Get an array with the cumulative min computed at every element.
1715 1716 1717 |
# File 'lib/polars/series.rb', line 1715 def cum_min(reverse: false) super end |
#cum_prod(reverse: false) ⇒ Series
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.
1763 1764 1765 |
# File 'lib/polars/series.rb', line 1763 def cum_prod(reverse: false) super end |
#cum_sum(reverse: false) ⇒ Series
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.
1670 1671 1672 |
# File 'lib/polars/series.rb', line 1670 def cum_sum(reverse: false) super end |
#cumulative_eval(expr, min_samples: 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.
1560 1561 1562 |
# File 'lib/polars/series.rb', line 1560 def cumulative_eval(expr, min_samples: 1) super end |
#cut(breaks, labels: nil, left_closed: false, include_breaks: false) ⇒ Series
Bin continuous values into discrete categories.
1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 |
# File 'lib/polars/series.rb', line 1219 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(percentiles: [0.25, 0.5, 0.75], interpolation: "nearest") ⇒ DataFrame
Quick summary statistics of a series.
Series with mixed datatypes will return summary statistics for the datatype of the first value.
881 882 883 884 885 886 887 888 889 890 891 |
# File 'lib/polars/series.rb', line 881 def describe( percentiles: [0.25, 0.5, 0.75], interpolation: "nearest" ) stats = to_frame.describe( percentiles: percentiles, interpolation: interpolation ) stats.columns = ["statistic", "value"] stats.filter(F.col("value").is_not_null) end |
#diff(n: 1, null_behavior: "ignore") ⇒ Series
Calculate the n-th discrete difference.
5582 5583 5584 |
# File 'lib/polars/series.rb', line 5582 def diff(n: 1, null_behavior: "ignore") super end |
#dot(other) ⇒ Numeric
Compute the dot/inner product between two Series.
3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 |
# File 'lib/polars/series.rb', line 3525 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.
791 792 793 |
# File 'lib/polars/series.rb', line 791 def drop_nans super end |
#drop_nulls ⇒ Series
Create a new Series that copies data from this Series without null values.
772 773 774 |
# File 'lib/polars/series.rb', line 772 def drop_nulls super end |
#dt ⇒ DateTimeNameSpace
Create an object namespace of all datetime related methods.
6433 6434 6435 |
# File 'lib/polars/series.rb', line 6433 def dt DateTimeNameSpace.new(self) end |
#dtype ⇒ Symbol
Get the data type of this Series.
98 99 100 |
# File 'lib/polars/series.rb', line 98 def dtype _s.dtype end |
#each ⇒ Object
Returns an enumerator.
427 428 429 430 431 432 433 |
# File 'lib/polars/series.rb', line 427 def each return to_enum(:each) unless block_given? length.times do |i| yield self[i] end end |
#entropy(base: Math::E, normalize: true) ⇒ Float?
Computes the entropy.
Uses the formula -sum(pk * log(pk) where pk are discrete probabilities.
1525 1526 1527 |
# File 'lib/polars/series.rb', line 1525 def entropy(base: Math::E, normalize: true) Polars.select(Polars.lit(self).entropy(base: base, normalize: normalize)).to_series[0] end |
#eq(other) ⇒ Series
Method equivalent of operator expression series == other.
242 243 244 |
# File 'lib/polars/series.rb', line 242 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.
278 279 280 281 282 283 |
# File 'lib/polars/series.rb', line 278 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, check_dtypes: false, check_names: false, null_equal: true) ⇒ Boolean
Check if series is equal with another Series.
2846 2847 2848 |
# File 'lib/polars/series.rb', line 2846 def equals(other, check_dtypes: false, check_names: false, null_equal: true) _s.equals(other._s, check_dtypes, 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.
563 564 565 566 |
# File 'lib/polars/series.rb', line 563 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_samples: 1, ignore_nulls: false) ⇒ Series
Exponentially-weighted moving average.
6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 |
# File 'lib/polars/series.rb', line 6036 def ewm_mean( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, min_samples: 1, ignore_nulls: false ) super end |
#ewm_mean_by(by, half_life:) ⇒ Series
Compute time-based exponentially weighted moving average.
6103 6104 6105 6106 6107 6108 |
# File 'lib/polars/series.rb', line 6103 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_samples: 1, ignore_nulls: false) ⇒ Series
Exponentially-weighted moving standard deviation.
6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 |
# File 'lib/polars/series.rb', line 6125 def ewm_std( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false ) super end |
#ewm_var(com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false) ⇒ Series
Exponentially-weighted moving variance.
6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 |
# File 'lib/polars/series.rb', line 6153 def ewm_var( com: nil, span: nil, half_life: nil, alpha: nil, adjust: true, bias: false, min_samples: 1, ignore_nulls: false ) super end |
#exp ⇒ Series
Compute the exponential, element-wise.
753 754 755 |
# File 'lib/polars/series.rb', line 753 def exp super end |
#explode(empty_as_null: true, keep_nulls: true) ⇒ Series
Explode a list or utf8 Series.
This means that every item is expanded to a new row.
2822 2823 2824 |
# File 'lib/polars/series.rb', line 2822 def explode(empty_as_null: true, keep_nulls: true) super end |
#ext ⇒ ExtensionNameSpace
Create an object namespace of all extension type related methods.
6454 6455 6456 |
# File 'lib/polars/series.rb', line 6454 def ext ExtensionNameSpace.new(self) end |
#extend(other) ⇒ Series
This method modifies the series in-place. The series is returned for convenience only.
Extend the memory backed by this Series with the values from another.
Different from append, which adds the chunks from other to the chunks of
this series, extend appends the data from other to the underlying memory
locations and thus may cause a reallocation (which is expensive).
If this does not cause a reallocation, the resulting data structure will not
have any extra chunks and thus will yield faster queries.
Prefer extend over append when you want to do a query after a single
append. For instance, during online operations where you add n rows
and rerun a query.
Prefer append over extend when you want to append many times
before doing a query. For instance, when you read in multiple files and want
to store them in a single Series. In the latter case, finish the sequence
of append operations with a rechunk.
1864 1865 1866 1867 1868 |
# File 'lib/polars/series.rb', line 1864 def extend(other) Utils.require_same_type(self, other) _s.extend(other._s) self end |
#extend_constant(value, n) ⇒ Series
Extend the Series with given number of values.
6189 6190 6191 |
# File 'lib/polars/series.rb', line 6189 def extend_constant(value, n) super end |
#fill_nan(value) ⇒ Series
Fill floating point NaN value with a fill value.
3298 3299 3300 |
# File 'lib/polars/series.rb', line 3298 def fill_nan(value) super end |
#fill_null(value = nil, strategy: nil, limit: nil) ⇒ Series
Fill null values using the specified value or strategy.
3350 3351 3352 |
# File 'lib/polars/series.rb', line 3350 def fill_null(value = nil, strategy: nil, limit: nil) super end |
#filter(predicate) ⇒ Series
Filter elements by a boolean mask.
1888 1889 1890 1891 1892 1893 |
# File 'lib/polars/series.rb', line 1888 def filter(predicate) if predicate.is_a?(::Array) predicate = Series.new("", predicate) end Utils.wrap_s(_s.filter(predicate._s)) end |
#first(ignore_nulls: false) ⇒ Object
Get the first element of the Series.
Returns nil if the Series is empty.
6375 6376 6377 |
# File 'lib/polars/series.rb', line 6375 def first(ignore_nulls: false) _s.first(ignore_nulls) end |
#flags ⇒ Hash
Get flags that are set on the Series.
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/polars/series.rb', line 110 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.
3395 3396 3397 |
# File 'lib/polars/series.rb', line 3395 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").
3374 3375 3376 |
# File 'lib/polars/series.rb', line 3374 def forward_fill(limit: nil) fill_null(strategy: "forward", limit: limit) end |
#gather(indices, null_on_oob: false) ⇒ Series
Take values by index.
2413 2414 2415 |
# File 'lib/polars/series.rb', line 2413 def gather(indices, null_on_oob: false) super end |
#gather_every(n, offset = 0) ⇒ Series
Take every nth value in the Series and return as new Series.
1995 1996 1997 |
# File 'lib/polars/series.rb', line 1995 def gather_every(n, offset = 0) super end |
#ge(other) ⇒ Series
Method equivalent of operator expression series >= other.
334 335 336 |
# File 'lib/polars/series.rb', line 334 def ge(other) self >= other end |
#get_chunks ⇒ Array
Get the chunks of this Series as a list of Series.
6281 6282 6283 |
# File 'lib/polars/series.rb', line 6281 def get_chunks _s.get_chunks end |
#gt(other) ⇒ Series
Method equivalent of operator expression series > other.
341 342 343 |
# File 'lib/polars/series.rb', line 341 def gt(other) self > other end |
#has_nulls ⇒ Boolean
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.
2444 2445 2446 |
# File 'lib/polars/series.rb', line 2444 def has_nulls _s.has_nulls end |
#hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) ⇒ Series
Hash the Series.
The hash value is of type UInt64.
5369 5370 5371 |
# File 'lib/polars/series.rb', line 5369 def hash_(seed = 0, seed_1 = nil, seed_2 = nil, seed_3 = nil) super end |
#head(n = 10) ⇒ Series
Get the first n rows.
1912 1913 1914 1915 1916 1917 |
# File 'lib/polars/series.rb', line 1912 def head(n = 10) if n < 0 n = [0, len + n].max end self.class._from_rbseries(_s.head(n)) 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.
1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 |
# File 'lib/polars/series.rb', line 1412 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.
6298 6299 6300 |
# File 'lib/polars/series.rb', line 6298 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.
3233 3234 3235 |
# File 'lib/polars/series.rb', line 3233 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.
5431 5432 5433 |
# File 'lib/polars/series.rb', line 5431 def interpolate(method: "linear") super end |
#interpolate_by(by) ⇒ Series
Fill null values using interpolation based on another column.
5455 5456 5457 |
# File 'lib/polars/series.rb', line 5455 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.
3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 |
# File 'lib/polars/series.rb', line 3052 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_close(other, abs_tol: 0.0, rel_tol: 1.0e-09, nans_equal: false) ⇒ Series
Get a boolean mask of the values being close to the other values.
3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 |
# File 'lib/polars/series.rb', line 3100 def is_close( other, abs_tol: 0.0, rel_tol: 1.0e-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_duplicated ⇒ Series
Get mask of all duplicated values.
2793 2794 2795 |
# File 'lib/polars/series.rb', line 2793 def is_duplicated super end |
#is_empty(ignore_nulls: false) ⇒ Boolean Also known as: empty?
Check if the Series is empty.
2460 2461 2462 2463 2464 2465 2466 2467 |
# File 'lib/polars/series.rb', line 2460 def is_empty(ignore_nulls: false) if ignore_nulls msg = "the `ignore_nulls` parameter of `Series.is_empty()` is considered unstable." Utils.issue_unstable_warning(msg) end _s.is_empty(ignore_nulls: ignore_nulls) end |
#is_finite ⇒ Series
Returns a boolean Series indicating which values are finite.
2567 2568 2569 |
# File 'lib/polars/series.rb', line 2567 def is_finite super end |
#is_first_distinct ⇒ Series
Get a mask of the first unique value.
2752 2753 2754 |
# File 'lib/polars/series.rb', line 2752 def is_first_distinct super end |
#is_in(other, nulls_equal: false) ⇒ Series Also known as: in?
Check if elements of this Series are in the other Series.
2693 2694 2695 |
# File 'lib/polars/series.rb', line 2693 def is_in(other, nulls_equal: false) super end |
#is_infinite ⇒ Series
Returns a boolean Series indicating which values are infinite.
2586 2587 2588 |
# File 'lib/polars/series.rb', line 2586 def is_infinite super end |
#is_last_distinct ⇒ Series
Return a boolean mask indicating the last occurrence of each distinct value.
2773 2774 2775 |
# File 'lib/polars/series.rb', line 2773 def is_last_distinct super end |
#is_nan ⇒ Series
Returns a boolean Series indicating which values are NaN.
2606 2607 2608 |
# File 'lib/polars/series.rb', line 2606 def is_nan super end |
#is_not_nan ⇒ Series
Returns a boolean Series indicating which values are not NaN.
2626 2627 2628 |
# File 'lib/polars/series.rb', line 2626 def is_not_nan super end |
#is_not_null ⇒ Series
Returns a boolean Series indicating which values are not null.
2548 2549 2550 |
# File 'lib/polars/series.rb', line 2548 def is_not_null super end |
#is_null ⇒ Series
Returns a boolean Series indicating which values are null.
2528 2529 2530 |
# File 'lib/polars/series.rb', line 2528 def is_null super end |
#is_sorted(descending: false, nulls_last: false) ⇒ Boolean Also known as: sorted?
Check if the Series is sorted.
2488 2489 2490 |
# File 'lib/polars/series.rb', line 2488 def is_sorted(descending: false, nulls_last: false) _s.is_sorted(descending, nulls_last) end |
#is_unique ⇒ Series
Get mask of all unique values.
2731 2732 2733 |
# File 'lib/polars/series.rb', line 2731 def is_unique super 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].
522 523 524 525 526 527 528 529 530 531 532 533 534 535 |
# File 'lib/polars/series.rb', line 522 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
5686 5687 5688 |
# File 'lib/polars/series.rb', line 5686 def kurtosis(fisher: true, bias: true) _s.kurtosis(fisher, bias) end |
#last(ignore_nulls: false) ⇒ Object
Get the last element of the Series.
Returns nil if the Series is empty.
6389 6390 6391 |
# File 'lib/polars/series.rb', line 6389 def last(ignore_nulls: false) _s.last(ignore_nulls) end |
#le(other) ⇒ Series
Method equivalent of operator expression series <= other.
228 229 230 |
# File 'lib/polars/series.rb', line 228 def le(other) self <= other end |
#len ⇒ Integer Also known as: length, size
Return the number of elements in the Series.
2870 2871 2872 |
# File 'lib/polars/series.rb', line 2870 def len _s.len end |
#limit(n = 10) ⇒ Series
Get the first n rows.
Alias for #head.
1962 1963 1964 |
# File 'lib/polars/series.rb', line 1962 def limit(n = 10) head(n) end |
#list ⇒ ListNameSpace
Create an object namespace of all list related methods.
6405 6406 6407 |
# File 'lib/polars/series.rb', line 6405 def list ListNameSpace.new(self) end |
#log(base = Math::E) ⇒ Series
Compute the logarithm to a given base.
696 697 698 |
# File 'lib/polars/series.rb', line 696 def log(base = Math::E) super end |
#log10 ⇒ Series
Compute the base 10 logarithm of the input array, element-wise.
734 735 736 |
# File 'lib/polars/series.rb', line 734 def log10 super end |
#log1p ⇒ Series
Compute the natural logarithm of the input array plus one, element-wise.
715 716 717 |
# File 'lib/polars/series.rb', line 715 def log1p super end |
#lower_bound ⇒ Series
Return the lower bound of this Series' dtype as a unit Series.
5742 5743 5744 |
# File 'lib/polars/series.rb', line 5742 def lower_bound super end |
#lt(other) ⇒ Series
Method equivalent of operator expression series < other.
235 236 237 |
# File 'lib/polars/series.rb', line 235 def lt(other) self < other end |
#map_elements(return_dtype: nil, skip_nulls: true, &function) ⇒ Series Also known as: map
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.
3858 3859 3860 3861 3862 3863 3864 3865 |
# File 'lib/polars/series.rb', line 3858 def map_elements(return_dtype: nil, skip_nulls: true, &function) if return_dtype.nil? pl_return_dtype = nil else pl_return_dtype = Utils.parse_into_dtype(return_dtype) end Utils.wrap_s(_s.map_elements(function, pl_return_dtype, skip_nulls)) end |
#max ⇒ Object
Get the maximum value in this Series.
1014 1015 1016 |
# File 'lib/polars/series.rb', line 1014 def max _s.max end |
#max_by(by) ⇒ Object
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Get the maximum value in this Series, ordered by an expression.
If the by expression has multiple values equal to the maximum it is not defined which value will be chosen.
1037 1038 1039 |
# File 'lib/polars/series.rb', line 1037 def max_by(by) to_frame.select_seq(F.col(name).max_by(by)).item end |
#mean ⇒ Float?
Reduce this Series to the mean value.
917 918 919 |
# File 'lib/polars/series.rb', line 917 def mean _s.mean end |
#median ⇒ Float?
Get the median of this Series.
1123 1124 1125 |
# File 'lib/polars/series.rb', line 1123 def median _s.median end |
#min ⇒ Object
Get the minimal value in this Series.
979 980 981 |
# File 'lib/polars/series.rb', line 979 def min _s.min end |
#min_by(by) ⇒ Expr
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Get the minimum value in this Series, ordered by an expression.
If the by expression has multiple values equal to the minimum it is not defined which value will be chosen.
1002 1003 1004 |
# File 'lib/polars/series.rb', line 1002 def min_by(by) to_frame.select_seq(F.col(name).min_by(by)).item end |
#mode(maintain_order: false) ⇒ Series
Compute the most occurring value(s).
Can return multiple Values.
3554 3555 3556 |
# File 'lib/polars/series.rb', line 3554 def mode(maintain_order: false) super end |
#n_chunks ⇒ Integer
Get the number of chunks that this Series contains.
1644 1645 1646 |
# File 'lib/polars/series.rb', line 1644 def n_chunks _s.n_chunks end |
#n_unique ⇒ Integer
Count the number of unique values in this Series.
5322 5323 5324 |
# File 'lib/polars/series.rb', line 5322 def n_unique _s.n_unique end |
#name ⇒ String
Get the name of this Series.
129 130 131 |
# File 'lib/polars/series.rb', line 129 def name _s.name end |
#nan_max ⇒ Object
Get maximum value, but propagate/poison encountered NaN values.
1054 1055 1056 |
# File 'lib/polars/series.rb', line 1054 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.
1071 1072 1073 |
# File 'lib/polars/series.rb', line 1071 def nan_min to_frame.select(F.col(name).nan_min)[0, 0] end |
#ne(other) ⇒ Series
Method equivalent of operator expression series != other.
288 289 290 |
# File 'lib/polars/series.rb', line 288 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.
324 325 326 327 328 329 |
# File 'lib/polars/series.rb', line 324 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.
6229 6230 6231 |
# File 'lib/polars/series.rb', line 6229 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.
669 670 671 672 673 674 675 |
# File 'lib/polars/series.rb', line 669 def none?(&block) if block_given? map_elements(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.
2508 2509 2510 |
# File 'lib/polars/series.rb', line 2508 def not_ self.class._from_rbseries(_s.not_) end |
#null_count ⇒ Integer
Count the null values in this Series.
2425 2426 2427 |
# File 'lib/polars/series.rb', line 2425 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.
5633 5634 5635 |
# File 'lib/polars/series.rb', line 5633 def pct_change(n: 1) super end |
#peak_max ⇒ Series
Get a boolean mask of the local maximum peaks.
5289 5290 5291 |
# File 'lib/polars/series.rb', line 5289 def peak_max super end |
#peak_min ⇒ Series
Get a boolean mask of the local minimum peaks.
5310 5311 5312 |
# File 'lib/polars/series.rb', line 5310 def peak_min super end |
#plot ⇒ SeriesPlot
This functionality is currently considered unstable. It may be changed at any point without it being considered a breaking change.
Create a plot namespace.
6469 6470 6471 |
# File 'lib/polars/series.rb', line 6469 def plot SeriesPlot.new(self) 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.
967 968 969 |
# File 'lib/polars/series.rb', line 967 def pow(exponent) to_frame.select_seq(F.col(name).pow(exponent)).to_series end |
#product ⇒ Numeric
Reduce this Series to the product value.
929 930 931 |
# File 'lib/polars/series.rb', line 929 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.
1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 |
# File 'lib/polars/series.rb', line 1304 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.
1140 1141 1142 |
# File 'lib/polars/series.rb', line 1140 def quantile(quantile, interpolation: "nearest") _s.quantile(quantile, interpolation) end |
#rank(method: "average", descending: false, seed: nil) ⇒ Series
Assign ranks to data, dealing with ties appropriately.
5532 5533 5534 |
# File 'lib/polars/series.rb', line 5532 def rank(method: "average", descending: false, seed: nil) super end |
#rechunk(in_place: false) ⇒ Series
Create a single chunk of memory for this Series.
2971 2972 2973 2974 |
# File 'lib/polars/series.rb', line 2971 def rechunk(in_place: false) opt_s = _s.rechunk(in_place) in_place ? self : Utils.wrap_s(opt_s) end |
#reinterpret(signed: nil, dtype: nil) ⇒ Series
Reinterpret the underlying bits as a signed/unsigned integer or float.
This operation is only allowed for numeric types of the same size. For lower bits numbers, you can safely use the cast operation.
Either signed or dtype can be specified.
5410 5411 5412 |
# File 'lib/polars/series.rb', line 5410 def reinterpret(signed: nil, dtype: nil) super end |
#rename(name) ⇒ Series
Rename this Series.
1606 1607 1608 |
# File 'lib/polars/series.rb', line 1606 def rename(name) self.alias(name) 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.
6483 6484 6485 |
# File 'lib/polars/series.rb', line 6483 def repeat_by(by) super end |
#replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace values by different values.
5841 5842 5843 |
# File 'lib/polars/series.rb', line 5841 def replace(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) super end |
#replace_strict(old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil) ⇒ Series
Replace all values by different values.
5950 5951 5952 5953 5954 5955 5956 5957 |
# File 'lib/polars/series.rb', line 5950 def replace_strict( old, new = NO_DEFAULT, default: NO_DEFAULT, return_dtype: nil ) super end |
#reshape(dimensions) ⇒ Series
Reshape this Series to a flat Series or a Series of Lists.
5995 5996 5997 |
# File 'lib/polars/series.rb', line 5995 def reshape(dimensions) self.class._from_rbseries(_s.reshape(dimensions)) end |
#reverse ⇒ Series
Return Series in reverse order.
2991 2992 2993 |
# File 'lib/polars/series.rb', line 2991 def reverse super end |
#rle ⇒ Series
Get the lengths of runs of identical values.
1347 1348 1349 |
# File 'lib/polars/series.rb', line 1347 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.
1375 1376 1377 |
# File 'lib/polars/series.rb', line 1375 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.
5225 5226 5227 5228 5229 5230 5231 5232 5233 |
# File 'lib/polars/series.rb', line 5225 def rolling_kurtosis( window_size, fisher: true, bias: true, min_samples: nil, center: false ) super end |
#rolling_map(window_size, weights: nil, min_samples: nil, center: false, &function) ⇒ Series
This functionality is considered unstable. It may be changed at any point without it being considered a breaking change.
Compute a custom rolling window function.
4744 4745 4746 4747 4748 4749 4750 4751 4752 |
# File 'lib/polars/series.rb', line 4744 def rolling_map( window_size, weights: nil, min_samples: nil, center: false, &function ) super end |
#rolling_max(window_size, weights: nil, min_samples: 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.
4189 4190 4191 4192 4193 4194 4195 4196 |
# File 'lib/polars/series.rb', line 4189 def rolling_max( window_size, weights: nil, min_samples: nil, center: false ) super end |
#rolling_max_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 max based on another series.
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]
4148 4149 4150 4151 4152 4153 4154 4155 |
# File 'lib/polars/series.rb', line 4148 def rolling_max_by( by, window_size, min_samples: 1, closed: "right" ) super end |
#rolling_mean(window_size, weights: nil, min_samples: 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.
4314 4315 4316 4317 4318 4319 4320 4321 |
# File 'lib/polars/series.rb', line 4314 def rolling_mean( window_size, weights: nil, min_samples: nil, center: false ) super end |
#rolling_mean_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 mean based on another series.
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]
4273 4274 4275 4276 4277 4278 4279 4280 |
# File 'lib/polars/series.rb', line 4273 def rolling_mean_by( by, window_size, min_samples: 1, closed: "right" ) super end |
#rolling_median(window_size, weights: nil, min_samples: nil, center: false) ⇒ Series
Compute a rolling median.
4867 4868 4869 4870 4871 4872 4873 4874 |
# File 'lib/polars/series.rb', line 4867 def rolling_median( window_size, weights: nil, min_samples: nil, center: false ) super end |
#rolling_median_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 based on another series.
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]
4829 4830 4831 4832 4833 4834 4835 4836 |
# File 'lib/polars/series.rb', line 4829 def rolling_median_by( by, window_size, min_samples: 1, closed: "right" ) super end |
#rolling_min(window_size, weights: nil, min_samples: 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.
4064 4065 4066 4067 4068 4069 4070 4071 |
# File 'lib/polars/series.rb', line 4064 def rolling_min( window_size, weights: nil, min_samples: nil, center: false ) super end |
#rolling_min_by(by, window_size, min_samples: 1, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 min based on another series.
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]
4023 4024 4025 4026 4027 4028 4029 4030 |
# File 'lib/polars/series.rb', line 4023 def rolling_min_by( by, window_size, min_samples: 1, closed: "right" ) super end |
#rolling_quantile(quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false) ⇒ Series
Compute a rolling quantile.
5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 |
# File 'lib/polars/series.rb', line 5013 def rolling_quantile( quantile, interpolation: "nearest", window_size: 2, weights: nil, min_samples: nil, center: false ) super end |
#rolling_quantile_by(by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 based on another series.
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]
4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 |
# File 'lib/polars/series.rb', line 4955 def rolling_quantile_by( by, window_size, quantile:, interpolation: "nearest", min_samples: 1, closed: "right" ) super end |
#rolling_rank(window_size, method: "average", seed: nil, 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 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.
5151 5152 5153 5154 5155 5156 5157 5158 5159 |
# File 'lib/polars/series.rb', line 5151 def rolling_rank( window_size, method: "average", seed: nil, min_samples: nil, center: false ) super end |
#rolling_rank_by(by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right") ⇒ Series
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]
5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 |
# File 'lib/polars/series.rb', line 5089 def rolling_rank_by( by, window_size, method: "average", seed: nil, min_samples: 1, closed: "right" ) super end |
#rolling_skew(window_size, bias: true, min_samples: nil, center: false) ⇒ Series
Compute a rolling skew.
5186 5187 5188 |
# File 'lib/polars/series.rb', line 5186 def rolling_skew(window_size, bias: true, min_samples: nil, center: false) super end |
#rolling_std(window_size, weights: nil, min_samples: 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.
4570 4571 4572 4573 4574 4575 4576 4577 4578 |
# File 'lib/polars/series.rb', line 4570 def rolling_std( window_size, weights: nil, min_samples: nil, center: false, ddof: 1 ) super end |
#rolling_std_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 based on another series.
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]
4525 4526 4527 4528 4529 4530 4531 4532 4533 |
# File 'lib/polars/series.rb', line 4525 def rolling_std_by( by, window_size, min_samples: 1, closed: "right", ddof: 1 ) super end |
#rolling_sum(window_size, weights: nil, min_samples: 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.
4439 4440 4441 4442 4443 4444 4445 4446 |
# File 'lib/polars/series.rb', line 4439 def rolling_sum( window_size, weights: nil, min_samples: nil, center: false ) super end |
#rolling_sum_by(by, window_size, min_samples: 0, closed: "right") ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 sum based on another series.
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]
4398 4399 4400 4401 4402 4403 4404 4405 |
# File 'lib/polars/series.rb', line 4398 def rolling_sum_by( by, window_size, min_samples: 0, closed: "right" ) super end |
#rolling_var(window_size, weights: nil, min_samples: 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.
4702 4703 4704 4705 4706 4707 4708 4709 4710 |
# File 'lib/polars/series.rb', line 4702 def rolling_var( window_size, weights: nil, min_samples: nil, center: false, ddof: 1 ) super end |
#rolling_var_by(by, window_size, min_samples: 1, closed: "right", ddof: 1) ⇒ Series
This functionality is considered unstable. It may be changed at any point 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 based on another series.
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]
4657 4658 4659 4660 4661 4662 4663 4664 4665 |
# File 'lib/polars/series.rb', line 4657 def rolling_var_by( by, window_size, min_samples: 1, closed: "right", ddof: 1 ) super end |
#round(decimals = 0, mode: "half_to_even") ⇒ Series
Round underlying floating point data by decimals digits.
The default rounding mode is "half to even" (also known as "bankers' rounding").
3487 3488 3489 |
# File 'lib/polars/series.rb', line 3487 def round(decimals = 0, mode: "half_to_even") super end |
#round_sig_figs(digits) ⇒ Series
Round to a number of significant figures.
3509 3510 3511 |
# File 'lib/polars/series.rb', line 3509 def round_sig_figs(digits) super end |
#sample(n: nil, fraction: nil, with_replacement: false, shuffle: false, seed: nil) ⇒ Series
Sample from this Series.
5262 5263 5264 5265 5266 5267 5268 5269 5270 |
# File 'lib/polars/series.rb', line 5262 def sample( n: nil, fraction: nil, with_replacement: false, shuffle: false, seed: nil ) super end |
#scatter(indices, values) ⇒ Series
Set values at the index locations.
3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 |
# File 'lib/polars/series.rb', line 3191 def scatter(indices, values) if indices.is_a?(Integer) indices = [indices] end if indices.length == 0 return self end indices = Series.new("", indices) if values.is_a?(Integer) || values.is_a?(Float) || Utils.bool?(values) || values.is_a?(::String) || values.nil? values = Series.new("", [values]) # if we need to set more than a single value, we extend it if indices.length > 0 values = values.extend_constant(values[0], indices.length - 1) end elsif !values.is_a?(Series) values = Series.new("", values) end _s.scatter(indices._s, values._s) self end |
#search_sorted(element, side: "any", descending: false) ⇒ Integer
Find indices where elements should be inserted to maintain order.
2360 2361 2362 2363 2364 2365 2366 |
# File 'lib/polars/series.rb', line 2360 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.
3167 3168 3169 |
# File 'lib/polars/series.rb', line 3167 def set(filter, value) Utils.wrap_s(_s.send("set_with_mask_#{DTYPE_TO_FFINAME.fetch(dtype.class)}", filter._s, value)) end |
#set_sorted(descending: 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.
6210 6211 6212 |
# File 'lib/polars/series.rb', line 6210 def set_sorted(descending: false) Utils.wrap_s(_s.set_sorted(descending)) end |
#shape ⇒ Array
Shape of this Series.
141 142 143 |
# File 'lib/polars/series.rb', line 141 def shape [_s.len] end |
#shift(n = 1, fill_value: nil) ⇒ Series
Shift the values by a given period.
3900 3901 3902 |
# File 'lib/polars/series.rb', line 3900 def shift(n = 1, fill_value: nil) 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.
6254 6255 6256 |
# File 'lib/polars/series.rb', line 6254 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).
5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 |
# File 'lib/polars/series.rb', line 5332 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.
6017 6018 6019 |
# File 'lib/polars/series.rb', line 6017 def shuffle(seed: nil) super end |
#sign ⇒ Series
Compute the element-wise indication of the sign.
3575 3576 3577 |
# File 'lib/polars/series.rb', line 3575 def sign super end |
#sin ⇒ Series
Compute the element-wise value for the sine.
3594 3595 3596 |
# File 'lib/polars/series.rb', line 3594 def sin super end |
#sinh ⇒ Series
Compute the element-wise value for the hyperbolic sine.
3789 3790 3791 |
# File 'lib/polars/series.rb', line 3789 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.
5654 5655 5656 |
# File 'lib/polars/series.rb', line 5654 def skew(bias: true) _s.skew(bias) end |
#slice(offset, length = nil) ⇒ Series
Get a slice of this Series.
1787 1788 1789 |
# File 'lib/polars/series.rb', line 1787 def slice(offset, length = nil) self.class._from_rbseries(_s.slice(offset, length)) end |
#sort(descending: false, nulls_last: false, multithreaded: true, in_place: false) ⇒ Series
Sort this Series.
2103 2104 2105 2106 2107 2108 2109 2110 |
# File 'lib/polars/series.rb', line 2103 def sort(descending: false, nulls_last: false, multithreaded: true, in_place: false) if in_place self._s = _s.sort(descending, nulls_last, multithreaded) self else Utils.wrap_s(_s.sort(descending, nulls_last, multithreaded)) end end |
#sql(query, table_name: "self") ⇒ DataFrame
This functionality is considered unstable, although it is close to being considered stable. It may be changed at any point without it being considered a breaking change.
- The calling Series is automatically registered as a table in the SQLContext
under the name "self". If you want access to the DataFrames, LazyFrames, and
other Series found in the current globals, use :meth:
pl.sql <polars.sql>. - More control over registration and execution behaviour is available by
using the :class:
SQLContextobject. - The SQL query executes in lazy mode before being collected and returned as a DataFrame.
- It is recommended to name your Series for use with SQL, otherwise the default
Series name (an empty string) is used; while
""is valid, it is awkward.
Execute a SQL query against the Series.
2064 2065 2066 |
# File 'lib/polars/series.rb', line 2064 def sql(query, table_name: "self") to_frame.sql(query, table_name: table_name) end |
#sqrt ⇒ Series
Compute the square root of the elements.
583 584 585 |
# File 'lib/polars/series.rb', line 583 def sqrt super end |
#std(ddof: 1) ⇒ Float?
Get the standard deviation of this Series.
1087 1088 1089 1090 1091 1092 1093 |
# File 'lib/polars/series.rb', line 1087 def std(ddof: 1) if !dtype.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.
6440 6441 6442 |
# File 'lib/polars/series.rb', line 6440 def str StringNameSpace.new(self) end |
#struct ⇒ StructNameSpace
Create an object namespace of all struct related methods.
6447 6448 6449 |
# File 'lib/polars/series.rb', line 6447 def struct StructNameSpace.new(self) end |
#sum ⇒ Numeric
Dtypes in \{Int8, UInt8, Int16, UInt16} are cast to Int64 before summing to prevent overflow issues.
Reduce this Series to the sum value.
905 906 907 |
# File 'lib/polars/series.rb', line 905 def sum _s.sum end |
#tail(n = 10) ⇒ Series
Get the last n rows.
1936 1937 1938 1939 1940 1941 |
# File 'lib/polars/series.rb', line 1936 def tail(n = 10) if n < 0 n = [0, len + n].max end self.class._from_rbseries(_s.tail(n)) end |
#tan ⇒ Series
Compute the element-wise value for the tangent.
3632 3633 3634 |
# File 'lib/polars/series.rb', line 3632 def tan super end |
#tanh ⇒ Series
Compute the element-wise value for the hyperbolic tangent.
3827 3828 3829 |
# File 'lib/polars/series.rb', line 3827 def tanh super end |
#to_a ⇒ Array
Convert this Series to a Ruby Array. This operation clones data.
2932 2933 2934 |
# File 'lib/polars/series.rb', line 2932 def to_a _s.to_a end |
#to_arrow ⇒ Nanoarrow::Array
Return the underlying Arrow array.
3136 3137 3138 3139 3140 |
# File 'lib/polars/series.rb', line 3136 def to_arrow require "nanoarrow" Nanoarrow::Array.new(self) end |
#to_dummies(separator: "_", drop_first: false, drop_nulls: false) ⇒ DataFrame
Get dummy variables.
1169 1170 1171 |
# File 'lib/polars/series.rb', line 1169 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.
825 826 827 828 829 830 |
# File 'lib/polars/series.rb', line 825 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.
3123 3124 3125 3126 3127 3128 3129 3130 3131 |
# File 'lib/polars/series.rb', line 3123 def to_numo require "numo/narray" if dtype.temporal? Numo::RObject.cast(to_a) else _s.to_numo end end |
#to_physical ⇒ Series
Cast to physical representation of the logical dtype.
2920 2921 2922 |
# File 'lib/polars/series.rb', line 2920 def to_physical super end |
#to_s ⇒ String Also known as: inspect
Returns a string representing the Series.
148 149 150 |
# File 'lib/polars/series.rb', line 148 def to_s _s.to_s end |
#top_k(k: 5) ⇒ Boolean
Return the k largest elements.
2130 2131 2132 |
# File 'lib/polars/series.rb', line 2130 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.
2164 2165 2166 2167 2168 2169 2170 |
# File 'lib/polars/series.rb', line 2164 def top_k_by( by, k: 5, reverse: false ) super end |
#truncate(decimals = 0) ⇒ Series
Truncation discards the fractional part beyond the given number of decimals.
For example, when rounding to 0 decimals 0.25, -0.25, 0.99, and -0.99 will
all round to 0. When rounding to 1 decimal 1.9999 rounds to 1.9 and -1.9999
rounds to -1.9. There is no tiebreak behaviour at midpoint values as there
is with :meth:round so 0.5 and -0.5 will also round to 0 when decimals=1.
This method performs numeric truncation. For truncating temporal
data (dates/datetimes), use :func:Series.dt.truncate instead.
Truncate numeric data toward zero to decimals number of decimal places.
3461 3462 3463 |
# File 'lib/polars/series.rb', line 3461 def truncate(decimals = 0) super end |
#unique(maintain_order: false) ⇒ Series Also known as: uniq
Get unique elements in series.
2386 2387 2388 |
# File 'lib/polars/series.rb', line 2386 def unique(maintain_order: false) super end |
#unique_counts ⇒ Series
Return a count of the unique values in the order of appearance.
1501 1502 1503 |
# File 'lib/polars/series.rb', line 1501 def unique_counts super end |
#upper_bound ⇒ Series
Return the upper bound of this Series' dtype as a unit Series.
5769 5770 5771 |
# File 'lib/polars/series.rb', line 5769 def upper_bound super end |
#value_counts(sort: false, parallel: false, name: nil, normalize: false) ⇒ DataFrame
Count the unique values in a Series.
1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 |
# File 'lib/polars/series.rb', line 1466 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.
1107 1108 1109 1110 1111 1112 1113 |
# File 'lib/polars/series.rb', line 1107 def var(ddof: 1) if !dtype.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.
3944 3945 3946 |
# File 'lib/polars/series.rb', line 3944 def zip_with(mask, other) Utils.wrap_s(_s.zip_with(mask._s, other._s)) end |