亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python制作數據分析工具

Alex_Cen 產品經理
難度初級
時長 1小時10分
學習人數
綜合評分9.17
20人評價 查看評價
9.2 內容實用
9.1 簡潔易懂
9.2 邏輯清晰
  • 1、掌握數據的統計指標

    2、利用Python制作數據診斷工具

    3、數據診斷工具的應用


    數據大綱

    1、依賴包介紹

    2、基本描述統計值

    3、特殊值描述值

    4、缺失值? 情況多,需要單端處理

    5、功能整合

    查看全部
  • 數據診斷

    查看全部

    1. 定義缺失值。np.nan是Numpy缺失的一個表示?

    2. 計數值,

      len來計數

      apply函數遍歷每一列

    3. df.iloc[指定的行數開頭:指定的行數結尾,指定的列數]
      unique函數看這一個特征有多少個不同的值
    4. 找0值

    df.iloc[:,0:3]?==0?會返回每一個值是否是0的一個數組True或者False
    np.sum對數組取和(True當作1,False當作0)算出有多少個True
    查看全部
  • 統計指標可以自己去構建,以上是常規指標

    查看全部
    1. 讀取下載的數據。把數據集都進來命名df

    2. lable屬于預測目標,‘TARGET’就是特征的名字。在df中把因變量TARGET取出來命名為lable

    3. 刪除掉一些不需要的值。把ID,TARGET這兩列去掉重新賦值為df

    查看全部
  • 依賴包:Numpy

    ???????????? Pandas

    ???????????? Scipy


    查看全部
  • 依賴包:1、numpy 2、pandas 3、scipy

    查看全部
  • 數據診斷的目的:1、了解特征的分布,缺失和異常等情況? 2、統計指標可直接用于數據預處理

    查看全部
    0 采集 收起 來源:1.2 案例介紹

    2021-09-07

  • 測試

    查看全部
  • 統計指標介紹

    查看全部
  • 數據獲取與讀取1

    查看全部
  • 數據診斷目的

    查看全部
    0 采集 收起 來源:1.2 案例介紹

    2021-01-20

  • 數據診斷的目的

    查看全部
    0 采集 收起 來源:1.2 案例介紹

    2021-01-20

  • python 制作數據分析工具
    查看全部
  • 課程目標,掌握數據的統計指標

    查看全部
  • 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遍歷


    查看全部
  • #(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


    查看全部
  • 特殊描述值

    查看全部
  • 1.統計指標示例-最小值/最大值

    # (8)Min Value

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

    ?

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

    np.min(df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)]) ??# 去除缺失值后進行最小值計算

    ?

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

    ?

    # (9)Max Value

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

    ?

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

    np.max(df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)]) ??# 去除缺失值后進行最大值計算

    ?

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


    查看全部
  • 統計指標實例-眾數

    # (6)Mode Value

    df_mode = df.iloc[:, 0:3].apply(lambda x: stats.mode(x[~np.in1d(x, missSet)])[0][0]) ???# mode這個函數返回的是一個數組,對應每一列出現頻率最高的數以及它出現的頻數,[0][0]表示取的是這個數字。

    ?

    # (7)Mode Percetage

    df_mode_count = df.iloc[:, 0:3].apply(lambda x: stats.mode(x[~np.in1d(x, missSet)])[1][0]) ??# [1][0]表示取的這個眾數出現的頻數

    ?

    df_mode_perct = df_mode_count/df.shape[0] ??????# df.shape[0]確定有多少個樣本


    查看全部
  • 查看全部
  • 1.# (4)Mean Value? 均值

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

    ?

    df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)] ???# 去除缺失值,np.in1d(df.iloc[:, 0], missSet)找到缺失值的位置,是缺失值返回true,但我們要找的是去除缺失值之后的數據

    np.mean(df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)]) ??# 去除缺失值后進行均值計算

    ?

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

    ?

    # (5)Median Value? 中位數

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

    ?

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

    np.median(df.iloc[:, 0][~np.in1d(df.iloc[:, 0], missSet)]) ?????# 去除缺失值后進行計算

    ?

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

    ??

    重點是如何去除缺失值。


    查看全部
  • 1.統計指標示例-計數類

    ##1.Basic Analysis##

    # (1)Missing Value? 缺失值

    missSet = [np.nan, 9999999999, -999999] ????# np.nan是numpy中缺失值的表示,后面兩個數是分析得到的缺失值

    ?

    # (2)Count distinct? 統計值出現多少

    len(df.iloc[:, 0].unique()) ????# df.iloc[:, 0]取第一列,unique()看這一列哪些不同的值,返回一個類似數組,然后len看有多少個

    ?

    count_un = df.iloc[:, 0:3].apply(lambda x: len(x.unique())) ?# df.iloc[:, 0:3]取前三列,apply用于遍歷,看看前三列每一列有多少個不同的值

    ?

    # (3)Zero Value ?看看每一列有多少個值為0

    np.sum(df.iloc[:, 0] == 0)? ?# 第一列==0,返回True或False的數組

    ?

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


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

舉報

0/150
提交
取消
課程須知
適合人群:希望從傳統分析人員轉型到數據挖掘和機器學習領域的人員;技術儲備:python基本知識,統計學基本知識
老師告訴你能學到什么?
1.用Python制作一個高效的數據診斷工具; 2.數據診斷的各種指標;

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!