def dataset_stats(churn_data,metric_cols,save_path=None):
    """
    Take basic stats of the data set.  Saving it is optional.
    :param churn_data: Pandas data frame containing the data set
    :param metric_cols: Columns which are metrics (and will have stats taken)
    :param save_path: If specified, will save to this path plus an extension
    :return: 
    """
    
    summary=churn_data[metric_cols].describe()
    summary=summary.transpose()

    summary['skew'] = churn_data.skew()
    summary['1%'] = churn_data.quantile(q=0.01)
    summary['5%'] = churn_data.quantile(q=0.05)
    summary['10%'] = churn_data.quantile(q=0.10)
    summary['90%'] = churn_data.quantile(q=0.90)
    summary['95%'] = churn_data.quantile(q=0.95)
    summary['99%'] = churn_data.quantile(q=0.99)
    summary['nonzero'] = churn_data.astype(bool).sum(axis=0) / churn_data.shape[0]

    summary = summary[ ['count','nonzero','mean','std','skew','min','1%','5%','10%','25%','50%','75%','90%','95%','99%','max'] ]

    if save_path is not None:
        churn_stat=churn_data['is_churn'].astype(int).describe()
        churn_stat.to_csv(save_path+'_churnrate.csv',header=True)
        summary.to_csv(save_path+'_summary.csv',header=True)

    return summary