統計データ分析-データ自体の統計

4047 ワード

  • 連続型変数は統計的特徴を有するため、データ解析時に主に統計解析
  • を行う.
  • 統計分析の種類
    -データ自体の統計(内部情報)
    -データ間統計(外部または関係情報)
  • データ自体の統計


    1.基本分析方法

    import pandas as pd
    HANDS2_HOUSEPRICE = "https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv"
    df_data = pd.read_csv(HANDS2_HOUSEPRICE)
    df_data.head()
    
  • DataFrame記述
  • df_data.describe(include = 'all')
  • シリーズ説明
  • df_data['median_income'].describe()
    df_data.describe()

    実行結果によると、Columlongth、mean、50%(median)などの差は小さく、total room、populationの差は大きい.
  • |平均値(平均値)-50%(中値)|の値が大きい場合に予測できる点
    -データにスキューがある可能性があります
  • |平均値(平均値)-50%(中位数)|値が小さく予測できる点
    -正規分布を形成する可能性がある
    =>分析が容易(事前処理が少ない)で、募集チームに似ている可能性があります(他の証明が必要です)
  • データ分散の可視化

  • 確率密度関数(PDF:Probability Density Function):連続確率分布をグラフィックで表す
    -
  • データ分布の個数、面積、分布
    df_data['median_income'].plot(kind='density')
  • 累積分布関数(CDF:Cumulative Distribution Function):所定の確率変数が特定の値以下である確率を表す関数
  • .
    df_data['median_income'].sort_values().cumsum().reset_index(drop=True).plot()

    その他の分析方法

  • min-max scaling:最大-最小領域を[0,1]領域に設定し、データを線形変換する方法
    例)10->1,9.8->0.982
  • from pandas import Series
    
    def min_max_scaling(series:Series) -> Series:
        return (series - series.min())/(series.max() - series.min())
  • 標準化:データ分布を標準の標準正規分布
  • に変換する.
    from pandas import Series
    
    def normalize(series:Series) -> Series:
        return (series - series.mean())/series.std()
  • 変数区間化:連続型変数を特定区間に分割してカテゴリ型またはシーケンス型変数に変換する方法
  • .
    import pandas as pd
    
    BIN = 5
    CAT = range(10)
    pd.cut(df_data['median_income], q=BIN, labels=CAT)

    外部処理方法

    df_data['median_income'].plot(kind='box)

    マッピングの最小値は
  • 、最大値は
  • です.
    from typing import Tuple
    from pandas import Series
    
    def include_outlier(series:Series, bounds:Tuple[int, int] = (0.1, 0.9)):
        series = series.copy()
        lower,upper = bounds
        l, u = series.quantile(lower), series.quantile(upper)
        series[series < l], series[series > u] = l, u
        return series
  • (カスタム値)*IQR値最小、最大マッピング
  • def include_outlier2(series:Series):
    	series = series.copy()
        q3, q1 = series.quantile(0.75), series.quantile(0.25)
        iqr = q3 - q1
        series[series < q1 - (1.5 * iqr)], series[series > q3 + (1.5 * iqr)] = q1, q3
        return series
  • 離群点
  • を除去する.
    def drop_outlier(series:Series, bounds:Tuple[int, int] = (0.1, 0.9)):
    	series = series.copy()
        lower, upper = bounds
        s, e = series.quantile(lower), series.quantile(upper)
        return series[(s <= series) & (series <= e)]
  • (カスタム値)*IQR値を使用してポップアップ
  • を削除
    def drop_outlier2(series:Series):
    	series = series.copy()
        q3, q1 = series.quantile(0.75), series.quantile(0.25)
        iqr = q3 - q1
        l = q1 - (1.5*iqr)
        u = q3 + (1.5*iqr)
        return series[(l<=series) & (series <= u)]
    外部処理関数の適用
    include_outlier(df_data['median_income'], (0.1, 0.9)).describe()
    
    drop_outlier(df_data['median_income'], (0.1, 0.9))