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

Python制作数据分析工具

Alex_Cen 产品经理
难度初级
时长 1小时10分
学习人数
综合评分9.33
18人评价 查看评价
9.4 内容实用
9.2 简洁易懂
9.4 逻辑清晰
  • 吐槽一下,数据还得自己下。下载的哪个你还不知道。 福利来了,这是网址。Ctrl+c and Ctrl+v 搞定 https://www.kaggle.com/c/santander-customer-satisfaction/data
    查看全部
  • 基本描述统计值

    特殊值描述值

    缺失值


    查看全部
  • #(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))) 我感觉我也可以在慕课开课了,大家加油
    查看全部
  • #(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 = {} 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() len(df['imp_sal_var16_ult1'].value_counts()) for i,name in enumerate(df[['ind_var1_0','imp_sal_var16_ult1']].columns): index_name = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5,].index.values index_name = fill_fre_top_5(index_name) json_fre_name[name] = index_name values_count = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5,].values 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_ult1']].columns].T
    查看全部
  • # coding:utf-8 from __future__ import division import numpy as np import pandas as pd from scipy import stats
    查看全部
  • 测试

    查看全部
  • 统计指标介绍

    查看全部
  • 数据获取与读取1

    查看全部
  • 数据诊断目的

    查看全部
    0 采集 收起 来源:1.2 案例介绍

    2021-01-20

  • 数据诊断的目的

    查看全部
    0 采集 收起 来源:1.2 案例介绍

    2021-01-20

  • 课程目标,掌握数据的统计指标

    查看全部
  • 1.# 2.Calculating Running time

    import timeit

     

    start = timeit.default_timer()

    df_eda_summary = eda_analysis(missSet=[np.nan, 9999999999, -999999], df=df.iloc[:, 0:3])

    print('EDA Running Time: {0:.2f} seconds'.format(timeit.default_timer() - start))

    上面是时间的测试示例,我们去测试每一块所用时间,由此可以判断我们的优化重点,经过测试可知,众数部分的时间较长,所以我们后期可对这一部分进行优化,优化的方法有:1)注释掉没用的代码 2)使用更好的方法去替代原有方法。


    查看全部
  • # 数据分析工具
    from __future__ import division  # 除的结果是小数
    import pandas as pd
    import numpy as np
    from scipy import stats
    
    
    def fill_fre_top_5(x):  # 频数前五位的函数:若不足5,则nan补齐
        if (len(x)) <= 5:
            new_array = np.full(5, np.nan)
            new_array[0:len(x)] = x
            return new_array
    
    
    def eda_analysis(missSet=[np.nan, 9999999999, -999999], df=None):
        # 种类计数
        count_un = df.apply(lambda x: len(x.unique()))
        count_un = count_un.to_frame('count')  # 转成dataframe
    
        # 零的计数
        count_zero = df.apply(lambda x: np.sum(x == 0))
        count_zero = count_zero.to_frame('count_zero')
    
        # 均值
        df_mean = df.apply(lambda x: np.mean(x[~np.isin(x, missSet)]))
        df_mean = df_mean.to_frame('mean')
    
        # 中位数
        df_median = df.apply(lambda x: np.median(x[~np.isin(x, missSet)]))
        df_median = df_median.to_frame('median')
    
        # 众数
        df_mode = df.apply(lambda x: stats.mode(x[~np.isin(x, missSet)])[0][0])
        df_mode = df_mode.to_frame('mode')
    
        # 众数的频数和比例
        df_mode_count = df.apply(lambda x: stats.mode(x[~np.isin(x, missSet)])[1][0])
        df_mode_count = df_mode_count.to_frame('mode_count')
        df_mode_perct = df_mode_count / df.shape[0]
        df_mode_perct.columns = ['mode_perct']
    
        # 最小值
        df_min = df.apply(lambda x: np.min(x[~np.isin(x, missSet)]))
        df_min = df_min.to_frame('min')
    
        # 最大值
        df_max = df.apply(lambda x: np.min(x[~np.isin(x, missSet)]))
        df_max = df_max.to_frame('max')
    
        # 分位数
        json_quantile = {}
        for i, name in enumerate(df.columns):
            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.columns].T
        df_quantile.columns = ['quan01', 'quan05', 'quan25', 'quan50', 'quan75', 'quan95', 'quan99']
    
        # 频数(产出为数组,不能使用apply)
        json_fre_name = {}
        json_fre_count = {}
    
        for i, name in enumerate(df.columns):
            # 频数前五的数
            index_name = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5, ].index.values
            index_name = fill_fre_top_5(index_name)
    
            json_fre_name[name] = index_name
    
            # 频数前五的数的频数
            value_count = df[name][~np.isin(df[name], missSet)].value_counts().iloc[0:5, ].values
            value_count = fill_fre_top_5(value_count)
    
            json_fre_count[name] = value_count
    
        df_fre_name = pd.DataFrame(json_fre_name)[df.columns].T
        df_fre_count = pd.DataFrame(json_fre_count)[df.columns].T
    
        df_fre = pd.concat([df_fre_name, df_fre_count], axis=1)  # 合并
        df_fre.columns = ['Value1', 'Value2', 'Value3', 'Value4', 'Value5', 'freq1', 'freq2', 'freq3', 'freq4', 'freq5']
    
        # 缺失值
        df_miss = df.apply(lambda x: np.sum(np.isin(x, missSet)))
        df_miss = df_miss.to_frame('freq_miss')
    
        # 合并所有统计指标
        df_eda_summary = pd.concat(
            [count_un, count_zero, df_mean, df_median, df_mode, df_mode_count, df_mode_perct, df_min, df.max, df_fre,
             df_miss], axis=1)
    
        return df_eda_summary


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

    2020-01-10

  • 工具 整合

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

    2020-01-10

  • 1.统计指标示例-缺失值

    # (12)Miss Value

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

    df_miss = df.iloc[:, 0:3].apply(lambda x: np.sum(np.in1d(x, missSet)))  # 遍历每一个遍历的缺失值情况,因为返回的是一个值,所以直接用apply遍历


    查看全部
首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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