【Python數據分析專題】-數據探索分析

數據探索

1. 查詢

query

  • df.query(‘查詢條件’)

    df.query('col1 == 某個值')
    df.query('col1 == [值1,值2]')
    

2. 統計分析

2.1 描述統計

2.1.1均值、中位數描述

se.mean(axis=1) # 求行的均值
se.median()
plt.vlines(se.mean(),ymin=0,ymax=3,linewidth=5) # 繪製均值垂直線
plt.vlines(se.median()ymin=0,ymax=3,linewidth=3,color='red') # 繪製紅色中位數線

2.1.2 分佈描述

  • .describe()

    df['col'].describe()
    
  • .quantile()

    df['col'].quantile([0.5,0.75]) # 返回中位數和第三分位數
    
  • df['col'].var() # 方差
    df['col'].std() # 標準差
    

2.1.3 MAD

  • MAD = median( |X_i - median(X)| )

  • abs_median_devs = abs(df['col'] - df['col'].median())
    abs_median_devs.median() * 1.4826
    

2.1.4 偏度、峯度

  • 偏度

    • 是統計數據分佈偏斜方向和程度的度量
    • 是統計數據分佈非對稱程度的數字特徵
    • 右偏:長尾巴在右邊
    df['col'].skew() # 大於0-右偏
    
  • 峯度

    • 表徵概率密度分佈曲線在平均值出峯值高低的特徵數
    • 峯度高-看起來很尖
    import scipy.stats as stats
    stats.kurtosis(數據集變量)
    

1 集中趨勢

  • df['col'].mean() # 均值
    df['Age'].median() # 中位數
    df['Age'].describe() # 描述統計
    df['Age'].describe(percentiles=[0.5,0.75]) # 分位數求:中位數和第三分位數
    df['Age'].quantile(0.5) # 分位數
    df.mode() # 衆數
    df['Age'].mode() # 衆數
    

2 離中趨勢

  • df['Age'].std() # 標準差
    df['Age'].var() # 方差
    df.sum() # 注意離散數據的求和
    

3 數據分佈

  • df.skew() # 偏態係數
    df.kurt() # 峯度係數:這裏設定正態分佈的峯度爲0
    

分佈函數的生成

  • 分佈函數的生成

    import scipy.stats as ss
    
  • 正態分佈

    # 查看其性質:
    ss.norm.stats(moments='mvsk') # m:均值、v:方差、s:偏態係數、k:峯態係數
    
    # 生成正態分佈集
    ss.norm.rvs(size=1000) # 1000個符合正態分佈的數字
    
    ss.norm.pdf(x=) # 指定橫座標,返回縱座標的值:分佈函數在x上的值
    ss.norm.ppf(0.9) # 從負無窮大到 所求的值,其累積值爲0.9
    ss.norm.cdf(2) # 從-無窮,到x=2,求其累計概率
    
  • 卡方分佈

    ss.chi2
    
  • t分佈

    ss.t
    
  • f分佈

    ss.f
    

抽樣

  • df.sample(n=10) # 抽取10個
    df.sample(frac=0.01) # 抽樣1%
    df['col'].sample(n=10) # 抽樣10個
    

2.2 點估計與置信區間

2.3 概率分佈

2.4 檢驗

2.5 卡方檢驗

2.6 ANOVA

2.7 AB測試

2.8 態分佈

按數據類型選分析方式

自變量x 因變量Y 檢驗方式
連續 分類 方差分析
分類 連續 方差分析
分類 分類 卡方檢驗
連續 連續 相關性分析

3. 估計

3.1 點估計

  • 樣本對總體進行點估計
  • 有偏差
  1. 數值類型集

    • 點估計

      # 構建總體
      np.random.seed(2019)
      salary_1 = scipy.stats.poisson.rvs(mu = 2000, size = 10000)
      salary_2 = scipy.stats.poisson.rvs(mu = 3000, size = 15000)
      salary_all = np.concatenate((salary_1,salary_2))
      salary_all.mean()
      
      # 抽樣(樣本)
      sample_salary = np.random.choice(salary_all,size=500)
      sample_salary.mean() - salary_all.mean()
      
  2. 分類數據集

    • 點估計

      import random
      random.seed(2019)
      a = (['doctor']*10000 +\
           ['teacher']*25000 +\
           ['farmer']*50000 +\
           ['engineer']*25000 +\
           ['other']*25000)
      demo_sample = random.sample(a,1000)
      for b in set(a):
          print(b + '標題一:')
          print(demo_sample.count(a)/1000) # 每種職業在樣本中的佔比
          print(b + '標題二:')
          print(a.count(b)/135000) # 每種職業在總體中的佔比
      

3.2 中心極限定理

  • sampling distribution符合正態分佈

  • 重複採樣2000次

    np.random.seed(2020)
    sample_point = []
    for x in range(2000):
        sample = np.random.choice(salary_all,size=500)
        sample_point.append(sample.mean())
        
    # 可視化
    pd.DataFrame(sample_point).plot(kind='density', # 概率密度圖
                                    figsize=(9,9),
                                    xlim=(2000,3000)
                                   )
    # 總體 與 重複採樣後均值 比較
    salary_all.mean() - np.array(sample_point).mean()
    

3.3 置信區間

  • 展現的是這個參數的真實值有一定概率落在測量結果周圍的程度

  • zσnz*\frac{\sigma}{\sqrt n}

  • zz:關鍵值

  • σ\sigma :總體的標準差

  • n\sqrt n:樣本的開平方根

  • 
    

By 儒冠多誤身 2019/04/21

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章