Skip to content

Commit c8e783e

Browse files
author
minjk-bl
committed
Fix Data Info to show more clear statistics
1 parent 4b92465 commit c8e783e

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

visualpython/js/m_apps/Information.js

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,16 @@ define([
8282
\n}, index=['Combination']+${data}.columns.to_list())\
8383
\n_duplicated_df", dtype: ['DataFrame', 'Series'], toframe: true },
8484
{ id: 'unique', label: 'Unique', code: '${data}.unique()', dtype: ['Series'] },
85-
{ id: 'value_counts', label: 'Value counts', code: '${data}.value_counts()', dtype: ['DataFrame', 'Series'] },
85+
{ id: 'value_counts', label: 'Value counts', code: "_value_counts_dict = {}\
86+
\nfor col in ${data}.columns:\
87+
\n if pd.api.types.is_numeric_dtype(${data}[col]):\
88+
\n _value_counts = ${data}[col].value_counts(bins=10, sort=False)\
89+
\n _value_counts_dict[(col, 'bins')] = list(_value_counts.index) + ['']*(10 - len(_value_counts))\
90+
\n else:\
91+
\n _value_counts = ${data}[col].value_counts()\
92+
\n _value_counts_dict[(col, 'category')] = list(_value_counts.index) + ['']*(10 - len(_value_counts))\
93+
\n _value_counts_dict[(col, 'count')] = list(_value_counts.values) + ['']*(10 - len(_value_counts))\
94+
\npd.DataFrame(_value_counts_dict)", dtype: ['DataFrame', 'Series'], toframe: true },
8695
]
8796
},
8897
{
@@ -92,10 +101,10 @@ define([
92101
child: [
93102
/** checkbox */
94103
{ id: 'count', label: 'count', code: '${data}.count()' },
95-
{ id: 'min', label: 'min', code: '${data}.min()' },
96-
{ id: 'max', label: 'max', code: '${data}.max()' },
104+
{ id: 'min', label: 'min', code: '${data}.min(numeric_only=True)' },
105+
{ id: 'max', label: 'max', code: '${data}.max(numeric_only=True)' },
97106
{ id: 'quantile', label: 'quantile', code: '${data}.quantile(numeric_only=True)' },
98-
{ id: 'sum', label: 'sum', code: '${data}.sum()' },
107+
{ id: 'sum', label: 'sum', code: '${data}.sum(numeric_only=True)' },
99108
{ id: 'mean', label: 'mean', code: '${data}.mean(numeric_only=True)' },
100109
{ id: 'median', label: 'median', code: '${data}.median(numeric_only=True)' },
101110
// { id: 'mad', label: 'mad', code: '${data}.mad(numeric_only=True)' }, // FutureWarning: Deprecated and will be removed
@@ -552,14 +561,20 @@ define([
552561
let childObj = infoObj.child.find(obj=>obj.id === itemId);
553562
statList.push(com_util.formatString("'{0}': {1}", itemId, childObj.code));
554563
});
555-
if (currentDtype === 'Series') {
564+
if (currentDtype === 'Series' && selected.length > 0) {
556565
// if multiple stats selected, set series data as dataframe
557566
dataVar = new com_String();
558567
dataVar.appendFormat("{0}[[{1}]]", data, selected.map(col=>col.code).join(','));
559568
currentDtype = 'DataFrame';
560569
}
561570
codePattern = com_util.formatString("pd.DataFrame({{0}})", statList.join(','));
562571
} else {
572+
if (currentDtype === 'Series' && selected.length > 0) {
573+
// if multiple stats selected, set series data as dataframe
574+
dataVar = new com_String();
575+
dataVar.appendFormat("{0}[[{1}]]", data, selected.map(col=>col.code).join(','));
576+
currentDtype = 'DataFrame';
577+
}
563578
let childObj = infoObj.child.find(obj=>obj.id === menuItem[0]);
564579
codePattern = childObj.code;
565580
}
@@ -570,10 +585,16 @@ define([
570585
// only one method selected
571586
if (menuItem.length > 0 && infoObj.child) {
572587
let childObj = infoObj.child.find(obj=>obj.id === menuItem[0]);
573-
if (childObj.toframe === true && currentDtype === 'Series') {
574-
dataVar = new com_String();
575-
dataVar.appendFormat("{0}[[{1}]]", data, selected.map(col=>col.code).join(','));
576-
currentDtype = 'DataFrame';
588+
if (childObj.toframe === true) {
589+
if (dtype === 'Series') {
590+
dataVar = new com_String();
591+
dataVar.appendFormat("{0}.to_frame()", data);
592+
currentDtype = 'DataFrame';
593+
} else if (currentDtype === 'Series') {
594+
dataVar = new com_String();
595+
dataVar.appendFormat("{0}[[{1}]]", data, selected.map(col=>col.code).join(','));
596+
currentDtype = 'DataFrame';
597+
}
577598
}
578599
codePattern = childObj.code;
579600
} else {

0 commit comments

Comments
 (0)