Update(blocks): python新增一些pandas图形块,多语言将在稳定后进行
新增pandas API如下: 1. 值排序: sort_values() 2. 获取前 / 后n行数据: head() / tail() 3. 根据所给条件筛选数据 4. 通过给定标签分组: groupby() 5. 常用聚合函数
This commit is contained in:
@@ -1456,3 +1456,108 @@ export const py_sum = {
|
|||||||
this.setTooltip('Returns the sum of the iterable.');
|
this.setTooltip('Returns the sum of the iterable.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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('');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -645,3 +645,40 @@ export const py_sum = function (block, generator) {
|
|||||||
var code = 'sum(' + array + ')';
|
var code = 'sum(' + array + ')';
|
||||||
return [code, generator.ORDER_ATOMIC];
|
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];
|
||||||
|
}
|
||||||
@@ -2835,6 +2835,95 @@
|
|||||||
</shadow>
|
</shadow>
|
||||||
</value>
|
</value>
|
||||||
</block>
|
</block>
|
||||||
|
<block type="dataframe_sort_values">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_head_tail">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="LINES">
|
||||||
|
<shadow type="math_number">
|
||||||
|
<field name="NUM">1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_select">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<block type="logic_compare">
|
||||||
|
<field name="OP">GT</field>
|
||||||
|
<value name="A">
|
||||||
|
<block type="dataframe_get">
|
||||||
|
<field name="MODE">column</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
<value name="B">
|
||||||
|
<block type="math_number">
|
||||||
|
<field name="NUM">1</field>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_groupby">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_aggregate_func">
|
||||||
|
<field name="TYPE">min</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
<block type="dataframe_get">
|
||||||
|
<field name="MODE">column</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
<block type="pl_plot_easy">
|
<block type="pl_plot_easy">
|
||||||
<value name="SER">
|
<value name="SER">
|
||||||
<shadow type="variables_get">
|
<shadow type="variables_get">
|
||||||
|
|||||||
@@ -2578,6 +2578,95 @@
|
|||||||
</shadow>
|
</shadow>
|
||||||
</value>
|
</value>
|
||||||
</block>
|
</block>
|
||||||
|
<block type="dataframe_sort_values">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_head_tail">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="LINES">
|
||||||
|
<shadow type="math_number">
|
||||||
|
<field name="NUM">1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_select">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<block type="logic_compare">
|
||||||
|
<field name="OP">GT</field>
|
||||||
|
<value name="A">
|
||||||
|
<block type="dataframe_get">
|
||||||
|
<field name="MODE">column</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
<value name="B">
|
||||||
|
<block type="math_number">
|
||||||
|
<field name="NUM">1</field>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_groupby">
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
<block type="dataframe_aggregate_func">
|
||||||
|
<field name="TYPE">min</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
<block type="dataframe_get">
|
||||||
|
<field name="MODE">column</field>
|
||||||
|
<value name="DICT">
|
||||||
|
<shadow type="variables_get">
|
||||||
|
<field name="VAR">df1</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
<value name="KEY">
|
||||||
|
<shadow type="text">
|
||||||
|
<field name="TEXT">tag</field>
|
||||||
|
</shadow>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
|
</value>
|
||||||
|
</block>
|
||||||
<block type="pl_plot_easy">
|
<block type="pl_plot_easy">
|
||||||
<value name="SER">
|
<value name="SER">
|
||||||
<shadow type="variables_get">
|
<shadow type="variables_get">
|
||||||
|
|||||||
Reference in New Issue
Block a user