データサイエンスチュートリアル:Pythonを用いた探索的データ解析


パイソンの探索的データ分析(EDA)は1970年代の「ジョン・チューキー」によって開発されたプロセスです.統計的には、探索的データ分析は、データセットを分析し、その主要な特徴をまとめ、適切な観察のために視覚的に提示することである.基本的には、データセットを探索する必要がある.

なぜ探査データ解析(EDA)?


EDAはデータ解析と機械学習において重要であり、選択された機能がモデルに十分に適しているかどうかを知ることができるという点において重要である.
一般に,edaを用いてデータを調査し,キー洞察をまとめた.
EDAは私たちのデータについての洞察を与えるだけでなく、データから異常と外れを除去することによって更なる解析論とモデル開発のためのデータの前処理を含んでいます.
これは、機械学習プロセスで使用するためのデータクリーナーを作成します.
EDAはまた、より良いビジネスの意思決定のための情報源です.
アプローチ
データ探索に関しては
1非グラフィカルなアプローチ
非グラフィカルなアプローチでは、形、概要、説明、isnull、情報、データ型などの関数を使用します.

グラフィックアプローチ
グラフィカルなアプローチでは、散布、ボックス、バー、密度、相関プロットなどのプロットを使用されます.

前に


EDAを始める前に、まず行う必要があります.
1 .データソーシング
2 .データクリーニング

1 .データ調達/データ収集


データを解析する前に、まずデータが必要です.データを取得するプロセスは、我々が呼び出すデータソースです.ソースデータを2つの主要な方法で使用できます.データ調達は、EDAの非常に第一歩です.データは、パブリックまたはプライベートソースから取得することができます
パブリックデータソース:
これらは私たちが得ることができるデータソースであり、特別な許可の必要性や必要性なしで使用します.これは、使用するいずれかの組織に公的に利用可能です.一般的なデータのソースは以下の通りです.
https://data.gov/
https://data.gov.uk/
https://data.gov.in/
https://www.kaggle.com/
https://github.com/awesomedata/awesome-public-datasets
プライベートデータソース
これらは個人と組織に個人的で、適切な認証と許可なしでちょうど誰によってもアクセスされることができないデータ源です.大部分はその内部データ分析とモデルビルディングのために組織内でのみ使用されます.

2 .データクリーニング


