ホームページ > バックエンド開発 > Python チュートリアル > Python を使用した探索的データ分析 (EDA): データから洞察を明らかにする

Python を使用した探索的データ分析 (EDA): データから洞察を明らかにする

Barbara Streisand
リリース: 2025-01-03 02:02:37
オリジナル
818 人が閲覧しました

EXPLORATORY DATA ANALYSIS (EDA) WITH PYTHON: UNCOVERING INSIGHTS FROM DATA

Python を使用した探索的データ分析 (EDA): データから洞察を明らかにします。

はじめに
探索的データ分析 (EDA) は、アナリストが洞察を明らかにし、さらなるモデリングのためのデータを準備できるため、データ分析において非常に重要です。この記事では、データの理解を深めるために、Python で利用できるさまざまな EDA テクニックとツールについて詳しく説明します。データセットのクリーニング/処理から、結果の視覚化、データを使ってストーリーを伝えるための Python の使用まで。

探索的データ分析とは何ですか?

探索的データ分析 (EDA) は、データセットを分析してその主な特徴を理解する方法です。これには、視覚的および統計的手法を通じてデータの特徴を要約し、パターンを検出し、関係を明らかにすることが含まれます。 EDA は、洞察を得て、さらなる分析のための仮説を立てるのに役立ちます。

Python の探索的データ分析 (EDA) は、データから洞察を明らかにするために不可欠なさまざまな手法を採用しています。基本的なテクニックの 1 つは、Matplotlib や Seaborn などのライブラリを使用したデータの視覚化です。これらのツールを使用すると、データ サイエンティストは、データセット内の分布と関係を理解するために重要な、散布図、ヒストグラム、箱ひげ図などのさまざまな種類のプロットを作成できます。

データを視覚化することで、アナリストは数値分析だけでは明らかではない傾向、外れ値、パターンを特定できます。

EDA のもう 1 つの重要なテクニックは、主に Pandas ライブラリによって促進されるデータのクリーニングと操作です。これには、欠損値の処理、データのフィルタリング、および洞察を要約するための集計関数の採用によるデータセットの処理が含まれます。 「groupby」などの関数を適用すると、ユーザーはデータを意味のあるカテゴリに分類できるため、より明確な分析が容易になります。さらに、相関分析などの統計手法を組み込むことで、変数間の関係をさらに理解できるようになり、より構造化された分析でテストできる仮説を立てるのに役立ちます。

Python を使用して EDA を実行する方法

ステップ 1: Python ライブラリをインポートする

Python を使用した ML の最初のステップは、ライブラリを使用してデータを理解し、操作することです。このリンクを使用して、Kaggle Web サイトでデータセットを取得できます: https://www.kaggle.com/datasets/sukhmanibedi/cars4u
データの読み込み、統計分析、視覚化、データ変換、マージと結合など、分析に必要なすべてのライブラリをインポートします。

Pandas と Numpy はデータ操作と数値計算に使用されています
Matplotlib と Seaborn はデータの視覚化に使用されています。
コード:
パンダを pd としてインポート
numpy を np
としてインポート matplotlib.pyplot を plt
としてインポート Seaborn を SNS としてインポート
警告を無視するには
インポート警告
warnings.filterwarnings('ignore')

ステップ 2: データセットの読み取り

Python Pandas ライブラリは、画像、.csv、.xlsx、.sql、.pickle、.html、.txt などのファイルからデータを pandas DataFrame にロードするための幅広い可能性を提供します。
ほとんどのデータは、CSV ファイルの表形式で入手できます。おしゃれでアクセスしやすいです。 read_csv() 関数を使用すると、データを pandas DataFrame に変換できます。
この記事では、中古車価格を予測するデータを例に挙げています。このデータセットでは、中古車の価格と、EDA が車の価格に影響を与える要因の特定にどのように重点を置いているかを分析しようとしています。データは DataFrame データに保存されました。
data = pd.read_csv("used_cars.csv")

データの分析

推論を行う前に、データ内のすべての変数を調べてデータを聞きます。
データ理解の主な目標は、行と列の数、データ内の値、データ型、データセット内の欠損値を含む、データに関する一般的な洞察を獲得することです。
形状 – 形状は、データセット内の観測値 (行) と特徴量 (列) の数を表示します
データセットには 7253 の観測値と 14 の変数があります
head() はデータセットの上位 5 つの観測値を表示します
data.head()

tail() はデータセットの最後の 5 つの観測値を表示します
data.tail()
info() は、各列のレコード数、null を含むデータ、null でないデータ、データ型、データセットのメモリ使用量など、データ型とデータに関する情報を理解するのに役立ちます

data.info()
data.info() は、変数 Mileage、Engine、Power、Seats、New Price、および Price に欠損値があることを示します。 Mileage や Power などの数値変数のデータ型は次のとおりです。 float64 と int64。 Location、Fuel_Type、Transmission、Owner Type などのカテゴリ変数はオブジェクト データ型です。

重複を確認してください

