pub struct Series<T>where
T: BlackJackData,{
pub name: Option<String>,
pub values: Vec<T>,
/* private fields */
}
Expand description
Series struct for containing underlying Array and other meta data.
Fields§
§name: Option<String>
Name of the series, if added to a dataframe without a name, it will be assigned a default name equalling the cound of columns in the dataframe.
values: Vec<T>
The underlying values of the Series
Implementations§
source§impl<T> Series<T>where
T: BlackJackData,
impl<T> Series<T>where
T: BlackJackData,
Constructor methods for Series<T>
sourcepub fn arange(start: T, stop: T) -> Selfwhere
T: Integer + BlackJackData + ToPrimitive,
Range<T>: Iterator,
Vec<T>: FromIterator<<Range<T> as Iterator>::Item>,
pub fn arange(start: T, stop: T) -> Selfwhere
T: Integer + BlackJackData + ToPrimitive,
Range<T>: Iterator,
Vec<T>: FromIterator<<Range<T> as Iterator>::Item>,
Create a new Series struct from an integer range with one step increments.
Example
use blackjack::prelude::*;
let series: Series<i32> = Series::arange(0, 10);
sourcepub fn unique(&self) -> Series<T>where
T: PartialOrd + Copy,
pub fn unique(&self) -> Series<T>where
T: PartialOrd + Copy,
Get a series of the unique elements held in this series
Example
use blackjack::prelude::*;
let series: Series<i32> = Series::from_vec(vec![1, 2, 1, 0, 1, 0, 1, 1]);
let unique: Series<i32> = series.unique();
assert_eq!(unique, Series::from_vec(vec![0, 1, 2]));
sourcepub fn from_vec(vec: Vec<T>) -> Self
pub fn from_vec(vec: Vec<T>) -> Self
Create a new Series struct from a vector, where T is supported by BlackJackData
.
Example
use blackjack::prelude::*;
let series: Series<i32> = Series::from_vec(vec![1, 2, 3]);
sourcepub fn into_vec(self) -> Vec<T> ⓘ
pub fn into_vec(self) -> Vec<T> ⓘ
Convert the series to a Vec
Type Annotations required
Will coerce elements into the desired DType
primitive, just as
[SeriesTrait::astype()
].
Example
use blackjack::prelude::*;
let series = Series::from_vec(vec![1_f64, 2_f64, 3_f64]);
assert_eq!(
series.clone().into_vec(),
vec![1_f64, 2_f64, 3_f64]
);
sourcepub fn name(&self) -> Option<String>
pub fn name(&self) -> Option<String>
Get the name of the series; Series may not be assigned a string,
so an Option
is returned.
Example
use blackjack::prelude::*;
let mut series = Series::from_vec(vec![1, 2, 3]);
series.set_name("my-series");
assert_eq!(series.name(), Some("my-series".to_string()));
sourcepub fn mode(&self) -> Result<Self, &'static str>where
T: BlackJackData + PartialOrd + Copy + ToPrimitive,
pub fn mode(&self) -> Result<Self, &'static str>where
T: BlackJackData + PartialOrd + Copy + ToPrimitive,
sourcepub fn var(&self) -> Result<f64, &'static str>where
T: BlackJackData + ToPrimitive + Copy,
pub fn var(&self) -> Result<f64, &'static str>where
T: BlackJackData + ToPrimitive + Copy,
Calculate the variance of the series
NOTE that whatever type is determined is what the values are cast to
during calculation of the variance.
ie. series.var::<i32>()
will cast each element into i32
as input
for calculating the variance, and yield a i32
value. If you want all
values to be calculated as f64
then specify that in the type annotation.
sourcepub fn std(&self) -> Result<f64, &'static str>where
T: BlackJackData + ToPrimitive + Copy,
pub fn std(&self) -> Result<f64, &'static str>where
T: BlackJackData + ToPrimitive + Copy,
Calculate the standard deviation of the series
Example
use blackjack::prelude::*;
let series = Series::arange(0, 10).astype::<f32>().unwrap();
let std = series.std().unwrap(); // Ok(2.8722...)
assert!(std > 2.87);
assert!(std < 2.88);
sourcepub fn sum(&self) -> Twhere
T: Num + Copy + Sum,
pub fn sum(&self) -> Twhere
T: Num + Copy + Sum,
Sum a given series, yielding the same type as the elements stored in the series.
sourcepub fn mean<'a>(&'a self) -> Result<f64, &'static str>where
T: ToPrimitive + Copy + Sum<&'a T> + Num + Sum,
pub fn mean<'a>(&'a self) -> Result<f64, &'static str>where
T: ToPrimitive + Copy + Sum<&'a T> + Num + Sum,
Average / Mean of a given series - Requires specifying desired float return annotation
Example:
use blackjack::prelude::*;
let series = Series::arange(0, 5);
let mean = series.mean();
match mean {
Ok(result) => {
println!("Result is: {}", &result);
assert_eq!(result, 2.0);
},
Err(err) => {
panic!("Was unable to compute mean, error: {}", err);
}
}
sourcepub fn quantile(&self, quantile: f64) -> Result<f64, &'static str>where
T: ToPrimitive + BlackJackData,
pub fn quantile(&self, quantile: f64) -> Result<f64, &'static str>where
T: ToPrimitive + BlackJackData,
Calculate the quantile of the series
Example:
use blackjack::prelude::*;
let series = Series::arange(0, 100).astype::<f32>().unwrap();
let qtl = series.quantile(0.5).unwrap(); // `49.5_f32`
assert!(qtl < 49.51);
assert!(qtl > 49.49);
sourcepub fn median<'a>(&'a self) -> Result<f64, &'static str>where
T: ToPrimitive + Copy + PartialOrd,
pub fn median<'a>(&'a self) -> Result<f64, &'static str>where
T: ToPrimitive + Copy + PartialOrd,
Calculate the median of a series
sourcepub fn min(&self) -> Result<T, &'static str>where
T: Num + Clone + Ord + BlackJackData,
pub fn min(&self) -> Result<T, &'static str>where
T: Num + Clone + Ord + BlackJackData,
Find the minimum of the series. If several elements are equally minimum, the first element is returned. If it’s empty, an Error will be returned.
Example
use blackjack::prelude::*;
let series: Series<i32> = Series::arange(10, 100);
assert_eq!(series.min(), Ok(10));
sourcepub fn max(&self) -> Result<T, &'static str>where
T: Num + Clone + Ord,
pub fn max(&self) -> Result<T, &'static str>where
T: Num + Clone + Ord,
Exibits the same behavior and usage of [SeriesTrait::min
], only
yielding the Result
of a maximum.
sourcepub fn dtype(&self) -> DType
pub fn dtype(&self) -> DType
Get the dtype, returns None
if series dtype is unknown.
in such a case, calling .astype()
to coerce all types to a single
type is needed.
sourcepub fn append<V: Into<T>>(&mut self, val: V)
pub fn append<V: Into<T>>(&mut self, val: V)
Append a BlackJackData
element to the Series
Example
use blackjack::prelude::*;
let mut series = Series::from_vec(vec![0, 1, 2]);
assert_eq!(series.len(), 3);
series.append(3);
assert_eq!(series.len(), 4);
sourcepub fn into_raw(self) -> *mut Self
pub fn into_raw(self) -> *mut Self
As boxed pointer, recoverable by Box::from_raw(ptr)
or
SeriesTrait::from_raw(*mut Self)
sourcepub fn groupby(&self, keys: Series<T>) -> SeriesGroupBy<T>where
T: ToPrimitive,
pub fn groupby(&self, keys: Series<T>) -> SeriesGroupBy<T>where
T: ToPrimitive,
Group by method for grouping elements in a Series
by key.
Example
use blackjack::prelude::*;
let series = Series::from_vec(vec![1, 2, 3, 1, 2, 3]);
let keys = Series::from_vec(vec![4, 5, 6, 4, 5, 6]);
let grouped: Series<i32> = series.groupby(keys).sum();
assert_eq!(grouped.len(), 3);
let mut vals = grouped.into_vec();
vals.sort();
assert_eq!(vals, vec![2, 4, 6]);
Trait Implementations§
source§impl<T> Add<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> Add<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series + scalar
source§impl<T> AddAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + FromPrimitive + AddAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> AddAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + FromPrimitive + AddAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series += scalar
source§fn add_assign(&mut self, scalar_val: T)
fn add_assign(&mut self, scalar_val: T)
+=
operation. Read moresource§impl<'de, T> Deserialize<'de> for Series<T>where
T: BlackJackData + Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Series<T>where
T: BlackJackData + Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl<T> Div<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> Div<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series - scalar
source§impl<T> DivAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + DivAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> DivAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + DivAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series += scalar
source§fn div_assign(&mut self, scalar_val: T)
fn div_assign(&mut self, scalar_val: T)
/=
operation. Read moresource§impl<T> Mul<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> Mul<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series * scalar
source§impl<T> MulAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + MulAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> MulAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + MulAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
source§fn mul_assign(&mut self, scalar_val: T)
fn mul_assign(&mut self, scalar_val: T)
*=
operation. Read moresource§impl<T> PartialEq<Series<T>> for Series<T>where
T: BlackJackData + PartialEq,
impl<T> PartialEq<Series<T>> for Series<T>where
T: BlackJackData + PartialEq,
source§impl<T> Sub<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + Sub,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> Sub<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + Sub,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series - scalar
source§impl<T> SubAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + SubAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
impl<T> SubAssign<T> for Series<T>where
T: Num + Copy + BlackJackData + Send + Sync + SubAssign<T>,
Vec<T>: IntoParallelIterator<Item = T>,
<Vec<T> as IntoParallelIterator>::Iter: IndexedParallelIterator,
Support series -= scalar
source§fn sub_assign(&mut self, scalar_val: T)
fn sub_assign(&mut self, scalar_val: T)
-=
operation. Read more