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.');
|
||||
}
|
||||
};
|
||||
|
||||
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 + ')';
|
||||
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>
|
||||
</value>
|
||||
</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">
|
||||
<value name="SER">
|
||||
<shadow type="variables_get">
|
||||
@@ -3562,5 +3651,5 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
</category>
|
||||
</category>
|
||||
</xml>
|
||||
@@ -2578,6 +2578,95 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</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">
|
||||
<value name="SER">
|
||||
<shadow type="variables_get">
|
||||
|
||||
Reference in New Issue
Block a user