为了账号安全,请及时绑定邮箱和手机立即绑定

Python制作数据分析工具

Alex_Cen 产品经理
难度初级
时长 1小时10分
学习人数
综合评分9.17
20人评价 查看评价
9.2 内容实用
9.1 简洁易懂
9.2 逻辑清晰
  • '''

    Created on 2018年7月10日

    Kaggle网站公开的数据

    @author: Administrator

    '''

    #-*-coding:utf-8-*-

    from __future__ import division

    import pandas as pd

    import numpy as np

    from scipy import stats



    ##0.Read Data ##

    df = pd.read_csv("train.csv")

    label = df['TARGET']

    df = df.drop(['ID', 'TARGET'], axis = 1)


    ##1.Basic Analysis##

    #(1)Missing Value#

    missSet = [np.nan, 9999999999, -999999]


    #(2)Count distinct#

    len(df.iloc[:,0].unique())


    count_un = df.iloc[:,0:3].apply(lambda x:len(x.unique()))


    #(3)Zero Values#

    np.sum(df.iloc[:,0]==0)


    count_zero = df.iloc[:,0:3].apply(lambda x:np.sum(x==0))

     

    #(4)Mean Values#

    np.mean(df.iloc[:,0]) #没有去除缺失值之前的均值很低


    df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)]#去除缺失值

    np.mean(df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)])#去除缺失值后进行均值计算


    df_mean = df.iloc[:,0:3].apply(lambda x:np.mean(x[~np.isin(x, missSet)]))

                                    

    #(5)Median Values#

    np.median(df.iloc[:,0])#没有去除缺失值之前

     

    df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)]#去除缺失值

    np.median(df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)])#去除缺失值后进行中位数计算

     

    df_median = df.iloc[:,0:3].apply(lambda x:np.median(x[~np.isin(x, missSet)]))                          

     

    #(6)Mode Values#

    df_mode = df.iloc[:,0:3].apply(lambda x:stats.mode(x[~np.isin(x, missSet)])[0][0])


                                      

    #(7)Mode Percentage#

    df_mode_count = df.iloc[:,0:3].apply(lambda x:stats.mode(x[~np.isin(x, missSet)])[1][0])


    df_mode_perct = df_mode_count/df.shape[0]



    #(8)Min Values#

    np.min(df.iloc[:,0])


    df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)]#去除缺失值

    np.min(df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)])#去除缺失值后进行最小值计算

     

    df_min = df.iloc[:,0:3].apply(lambda x:np.min(x[~np.isin(x, missSet)]))  



    #(9)Max Values#

    np.max(df.iloc[:,0])


    df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)]#去除缺失值

    np.max(df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)])#去除缺失值后进行最大值计算

     

    df_max = df.iloc[:,0:3].apply(lambda x:np.max(x[~np.isin(x, missSet)]))



    #(10)quantile Values#

    np.percentile(df.iloc[:,0],(1,5,25,50,75,95,99))


    df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)]#去除缺失值

    np.percentile(df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)], (1,5,25,50,75,95,99))#去除缺失值后进行分位点计算

       

    json_quantile ={}


    for i,name in enumerate(df.iloc[:,0:3].columns):

        print('the {} columns:{}').format(i,name)

        json_quantile[name] = np.percentile(df[name][~np.isin(df[name],missSet)],(1,5,25,50,75,95,99))


    df_quantile = pd.DataFrame(json_quantile)[df.iloc[:,0:3].columns].T


    #(11)Frequent Values#

    df.iloc[:,0].value_counts().iloc[0:5,]   


    df.iloc[:,0][~np.isin(df.iloc[:,0],missSet)]#去除缺失值

    df.iloc[:,0][~np.isin(df.iloc[:,0], missSet)].value_counts()[0:5]#去除缺失值后进行频数的计算


    json_fre_name =0

    json_fre_count ={}


    def fill_fre_top_5(x):

        if(len(x))<=5:

            new_array =np.full(5, np.nan)

            new_array[0:len(x)] =x

            return new_array


    df['ind_var1_0'].value_counts()

    df['imp_sal_var16_ultl'].value_counts()


    for i,name in enumerate(df[['ind_var1_0','imp_sal_var16_ultl']].columns):

        ##1.Index Name

        index_name = df[name][~np.isin(df[name],missSet)].value_counts().iloc[0:5, ].index.values

        ##1.1 If the length of array is less than 5

        index_name=fill_fre_top_5(index_name)

        

        ##2.Value Count

        values_count=df[name][~np.isin(df[name],missSet)].value_counts().iloc[0:5, ].values

        ##2.1 If the length of array is less than 5

        values_count = fill_fre_top_5(values_count)

        

        json_fre_count[name]=values_count

        

    df_fre_name =pd.DataFrame(json_fre_name)[df[['ind_var1_0','imp_sal_var16_ultl']].columns].T

    df_fre_count =pd.DataFrame(json_fre_count)[df[['ind_var1_0','imp_sal_var16_ultl']].columns].T


    df_fre = pd.concat([df_fre_name, df_fre_count],axis=1)



    #(12)Miss Values#

    np.sum(np.isin(df.iloc[:,0],missSet))#统计缺失值

    df_miss = df.iloc[:,0:3].apply(lambda x:np.sum(np.isin(x,missSet)))#遍历每一个遍历的缺失值情况


    查看全部
    0 采集 收起 来源:4.1 工具整合

    2018-07-17

  • 1
    查看全部
    0 采集 收起 来源:4.1 工具整合

    2018-07-15

  • 基本描述统计值

    特殊值描述值

    缺失值


    查看全部
  • 这个没怎么看懂

    查看全部
  • 数据的读取

    查看全部
  • 导入division是为了防止分母为0

    查看全部
  • 数据分析与建模的基础
    查看全部
  • 数据分析与建模的基础
    查看全部
  • 不错
    查看全部
  • 这个

    查看全部
  • #分位点函数两个参数:数据和分位值


    查看全部
  • 几号
    查看全部
  • 统计指标
    查看全部
  • Python 3中scipy为何调不出mode,请问
    查看全部
  • eda是什么呢
    查看全部

举报

0/150
提交
取消
课程须知
适合人群:希望从传统分析人员转型到数据挖掘和机器学习领域的人员;技术储备:python基本知识,统计学基本知识
老师告诉你能学到什么?
1.用Python制作一个高效的数据诊断工具; 2.数据诊断的各种指标;

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!