@@ -82,7 +82,16 @@ define([
82
82
\n}, index=['Combination']+${data}.columns.to_list())\
83
83
\n_duplicated_df" , dtype : [ 'DataFrame' , 'Series' ] , toframe : true } ,
84
84
{ 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 } ,
86
95
]
87
96
} ,
88
97
{
@@ -92,10 +101,10 @@ define([
92
101
child : [
93
102
/** checkbox */
94
103
{ 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 )' } ,
97
106
{ 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 )' } ,
99
108
{ id : 'mean' , label : 'mean' , code : '${data}.mean(numeric_only=True)' } ,
100
109
{ id : 'median' , label : 'median' , code : '${data}.median(numeric_only=True)' } ,
101
110
// { id: 'mad', label: 'mad', code: '${data}.mad(numeric_only=True)' }, // FutureWarning: Deprecated and will be removed
@@ -552,14 +561,20 @@ define([
552
561
let childObj = infoObj . child . find ( obj => obj . id === itemId ) ;
553
562
statList . push ( com_util . formatString ( "'{0}': {1}" , itemId , childObj . code ) ) ;
554
563
} ) ;
555
- if ( currentDtype === 'Series' ) {
564
+ if ( currentDtype === 'Series' && selected . length > 0 ) {
556
565
// if multiple stats selected, set series data as dataframe
557
566
dataVar = new com_String ( ) ;
558
567
dataVar . appendFormat ( "{0}[[{1}]]" , data , selected . map ( col => col . code ) . join ( ',' ) ) ;
559
568
currentDtype = 'DataFrame' ;
560
569
}
561
570
codePattern = com_util . formatString ( "pd.DataFrame({{0}})" , statList . join ( ',' ) ) ;
562
571
} 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
+ }
563
578
let childObj = infoObj . child . find ( obj => obj . id === menuItem [ 0 ] ) ;
564
579
codePattern = childObj . code ;
565
580
}
@@ -570,10 +585,16 @@ define([
570
585
// only one method selected
571
586
if ( menuItem . length > 0 && infoObj . child ) {
572
587
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
+ }
577
598
}
578
599
codePattern = childObj . code ;
579
600
} else {
0 commit comments