nunique() は、各列のいくつかの一意の値とデータの説明に基づいて、データ内の連続列とカテゴリ列を識別できます。重複したデータは、さらなる分析に基づいて処理または削除できます。
data.nunique()

https://www.analyticsvidhya.com/blog/2022/07/step-by-step-exploratory-data-analysis-eda-using-python/

欠損値の計算

isnull() は、データ内の null 値を識別するためにすべての前処理ステップで広く使用されています
この例では、data.isnull().sum() を使用して、各列の欠落レコードの数を取得します
data.isnull().sum()

以下のコードは、各列の欠損値の割合を計算するのに役立ちます
(data.isnull().sum()/(len(data)))*100

列 New_Price と Price の欠損値の割合は、それぞれ ~86% と ~17% です。

ステップ 3: データ削減

一部の列または変数は、分析に価値を追加しない場合は削除できます。
私たちのデータセットでは、列 S.No には、従属変数を予測する予測力がないと仮定して、ID 値のみが含まれています。

S.No.を削除します。データからの列

data = data.drop(['S.No.'], axis = 1)
data.info()

分析に必要な列を追加する必要があるため、特徴エンジニアリングを開始します。

ステップ 4: 特徴量エンジニアリング

特徴量エンジニアリングとは、機械学習または統計モデリングを使用して予測モデルを作成する際に、ドメイン知識を使用して生データから最も関連性の高い変数を選択して変換するプロセスを指します。特徴エンジニアリングの主な目標は、生データから意味のあるデータを作成することです。

ステップ 5: フィーチャーの作成

データセット内の変数 Year と Name を試してみましょう。サンプルデータを見ると、「年式」列が車の製造年を示しています。
車の年齢は車の価格に寄与する要素であるため、年形式の場合は車の年齢を見つけるのは困難です。
車の年式がわかる新コラム「Car_Age」のご紹介
datetime インポート日から
date.today().year
data['Car_Age']=date.today().year-data['年']
data.head()

現在のデータでは、車の名前は価格を予測するのにあまり役立ちません。ただし、この列を処理して、ブランド名とモデル名を使用して重要な情報を抽出することができます。名前を分割して、新しい変数「Brand」と「Model」を導入しましょう
data['ブランド'] = data.Name.str.split().str.get(0)
data['モデル'] = data.Name.str.split().str.get(1) data.Name.str.split().str.get(2)
データ[['名前','ブランド','モデル']]

ステップ 6: データのクリーニング/ラングリング
変数の名前の中には、関連性がなく、理解しにくいものもあります。一部のデータにはデータ入力エラーがあり、一部の変数にはデータ型の変換が必要な場合があります。データ内のこの問題を修正する必要があります。
例では、ブランド名「いすゞ」「ISUZU」「ミニ」「ランド」は間違っているようです。

これは修正する必要があります

print(data.Brand.unique())
print(data.Brand.nunique())
searchfor = ['いすゞ' ,'いすゞ','ミニ','ランド']
data[data.Brand.str.contains('|'.join(searchfor))].head(5)
data["ブランド"].replace({"ISUZU": "いすゞ", "Mini": "ミニクーパー","Land":"ランドローバー"}, inplace=True)
基本的なデータ分析、フィーチャリング、データのクリーンアップを行いました。

EDA プロセスに移りましょう

探索的データ分析の基礎について読む: https://www.analyticsvidhya.com/blog/2021/11/fundamentals-of-exploratory-data-analysis/

ステップ 7: EDA の探索的データ分析

探索的データ分析とは、データの初期調査を実行してパターンを発見し、概要統計とグラフ表現を利用して仮説を確認する重要なプロセスを指します。

• EDA を利用して、特定のデータの異常値、パターン、傾向をチェックできます。

• EDA は、データ内の意味のあるパターンを見つけるのに役立ちます。

• EDA は、ビジネス上の問題を解決するためにデータセットに対する深い洞察を提供します。

• EDA はデータセット内の欠損値を代入する手がかりを提供します

ステップ 8: 統計の概要

この情報では、データについて簡単かつ簡単に説明します。
個数、平均値、標準偏差、中央値、最頻値、最小値、最大値、範囲、標準偏差などを含めることができます。

統計の概要は、データに外れ値、データ入力エラー、データの分布 (データが正規分布しているか左右に偏っているかなど) があるかどうかを識別するための高レベルのアイデアを提供します

Python では、describe() を使用してこれを実現できます
description() 関数はデータのすべての統計概要を提供します
説明する() ; int、float
などの数値データ型に属するデータの統計概要を提供します。 data.describe().T

統計の概要から、以下の結果が推測できます:
• 年式の範囲は 1996 年から 2019 年で、中古車には最新モデルと古いモデルの両方が含まれていることを示す範囲内で最高値を示しています。

• 中古車の平均走行キロ数は約 58,000 キロメートルです。最大値が 650000 KM であることは外れ値の証拠を示しているため、範囲は最小値と最大値の間に大きな差があることを示しています。このレコードは削除できます。

