Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,67 @@
|
||||
import math
|
||||
import x.dataframe
|
||||
|
||||
const prices_csv = 'symbol,price,qty
|
||||
AAPL,189.5,2
|
||||
MSFT,420.25,3
|
||||
AAPL,191.0,5
|
||||
'
|
||||
|
||||
fn test_from_csv_and_numeric_series() {
|
||||
df := dataframe.from_csv(prices_csv, dataframe.CsvConfig{})!
|
||||
rows, columns := df.shape()
|
||||
assert rows == 3
|
||||
assert columns == 3
|
||||
assert df.columns == ['symbol', 'price', 'qty']
|
||||
assert df.cell(1, 'symbol')! == 'MSFT'
|
||||
|
||||
prices := df.column('price')!
|
||||
assert prices.len() == 3
|
||||
assert math.alike(prices.mean()!, 266.9166666666667)
|
||||
assert math.alike(prices.min()!, 189.5)
|
||||
assert math.alike(prices.max()!, 420.25)
|
||||
assert math.alike(prices.median()!, 191.0)
|
||||
|
||||
summary := df.describe('qty')!
|
||||
assert summary.count == 3
|
||||
assert math.alike(summary.sum, 10.0)
|
||||
assert math.alike(summary.mean, 3.3333333333333335)
|
||||
}
|
||||
|
||||
fn test_select_filter_sort_and_value_counts() {
|
||||
df := dataframe.from_csv(prices_csv, dataframe.CsvConfig{})!
|
||||
aapl := df.filter(fn (row dataframe.Row) bool {
|
||||
return row.values['symbol'] == 'AAPL'
|
||||
})
|
||||
assert aapl.height() == 2
|
||||
|
||||
selected := aapl.select(['symbol', 'qty'])!
|
||||
assert selected.width() == 2
|
||||
assert selected.cell(1, 'qty')! == '5'
|
||||
|
||||
sorted := df.sort_by_f64('price', .asc)!
|
||||
assert sorted.cell(0, 'symbol')! == 'AAPL'
|
||||
assert sorted.cell(2, 'symbol')! == 'MSFT'
|
||||
|
||||
counts := df.value_counts('symbol')!
|
||||
assert counts['AAPL'] == 2
|
||||
assert counts['MSFT'] == 1
|
||||
}
|
||||
|
||||
fn test_from_columns_and_csv_without_header() {
|
||||
df := dataframe.from_columns({
|
||||
'b': ['2', '1']
|
||||
'a': ['x', 'y']
|
||||
})!
|
||||
assert df.columns == ['a', 'b']
|
||||
assert df.cell(0, 'a')! == 'x'
|
||||
assert math.alike(df.column('b')!.median()!, 1.5)
|
||||
|
||||
no_header := dataframe.from_csv('AAPL,189.5
|
||||
MSFT,420.25
|
||||
', dataframe.CsvConfig{
|
||||
has_header: false
|
||||
})!
|
||||
assert no_header.columns == ['column_0', 'column_1']
|
||||
assert no_header.cell(1, 'column_1')! == '420.25'
|
||||
}
|
||||
Reference in new issue
Block a user