docs: def corr_matrix(df,method = 'pearson'):
      """ Returns a matrix of correlations between columns of a DataFrame. For categorical columns,
      it first changes those to a set of dummy variable columns. Booleans are converted to
      numerical as well. Also ignores any indexes set on the DataFrame
      Parameters:
      df - DataFrame
          DataFrame to analyze
      method - {'pearson', 'kendall', 'spearman'}
          * pearson : standard correlation coefficient
          * kendall : Kendall Tau correlation coefficient
          * spearman : Spearman rank correlation
      """
      # Remove all but categoricals,booleans, and numerics
      df = df.reset_index(drop = True)
      cat_cols = df.select_dtypes(include = 'category')
      bool_cols = df.select_dtypes(include = 'bool')
      df = df.select_dtypes(include = 'number')
      if not cols(df) + cols(bool_cols) + cols(cat_cols):
          return None # quit if there's none of the possible datatypes present
  
      #Convert categoricals to boolean columns
      insert = np.ones(rows(df))
      for col_name in cat_cols:
          cat_df = pd.concat([cat_cols[[col_name]],pd.Series(insert)],axis = 1) # Add a column of ones as values for the pivot
          cat_ptable = cat_df.pivot(columns = col_name).reset_index(drop = True)
          cat_ptable.columns = [col_name+ "_{}".format(value) for value in
                                    cat_ptable.columns.get_level_values(col_name)]
          df = pd.concat([df,cat_ptable.fillna(0)],axis = 1)
      df = pd.concat([df,bool_cols * 1], axis = 1)
      return df.corr(method,0)