• 走行距離の最小値は、走行距離 0 の車は販売されないことを示しています。これはデータ入力の問題のようです。
• エンジンとパワーに外れ値があり、データが右に偏っているようです。

• 車の平均座席数は 5 です。車の座席は価格に大きく寄与する重要な機能です。

• 中古車の最高価格は 160,000 ですが、これは非常に奇妙で、中古車としては非常に高い価格です。外れ値またはデータ入力の問題がある可能性があります。

describe(include=’all’) は、オブジェクト、カテゴリなどを含むすべてのデータの統計概要を提供します
data.describe(include='all')

EDA を実行する前に、分析を容易にするために数値変数とカテゴリ変数を分離しましょう
cat_cols=data.select_dtypes(include=['object']).columns
num_cols = data.select_dtypes(include=np.number).columns.tolist()
print("カテゴリ変数:")
print(cat_cols)
print("数値変数:")
print(num_cols)
Excel とスプレッドシートの標準偏差に関する記事もお読みください https://www.analyticsvidhya.com/blog/2024/06/standard-deviation-in-excel/

ステップ 9: EDA 単変量分析
一度に 1 つの変数を取得してデータセットを分析/視覚化します:
データの視覚化は不可欠です。データをよりよく理解するには、どのようなグラフをプロットするかを決定する必要があります。この記事では、Matplotlib と Seaborn ライブラリを使用してデータを視覚化します。
Matplotlib は、基本的なグラフを描画するために使用される Python 2D プロット ライブラリです。
Seaborn は、Matplotlib 上に構築された Python ライブラリでもあり、短いコード行を使用して Pandas と Numpy から統計プロットを作成およびスタイル設定します
単変量分析は、カテゴリ変数と数値変数の両方に対して実行できます。

カテゴリ変数は、個数プロット、棒グラフ、円グラフなどを使用して視覚化できます。
数値変数は、ヒストグラム、箱ひげ図、密度プロットなどを使用して視覚化できます。

この例では、連続変数のヒストグラムと箱ひげ図を使用して一変量分析を実行しました。
以下の図では、一部の変数には歪度と外れ値があるため、ヒストグラムと箱ひげ図を使用して変数のパターンを示しています。

num_cols の列:
print(col)
print('Skew :',round(data[col].skew(), 2))
plt.figure(figsize = (15, 4))
plt.subplot(1, 2, 1)
data[col].hist(grid=False)
plt.ylabel('カウント')
plt.subplot(1, 2, 2)
sns.boxplot(x=data[col])
plt.show()

価格と走行キロ数は、このデータが変換されるように正しく偏っており、すべての外れ値は代入中に処理され、カテゴリ変数はカウント プロットを使用して視覚化されます。カテゴリ変数は、自動車の価格に影響を与える要因のパターンを提供します。
fig, axes = plt.subplots(3, 2, figsize = (18, 18))
fig.suptitle('データセット内のすべてのカテゴリ変数の棒グラフ')
sns.countplot(ax = axes[0, 0], x = 'Fuel_Type', data = データ, color = 'blue',
order = data['Fuel_Type'].value_counts().index);
sns.countplot(ax = axes[0, 1], x = '送信', data = データ, color = 'blue',
order = data['送信'].value_counts().index);
sns.countplot(ax = axes[1, 0], x = 'Owner_Type', data = データ, color = 'blue',
order = data['Owner_Type'].value_counts().index);
sns.countplot(ax = axes[1, 1], x = '場所', data = データ, color = 'blue',
order = data['Location'].value_counts().index);
sns.countplot(ax = axes[2, 0], x = 'ブランド', data = データ, color = 'blue',
order = data['Brand'].head(20).value_counts().index);
sns.countplot(ax = axes[2, 1], x = 'モデル', data = データ, color = 'blue',
order = data['Model'].head(20).value_counts().index);
axes[1][1].tick_params(labelrotation=45);
axes[2][0].tick_params(labelrotation=90);
axes[2][1].tick_params(labelrotation=90);

カウントプロットから、以下の観測結果が得られます
• 購入可能な車の数が最も多いのはムンバイで、ハイデラバードとコインバトールがそれに続きます
• 約 53% の車の燃料タイプがディーゼルであり、これはディーゼル車がより高いパフォーマンスを発揮することを示しています
• 車の約 72% がマニュアル トランスミッションを備えています
• 車の約 82% が最初に所有されている車です。これは、ほとんどの購入者がファーストオーナー車の購入を好むことを示しています
• 車の約 20% がマルティ ブランドに属し、続いて車の 19% がヒュンダイに属します
• ワゴンRは、​​購入可能な全モデルの中で1位にランクされています。

結論:
探索的データ分析 (EDA) は、外れ値、主要なパターン、変数間の関係を検出することで、データセットから洞察と知識を明らかにします。これには、データの収集、クリーニング、変換を行って、その属性を明らかにすることが含まれます。
楽しく読んで、一緒にデータ サイエンスの未来を探求しましょう…

以上がPython を使用した探索的データ分析 (EDA): データから洞察を明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート