code: public static DataRowsFacade zeromeanUnitVariance(DataRowsFacade frame, List<String> skipColumns) {
          List<String> columnsList = DataFrames.toList(frame.get().columns());
          columnsList.removeAll(skipColumns);
          String[] columnNames = DataFrames.toArray(columnsList);
          //first row is std second row is mean, each column in a row is for a particular column
          List<Row> stdDevMean = stdDevMeanColumns(frame, columnNames);
          for (int i = 0; i < columnNames.length; i++) {
              String columnName = columnNames[i];
              double std = ((Number) stdDevMean.get(0).get(i)).doubleValue();
              double mean = ((Number) stdDevMean.get(1).get(i)).doubleValue();
              if (std == 0.0)
                  std = 1; //All same value -> (x-x)/1 = 0
  
              frame = dataRows(frame.get().withColumn(columnName, frame.get().col(columnName).minus(mean).divide(std)));
          }
  
  
  
          return frame;
      }
docs: Normalize by zero mean unit variance
  
  @param frame the data to normalize
  @return a zero mean unit variance centered
  rdd