python describe

#针对变量较多,describe方法无法完全显示,因此写自定义函数,查看数值型数据中的数据分布情况
#需要计算的指标:均值mean、方差std、最小值min、
import numpy as np
import pandas as pd
from scipy import stats
data=pd.read_csv()


def desc(data):
    #筛选出数值型的数据
    df=data.copy()
    #新建一个DataFrame,记载各变量的数据类型,便于后续筛选
    df_var=pd.DataFrame(df.columns,columns=['var'])
    df_type=pd.DataFrame(df.dtypes,columns=['type'])
    #合并
    df_var_type=pd.merge(df_var,df_type,how='left',left_on='var',right_index=True)
    #数值型变量
    list_num=list(df_var_type[(df_var_type['type']=='int64')|(df_var_type['type']=='float64')]['var'])
    #数值型数据集
    df_num=pd.DataFrame(df,columns=list_num)
    #计算各类指标
    counts=[]
    means=[]
    stds=[]
    medians=[]
    mods=[]
    mins=[]
    per25=[]
    per50=[]
    per75=[]
    maxs=[]
    for i in df_num.columns:
        #数量
        count=df_num[i].count()
        counts.append(count)
        #均值
        mean=np.mean(df_num[i])
        means.append(mean)
        #方差
        std=np.std(df_num[i])
        stds.append(std)
        #中位数
        median=np.median(df_num[i])
        medians.append(median)
        #众数
        mod=stats.mode(df_num[i])[0][0]
        mods.append(mod)
        #最小值
        min1=min(df_num[i])
        mins.append(min1)
        ## 25%分位数--计算分位数,对空值敏感
        df_num_i=df_num[i].dropna()
        per_25=np.percentile(df_num_i,25)
        per25.append(per_25)
        ## 50%分位数
        per_50=np.percentile(df_num_i,50)
        per50.append(per_50)
        ## 75%分位数
        per_75=np.percentile(df_num_i,75)
        per75.append(per_75)
        #最大值
        max1=max(df_num[i])
        maxs.append(max1)
    desc=pd.DataFrame({"count":counts,
                        "mean":means,
                       "std":stds,
                       "median":medians,
                       "mod":mods,
                       "min":mins,
                       "per25":per25,
                       "per50":per50,
                       "per75":per75,
                       "max":maxs
            })
    desc.index=df_num.columns
    return desc
fi=desc(data)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值