diff --git a/boards/default_src/python_mixpy/blocks/data.js b/boards/default_src/python_mixpy/blocks/data.js index 2ff0bb8c..3ab68fa6 100644 --- a/boards/default_src/python_mixpy/blocks/data.js +++ b/boards/default_src/python_mixpy/blocks/data.js @@ -1455,4 +1455,109 @@ export const py_sum = { this.setOutput(true); this.setTooltip('Returns the sum of the iterable.'); } -}; \ No newline at end of file +}; + +export const dataframe_sort_values = { + init: function () { + this.setColour(DATA_HUE); + this.appendValueInput('DICT') + .setAlign(Blockly.inputs.Align.RIGHT) + .setCheck('Dict'); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('值排序'); + this.appendValueInput('KEY') + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('标签'); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('排序方式') + .appendField(new Blockly.FieldDropdown([ + ['升序', 'True'], + ['降序', 'False'] + ]), 'AS_CENDING'); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(''); + } +} + +export const dataframe_head_tail = { + init: function () { + this.setColour(DATA_HUE); + this.appendValueInput('DICT') + .setAlign(Blockly.inputs.Align.RIGHT) + .setCheck('Dict'); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('获取') + .appendField(new Blockly.FieldDropdown([ + ['前几行', 'head'], + ['最后几行', 'tail'] + ]), 'TYPE'); + this.appendValueInput('LINES') + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('行数'); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(''); + } +} + +export const dataframe_select = { + init: function () { + this.setColour(DATA_HUE); + this.appendValueInput('DICT') + .setAlign(Blockly.inputs.Align.RIGHT) + .setCheck('Dict'); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('筛选数据'); + this.appendValueInput('KEY') + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('满足条件'); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(''); + } +} + +export const dataframe_groupby = { + init: function () { + this.setColour(DATA_HUE); + this.appendValueInput('DICT') + .setAlign(Blockly.inputs.Align.RIGHT) + .setCheck('Dict'); + this.appendValueInput('KEY') + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('通过标签'); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField('分组'); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(''); + } +} + +export const dataframe_aggregate_func = { + init: function () { + this.setColour(DATA_HUE); + this.appendDummyInput() + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(new Blockly.FieldDropdown([ + ['求最小值', 'min'], + ['求最大值', 'max'], + ['求和', 'sum'], + ['求平均值', 'mean'], + ['求中位数', 'median'], + ['求标准差', 'std'] + ]), 'TYPE'); + this.appendValueInput('DICT') + .setAlign(Blockly.inputs.Align.RIGHT) + .setCheck('Dict'); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(''); + } +} \ No newline at end of file diff --git a/boards/default_src/python_mixpy/generators/data.js b/boards/default_src/python_mixpy/generators/data.js index cfc21c05..33e5b15b 100644 --- a/boards/default_src/python_mixpy/generators/data.js +++ b/boards/default_src/python_mixpy/generators/data.js @@ -644,4 +644,41 @@ export const py_sum = function (block, generator) { var array = generator.valueToCode(block, 'ARRAY', generator.ORDER_ATOMIC) || '[]'; var code = 'sum(' + array + ')'; return [code, generator.ORDER_ATOMIC]; +} + +export const dataframe_sort_values = function (block, generator) { + const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df'; + const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || '\'tag\''; + const ascending = block.getFieldValue('AS_CENDING'); + const code = `${dict}.sort_values(by=${key}, ascending=${ascending})`; + return [code, generator.ORDER_ATOMIC]; +} + +export const dataframe_head_tail = function (block, generator) { + const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df'; + const lines = generator.valueToCode(block, 'LINES', generator.ORDER_ATOMIC) || '1'; + const type = block.getFieldValue('TYPE'); + const code = `${dict}.${type}(${lines})`; + return [code, generator.ORDER_ATOMIC]; +} + +export const dataframe_select = function (block, generator) { + const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df'; + const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || 'df[\'tag\'] > 1'; + const code = `${dict}[${key}]`; + return [code, generator.ORDER_ATOMIC]; +} + +export const dataframe_groupby = function (block, generator) { + const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df'; + const key = generator.valueToCode(block, 'KEY', generator.ORDER_ATOMIC) || '\'tag\''; + const code = `${dict}.groupby(by=${key})`; + return [code, generator.ORDER_ATOMIC]; +} + +export const dataframe_aggregate_func = function (block, generator) { + const dict = generator.valueToCode(block, 'DICT', generator.ORDER_ATOMIC) || 'df'; + const type = block.getFieldValue('TYPE'); + const code = `${dict}.${type}()`; + return [code, generator.ORDER_ATOMIC]; } \ No newline at end of file diff --git a/boards/default_src/python_mixpy/template.xml b/boards/default_src/python_mixpy/template.xml index aa095857..4777325b 100644 --- a/boards/default_src/python_mixpy/template.xml +++ b/boards/default_src/python_mixpy/template.xml @@ -2457,11 +2457,11 @@ - - - df - - + + + df + + @@ -2472,61 +2472,61 @@ - - array - + + array + - None + None - - array - + + array + - None + None - - array - + + array + - + - - array - + + array + - - array - + + array + - - df - + + df + - - value - + + value + - False + False - + @@ -2578,9 +2578,9 @@ - - 1 - + + 1 + @@ -2618,9 +2618,9 @@ - - array - + + array + @@ -2637,14 +2637,14 @@ - - array1 - + + array1 + - - array2 - + + array2 + @@ -2835,6 +2835,95 @@ + + + + df1 + + + + + tag + + + + + + + df1 + + + + + 1 + + + + + + + df1 + + + + + GT + + + column + + + df1 + + + + + tag + + + + + + + 1 + + + + + + + + + df1 + + + + + tag + + + + + min + + + df1 + + + column + + + df1 + + + + + tag + + + + + @@ -3225,342 +3314,342 @@ - - - 100 - - - - - 20 - - - - - 2 - - - - - 2 - - - - - 0 - - - - - 2 - - - - - 2 - - - - - + + + 100 + + + + + 20 + + + + + 2 + + + + + 2 + + + + + 0 + + + + + 2 + + + + + 2 + + + + + - - - 100 - - - - - 100 - - - - - 10 - - - - - 1 - - - - - 0.0 - - - - - 0.0 - - - - - + + + 100 + + + + + 100 + + + + + 10 + + + + + 1 + + + + + 0.0 + + + + + 0.0 + + + + + - - - 100 - - - - - 2 - - - - - - - - 1.0 - - - - - -10.0,10.0 - - - - - TRUE - - - - - + + + 100 + + + + + 2 + + + + + + + + 1.0 + + + + + -10.0,10.0 + + + + + TRUE + + + + + - - - iris - - + + + iris + + - - - iris_X - - - - - iris_y - - - - - 0.3 - - - - - + + + iris_X + + + + + iris_y + + + + + 0.3 + + + + + - - - model - - - - - TRUE - - - - - FALSE - - - - - + + + model + + + + + TRUE + + + + + FALSE + + + + + - - - model - - - - - 1.0 - - - - - TRUE - - - - - FALSE - - - - - 300 - - - - - + + + model + + + + + 1.0 + + + + + TRUE + + + + + FALSE + + + + + 300 + + + + + - - - model - - - - - - - - + + + model + + + + + + + + - - - model - - - - - 100 - - - - - - - - - - - + + + model + + + + + 100 + + + + + + + + + + + - - - model - - - - - 5 - - - - - + + + model + + + + + 5 + + + + + - - - model - - + + + model + + - - - model - - - - - 8 - - - - - 300 - - - - - - - - + + + model + + + + + 8 + + + + + 300 + + + + + + + + - - - model - - - - - X_train - - - - - y_train - - + + + model + + + + + X_train + + + + + y_train + + - - - model - - - - - X_test - - - - - y_test - - + + + model + + + + + X_test + + + + + y_test + + - - - model - - - - - X_test - - + + + model + + + + + X_test + + - - - model - - + + + model + + - - - model - - + + + model + + - - - model - - - - - D:/mixly/test.pkl - - + + + model + + + + + D:/mixly/test.pkl + + - + \ No newline at end of file diff --git a/boards/default_src/python_pyodide/template.xml b/boards/default_src/python_pyodide/template.xml index 7440acb1..72b75afb 100644 --- a/boards/default_src/python_pyodide/template.xml +++ b/boards/default_src/python_pyodide/template.xml @@ -2578,6 +2578,95 @@ + + + + df1 + + + + + tag + + + + + + + df1 + + + + + 1 + + + + + + + df1 + + + + + GT + + + column + + + df1 + + + + + tag + + + + + + + 1 + + + + + + + + + df1 + + + + + tag + + + + + min + + + df1 + + + column + + + df1 + + + + + tag + + + + +