統計とデータサイエンスを学ぶ最良の方法は、実際にやってみることです。そのためにはデータセットが必要です。それらを見つけるのに適した場所の 1 つは Kaggle です。ここでは、Kaggle データセットを検索、ダウンロード、探索する方法を説明します。
データセットの検索
直接検索することも、トピックごとに検索することもできます
Kaggle はデータ サイエンス コンテストを主催するサイトですが、私が本当に興味があるのはデータセットです。ユーザーはさまざまなデータセットをアップロードしています。これらは、公的記録や API などのさまざまなソースから取得されたり、シミュレートされたりすることもあります。
私が分析によく使う環境は、私が Python データ スタックと呼んでいるものです。IPython、Jupyter、NumPy、SciPy、pandas、Seaborn、statsmodels です。
Kaggle の Web サイトには優れた検索機能があります。興味のあるトピックのデータセットを検索するか、参照します。トピック別に検索することもできます。私はテクノロジーについて書いているので、「コンピューター サイエンス」のトピックでは、多くの興味深いデータセットが明らかになります。
たとえば、このリストから、スクリーンタイムとメンタルヘルスに関するものをダウンロードしようと思います。
Kaggle のすべてのデータセットには、「データ カード」と呼ばれるそのレイアウトに関する情報が含まれています。これは、データセットの列とその生成方法を詳しく説明します。
データセットのダウンロード
直接ダウンロードして解凍することも、CLI クライアントを使用することもできます
次に、データセットをダウンロードします。 CSV 形式で ZIP ファイルに圧縮されています。これをダウンロードして解凍するだけでもよいのですが、Kaggle ではコマンドライン クライアントを利用できるようにしています。すでに pip 経由でインストールしました。これを使用するには API キーを設定する必要がありますが、アカウントを作成して Web サイトの設定に移動すれば行うことができます。 Kaggle には、クライアントで API キーを使用する方法に関するドキュメントがあります。
データを保存するディレクトリに移動し、ページの部分 URL を使用して Kaggle クライアントを呼び出します。 Kaggle を使用すると、これを簡単に貼り付けることができます。
kaggle datasets download amar5693/screen-time-sleep-and-stress-analysis-dataset
新しくダウンロードしたデータセットを解凍します。
unzip social-media-and-mental-health.zip
展開されたCSVファイルの名前は「social_media_mental_health.csv」であることがわかります。
Jupyter ノートブックの作成
さあ、データセットの探索に取り掛かりましょう
データセットをダウンロードして解凍すると、データセットを探索できるようになります。データセットの探索は、対話型の使用を好むため、従来のプログラミングとは異なります。インタラクティブな Python の場合、私は簡単な実験には IPython を、後で作業を保存したい場合には Jupyter ノートブックを好みます。
Jupyter ノートブックは 2 つのことに役立ちます。1 つは自分の進捗状況を追跡すること、もう 1 つは他の人と結果を共有することです。 Jupyter ノートブックを使用すると、コード、ビジュアライゼーション、コメントを 1 つのドキュメントに混在させることができます。
私のデータ サイエンス/データ分析/統計ツールボックスは Mamba 環境で使用していましたが、更新がイライラするほど遅いことがわかりました。私は、より効率的なアプローチとして Pixi を試してみることにしました。 Pixi は主にプロジェクトベースですが、実験用にグローバル環境をセットアップすることもできるため、新しい環境に切り替える必要がありません。また、Mamba よりもはるかに速く更新されます。
私の通常のワークフローは次のとおりです。
- 始める ジュピター
- 作成する 新しいノート
- 輸入 データ。
- 分析中 Python ライブラリを使用し、プロットを作成し、テストを実行し、結果についてのコメントを含めます。
コマンド ラインで Jupyter ノートブックを起動できます。
jupyter notebook
これにより、デフォルトのブラウザで Jupyter が開きます。これにより、Jupyter を起動したディレクトリからファイル ブラウザが起動します。
新しいノートを作成します。 Python はバックグラウンドでコードの評価をリッスンしています。ファイル名をクリックして名前を変更します。 Kaggle のデータセットでは、後で思い出せるように、元の URL へのリンクを挿入するのが好きです。
テキストセルはマークダウン形式です。
これらが完了したら、Python 統計ツールボックスをインポートできます。セルを作成します。デフォルトでは、新しいセルはコードセルです。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_theme()
import statsmodels.formula.api as smf
from scipy import stats
これらのほとんどは、入力しやすくするために短縮名を持つ共通ライブラリをインポートするだけです。 「%matplotlib inline」コマンドは、ノートブックにプロットを挿入するように Jupyter に指示する「マジック コマンド」です (Seaborn は、一般的な統計プロット用の matplotlib のフロントエンドです)。それ以外の場合は、別のウィンドウに表示されます。 「sns.set_theme()」行は、プロットを読みやすくするためにデフォルトのテーマを使用するように Seaborn に指示します。
データのインポートと視覚化
記述的な統計、ヒストグラム、散布図がデータのストーリーを伝える
ライブラリをインポートしたら、データをインポートして作業を開始できます。
これを行うには、ダウンロードしたデータを、スプレッドシートに似た長方形の配列である pandas DataFrame にロードします。
ダウンロードした場所への相対パスを使用してデータをインポートします。
screen = pd.read_csv('data/ScreenTime vs MentalWellness.csv')
次に、DataFrame の最初の数行を調べます。
screen.head()
次に、DataFrame 内の数値列の記述統計を取得します。
screen.describe()
これらには、平均値、標準偏差、最小値、25 パーセンタイルまたは下位四分位数、中央値または 50 パーセンタイル、75 パーセンタイルまたは上位四分位数、および最大値が含まれます。
ヒストグラムで列の分布を確認できます。 Seaborn の displot 関数を使用します。
このサンプルの利用時間の分布を調べたいとします。私は次のようなものを使用します
sns.displot(x='screen_time_hours')
ヒストグラムを見れば、後でどのような統計検定を使用できるかが分かります。このヒストグラムは、釣鐘型の曲線を持ち、ほぼ正規分布しているように見えます。
t 検定や分散分析 (ANOVA) などのほとんどの統計検定は、データが正規分布していることを前提としています。偏ったデータセットでこれらを使用すると、結果が狂う可能性があります。このような状況では、ノンパラメトリック テストの方が正確です。
。
私も可能性のある相関関係に注目しています。ある変数と別の変数の散布図を作成することで、これらをテストできます。
スクリーンタイムと自己評価ストレススコアの散布図を表示するには、関数 relplot を使用します。
sns.relplot(x="screen_time_hours",y="stress_level_0_10",data=screen)
散布図は正の線形関係を示しており、スクリーン時間が長くなるとストレス レベルが上昇することを示しています。関数 regplot を使用して、散布図上に回帰直線をプロットできます。
sns.regplot(x="screen_time_hours",y="stress_level_0_10",data=screen)
相関関係を見つける
傾向を見つけて予測する
スクリーンタイムとストレスの間には相関関係があるように見えますが、それは単なる相関関係にすぎません。スクリーンタイムは必ずしも必要ではない 原因 強調すると、このプロットは、この 2 つの間に関係があることを示しているだけです。
Seaborn の回帰プロットでは、一次関数の値が得られません。高校で覚えているかもしれない古典的な傾き切片方程式 y = mx + b の x の傾きと y 切片を取得するには、別のライブラリを使用する必要があります。
statsmodels は、多くの一般的な統計テストを備えたライブラリであり、特に回帰分析用に設計されています。統計やデータ分析で人気のもう 1 つの言語である R からインスピレーションを得た数式を使用して回帰を取得できます。
results = smf.ols('stress_level_0_10 ~ screen_time_hours',data=screen).fit()
results.summary()
これにより、回帰結果が Jupyter ノートブックのテーブルに配置されます。この表は、傾きと切片の式の係数の値を示しています。ここで、y 切片は約 2.86、傾きは 0.59 です。また、スクリーンタイムを方程式に当てはめることで、その人が自分のスクリーンタイムを報告した場合にどの程度ストレスを感じるかを大まかに予測することもできます。
データ分析で最も難しいのは、データを見つけることです
Kaggle は、データ分析を実践する際の大きな障害、つまりデータを見つけることを解決しました。 Kaggle で興味深いデータセットをすぐに見つけて、お気に入りの Python ライブラリを使用して探索できるようになりました。このワークフローにより、データを見つけようとするのではなく、データに集中することができます。