実際のEDAを始める前に、データをきれいにする必要があります.フィールドからのデータは掃除されるかもしれません、したがって、我々は若干のデータ検査を実行して、データをanlyzingするために動く前に若干の掃除をする必要があります.
データクリーニングに関しては、我々はすでにデータをきれいにするために使うことができるいくつかのテクニックを見ました.
  • 紛失値
  • 不正確な書式
  • 不正確なヘッダー/コラム名
  • 異常/アウトライアー
  • reインデックス行
  • 行方不明の値を扱うためのデータは1つです.
  • MCAR (ランダムに完全に見つからない) :これらの値は
    データセット内の他の機能に依存します.
  • Mar(無作為に見当たらない):これらの値は
    DataSetのいくつかの他の機能.
  • mnar(無作為で行方不明でない):これらの行方不明の値は、あります
    データセット
  • から欠落している理由の理由

    より良い理解のためにEDAの例を見てみましょう


    Pythonでの探索的データ解析を行うには、numpyやpandas、seabornのようなPythonライブラリが必要です.最後の2つのライブラリを可視化に使用されます
    .
    あなたが進む前にそれらをインポートしてください
    番目のステップは、データ解析用のデータセットをロードします.

    今、我々は我々のEDAを始めることができます:


    1 .データ型を調べる


    これは、単に以下のコードを使用するだけで行うことができます
    df.shape
    

    出力は、データセット内の行と列の数に関する情報を提供します.上の例では、データには1460行、81列がある.これらの14列において、1は目標または従属変数です、そして、それらの残りは大部分は独立変数です

    2 .各データ型とカラムの値をチェックする


    df.info()
    

    info ()メソッドは、データファイルに関する情報を出力します.この情報には、列、列ラベル、列データ型、メモリ使用量、範囲インデックス、および各列のセル数(非null値)の数が含まれます

    値の分割


    いくつかの場合、列の値を分割したい場合があります.
    列は、1つの列に1つ以上の値、EGの国と都市を運びます.我々は、2つの国と都市の列に分割

    df[['city', 'country']] = df['address'].str.split(',', expand=True)
    
    結果

    4 .データ型を変更する


    adstype ()関数をpandasから使用できます.これは、使用する特定のデータ型がどのような値を割り当てることができ、どのようなことができるかを決定することが重要です.
    たとえば、顧客番号のデータ型を置換するには、
    #Replace Data Types to Integer
    df["Customer Number"] = df['Customer Number'].astype('int')
    #Replace Data Types to String
    df["Customer Number"] = df['Customer Number'].astype('str')
    #Replace Data Types to Boolean
    df["IsPurchased"] = df['IsPurchased'].astype('bool')
    #Replace Data Types to Float
    df["Total Spend"] = df['Total Spend'].astype('float')
    #Replace Data Types to Datetime with format= '%Y%m%d'
    df['Dates'] = pd.to_datetime(df['Dates'], format='%Y%m%d')
    

    欠損値の扱い


    私たちは最初に何か欠けている値がある場合は、次の結果に応じて何をするかを決めることができますチェックします.
    df.isna().sum()
    
    不足している値がない場合は、我々は我々が不足している値の割合を行う顕著な行方不明の値がある場合は、分析を続行することができます.欠落した値の割合が高く、重要な列でない場合は、対応する列を削除することができます
    total_missing = df.isna().sum().sort_values(ascending=False)
    percentages_missing = (df.isna().sum()/df.isna().count()).sort_values(ascending=False)
    missing_df = pd.concat([total_missing, percentages_missing], axis=1, keys=["Total_Missing", "Percentages_Missing"])
    missing_df.head(25)
    

    欠落した値の数がそれほど大きくない場合、行方不明の数字を埋める方法を見つける.行方不明の値を扱う多くの方法があります、そして、我々は後で彼らを見なければなりません.

    要約統計


    DataFrameに数値データが含まれている場合、各列についての情報が含まれます.
    count -空の値でない値.
    平均-平均値.
    標準偏差-標準偏差.
    最小-最小値.
    25 %- 25 %パーセンタイル*.
    50 %- 50 %のパーセンタイル*.
    75 %- 75 %パーセンタイル*.
    max -最大値.
    このことから、すでにあなたが持っているデータディストリビューションを見ることができます.
    df.describe()
    

    7 .特定のカラムの値カウント


    ここでは、列内の各値の数を数えます.
    例えば、それが車データセットであるなら、データセットにいくつのタイプが現れるかを知りたいです.
    df.Col.value_counts()
    
  • 重複値のチェック
  • これはまた、重複した値のチェックです、そして、我々は彼らを落すか、我々が達成したいデータとゴールに従い彼らを保つかどうか知ることができます
    #example of the data that have multiple values
    df[df.Player == "john doe"]
    

    9 .データ配布とデータ異常を見てください


    ここでは、データ配布がSeabornライブラリを使用している方法を視覚的に見たい.前の要約統計から、我々は潜在的にデータ異常があるどのコラムをすでに知っているかもしれません.データの異常も標準偏差、外れ値、ノイズ、ノベル、および例外と呼ばれます.

    10 .データ中の変数間の相関


    これはdataframe内のすべての列の対の相互関係を参照します.任意のNA値が自動的に除外されます.DataFrame内の任意の非数値データ型列に対しては無視されます.
    plt.figure(figsize=(12, 7))
    sns.heatmap(df[["SalePrice", "OverallQual", "OverallCond"]].corr(), annot=True, cmap="Greens")
    plt.title("Correlation Matrix Heatmap")
    plt.show()
    

    Corrは、関係の方向、関係の形(形)、および2つの変数の関係の程度(強さ)について私たちに話すことができます.相関測度の関係の方向は、2つの変数間の関係の方向について説明します.

    結論


    Analyticsやデータ探査で最もインポートするものはデータセットの性質を理解しています.問題文を理解して、どの部分がデータを必要とし、どのようにそれを行うのかを知ることができます.もっと練習すると、別のデータセットに対処するほど、これはより明確になります.ハッピーコーディング!