update dataframe

This commit is contained in:
fenix-hub 2022-01-10 15:14:09 +01:00
parent ef76c04470
commit 90128adb3c
3 changed files with 20 additions and 26 deletions

View File

@ -372,7 +372,7 @@ func populate_x_datas():
x_datas.append(x_values) x_datas.append(x_values)
func populate_y_datas(): func populate_y_datas():
y_labels.append(y_values.duplicate(true).pop_front() as String) y_labels.append(y_values.pop_front() as String)
for val in y_values.size(): for val in y_values.size():
y_values[val] = y_values[val] as float y_values[val] = y_values[val] as float

View File

@ -9,42 +9,37 @@ var datamatrix : Matrix = null
var dataset : Array = [] var dataset : Array = []
func _init(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void: func _init(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
if headers.empty() : for header in range(datamatrix.get_size().y) : headers.append(MatrixGenerator.get_letter_index(header))
if labels.empty() : for label in range(datamatrix.get_size().x) : labels.append(label as String)
if datamatrix.empty(): datamatrix.resize(labels.size(), headers.size()) if datamatrix.empty(): datamatrix.resize(labels.size(), headers.size())
if labels.empty() : for label in range(datamatrix.get_size().x) : labels.append(label as String)
if headers.empty() : for header in range(datamatrix.get_size().y) : headers.append(MatrixGenerator.get_letter_index(header))
build_dataframe(datamatrix, headers, labels, table_name) build_dataframe(datamatrix, headers, labels, table_name)
func build_dataframe(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void: func build_dataframe(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
self.datamatrix = datamatrix self.datamatrix = datamatrix
self.table_name = table_name
self.labels = labels
self.headers = headers self.headers = headers
self.labels = labels
self.table_name = table_name
self.dataset = build_dataset_from_matrix(datamatrix, headers, labels) self.dataset = build_dataset_from_matrix(datamatrix, headers, labels)
func build_dataset(data : Array, headers : PoolStringArray, labels : PoolStringArray) -> Array:
var dataset : Array = [Array(headers)]
for row_i in range(data.size()): dataset.append([labels[row_i]]+data[row_i])
return dataset
func build_dataset_from_matrix(datamatrix : Matrix, headers : PoolStringArray, labels : PoolStringArray) -> Array: func build_dataset_from_matrix(datamatrix : Matrix, headers : PoolStringArray, labels : PoolStringArray) -> Array:
var data : Array = datamatrix.to_array() var data : Array = datamatrix.to_array()
return build_dataset(data, headers, labels) return build_dataset(data, headers, labels)
func insert_column(column : Array, header : String = "", index : int = dataset[0].size()) -> void: func build_dataset(data : Array, headers : PoolStringArray, labels : PoolStringArray) -> Array:
assert(column.size() == datamatrix.rows(), "error: the column size must match the dataset column size") var dataset : Array = [Array([" "]) + Array(headers)]
for row_i in range(labels.size()): dataset.append(([labels[row_i]] + data[row_i]) if not data.empty() else [labels[row_i]])
return dataset
func insert_column(column : Array, header : String = "", index : int = dataset[0].size() - 1) -> void:
assert(column.size() == datamatrix.rows() if not datamatrix.empty() else labels.size(), "error: the column size must match the dataset column size")
headers.insert(index, header if header != "" else MatrixGenerator.get_letter_index(index)) headers.insert(index, header if header != "" else MatrixGenerator.get_letter_index(index))
if datamatrix.get_column(index-2 if index > 2 else 0).count(null) == datamatrix.rows(): datamatrix.insert_column(column, index)
datamatrix.update_column(column, index-2)
else:
datamatrix.insert_column(column, index-1)
dataset = build_dataset_from_matrix(datamatrix, headers, labels) dataset = build_dataset_from_matrix(datamatrix, headers, labels)
func insert_row(row : Array, label : String = "", index : int = dataset.size()) -> PoolStringArray: func insert_row(row : Array, label : String = "", index : int = dataset.size() - 1) -> PoolStringArray:
labels.insert(index-1, label if label != "" else (index-1) as String) assert(row.size() == datamatrix.columns() if not datamatrix.empty() else headers.size(), "error: the row size must match the dataset row size")
if datamatrix.get_row(index-2 if index > 2 else 0).count(null) == datamatrix.columns(): labels.insert(index, label if label != "" else str(index))
datamatrix.update_row(row, index-2 if index > 2 else 0) datamatrix.insert_row(row, index)
else:
datamatrix.insert_row(row, index-1)
dataset = build_dataset_from_matrix(datamatrix, headers, labels) dataset = build_dataset_from_matrix(datamatrix, headers, labels)
return PoolStringArray([label] + row) return PoolStringArray([label] + row)

View File

@ -29,10 +29,9 @@ func update_column(column : Array, index : int) -> void:
func resize(rows: int, columns: int) -> void: func resize(rows: int, columns: int) -> void:
for row in range(rows): for row in range(rows):
var value_row := [] var row_column: Array = []
for column in range(columns): row_column.resize(columns)
value_row.append(null) values.append(row_column)
values.append(value_row)
func to_array() -> Array: func to_array() -> Array:
return values.duplicate(true) return values.duplicate(true)