Comment trouver et explorer des ensembles de données de Kaggle à l'aide de Python
Agence web » Actualités du digital » Comment trouver et explorer des ensembles de données de Kaggle à l'aide de Python

Comment trouver et explorer des ensembles de données de Kaggle à l'aide de Python

La meilleure façon d’apprendre les statistiques et la science des données est de le faire réellement. Et pour ce faire, vous avez besoin d’ensembles de données. Un bon endroit pour les trouver est Kaggle. Voici comment trouver, télécharger et explorer les ensembles de données Kaggle.

Recherche d'ensembles de données

Vous pouvez effectuer une recherche directement ou par sujet

Kaggle est un site qui héberge des concours de science des données, mais ce sont les ensembles de données qui m'intéressent vraiment. Les utilisateurs ont téléchargé une grande variété d'ensembles de données. Ils proviennent de différentes sources, telles que des archives publiques, des API, ou sont même simulés.

Mon environnement de prédilection pour l'analyse est ce que j'appelle la pile de données Python : IPython, Jupyter, NumPy, SciPy, pandas, Seaborn et statsmodels.

Le site Web Kaggle dispose d’une fonction de recherche décente. Je vais soit rechercher un ensemble de données pour un sujet qui m'intéresse, soit parcourir. Vous pouvez également effectuer une recherche par sujet. Depuis que j'écris sur la technologie, le sujet « informatique » révèle généralement de nombreux ensembles de données intéressants.

À partir de cette liste, par exemple, je pense que je vais en télécharger une sur le temps passé devant un écran et la santé mentale.

Chaque ensemble de données sur Kaggle contient des informations sur sa disposition, appelées « carte de données ». Cela décrit les colonnes d'un ensemble de données, ainsi que la manière dont il a été généré.

Téléchargement de l'ensemble de données

Vous pouvez télécharger directement et décompresser ou utiliser un client CLI

Maintenant, je veux télécharger l'ensemble de données. C'est un style CSV compressé dans un fichier ZIP. Je pourrais simplement le télécharger et le décompresser, mais Kaggle a mis à disposition un client en ligne de commande. Je l'ai déjà installé via pip. Vous devrez configurer une clé API pour l'utiliser, mais vous pouvez le faire si vous créez un compte et accédez aux paramètres du site Web. Kaggle dispose d'une documentation sur la façon d'utiliser votre clé API avec le client.

Je vais accéder au répertoire où je conserve mes données et appeler le client Kaggle avec l'URL partielle de la page. Kaggle facilite le collage de ceci :

kaggle datasets download amar5693/screen-time-sleep-and-stress-analysis-dataset

Je vais décompresser l'ensemble de données nouvellement téléchargé :

unzip social-media-and-mental-health.zip

Je vois que le nom du fichier CSV développé est « social_media_mental_health.csv ».

Créer un bloc-notes Jupyter

Il est maintenant temps de se mettre au travail pour explorer l'ensemble de données

Une fois l'ensemble de données téléchargé et décompressé, je peux maintenant l'explorer. L’exploration d’ensembles de données se distingue de la programmation conventionnelle car elle privilégie une utilisation interactive. Pour Python interactif, je privilégie IPython pour les expériences rapides et les notebooks Jupyter lorsque je souhaite enregistrer mon travail pour plus tard.

Les notebooks Jupyter sont utiles pour deux choses : suivre mes progrès et partager les résultats avec d’autres personnes. Les blocs-notes Jupyter me permettent de mélanger du code, des visualisations et des commentaires dans un seul document.

Ma boîte à outils de science des données/analyse de données/statistiques vivait dans un environnement Mamba, mais j'ai trouvé sa mise à jour extrêmement lente. J'ai décidé d'essayer Pixi pour une approche plus simple. Pixi est avant tout basé sur des projets, mais il me permet également de mettre en place un environnement global d'expérimentation afin de ne pas avoir à basculer dans un nouvel environnement. Il se met également à jour beaucoup plus rapidement que Mamba.

Mon flux de travail habituel est le suivant :

  1. Commencer Jupyter
  2. Créer un nouveau carnet
  3. Importer les données.
  4. Analyser il utilise des bibliothèques Python, crée des tracés, exécute des tests et inclut des commentaires sur les résultats.

Je peux lancer un notebook Jupyter en ligne de commande :

jupyter notebook

Cela ouvrira Jupyter dans le navigateur par défaut. Cela lancera un navigateur de fichiers, commençant dans le répertoire où j'ai lancé Jupyter.

Je vais créer un nouveau carnet. Python écoute pour évaluer le code en arrière-plan. Je clique sur le nom du fichier pour le renommer. Avec les ensembles de données de Kaggle, j'aime mettre un lien vers l'URL d'origine afin de pouvoir m'en souvenir plus tard.

Les cellules de texte sont en Markdown.

Une fois ces éléments réglés, je peux importer ma boîte à outils statistiques Python. Je crée une cellule. Par défaut, les nouvelles cellules sont des cellules de code.

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

La plupart d'entre eux importent simplement des bibliothèques communes avec des noms abrégés pour les rendre plus faciles à saisir. La commande « %matplotlib inline » est une « commande magique » qui indique à Jupyter d'insérer tous les tracés dans le bloc-notes (Seaborn est une interface frontale à matplotlib pour les tracés de statistiques courants). Sinon, ils seront affichés dans une fenêtre séparée. La ligne « sns.set_theme() » indique à Seaborn d'utiliser son thème par défaut pour rendre les tracés plus faciles à lire.

Importation et visualisation des données

Des statistiques descriptives, des histogrammes et des nuages ​​de points racontent l'histoire des données.

Avec les bibliothèques importées, je peux me mettre au travail en important les données

Pour ce faire, je charge les données que j'ai téléchargées dans un pandas DataFrame, un tableau rectangulaire semblable à une feuille de calcul.

Je vais importer les données en utilisant le chemin relatif vers l'endroit où je les ai téléchargées :

screen = pd.read_csv('data/ScreenTime vs MentalWellness.csv')

Ensuite, j'examinerai les premières lignes du DataFrame :

screen.head()

Je prendrai ensuite des statistiques descriptives des colonnes numériques du DataFrame.

screen.describe()

Ceux-ci incluent la moyenne, l'écart type, le minimum, le 25e centile ou quartile inférieur, la médiane ou 50e centile, le 75e centile ou quartile supérieur et la valeur maximale.

Je peux regarder la distribution d'une colonne avec un histogramme. J'utiliserai la fonction de répartition de Seaborn.

Supposons que je veuille examiner la répartition des heures de temps passé devant un écran dans cet échantillon. J'utiliserais quelque chose comme

sns.displot(x='screen_time_hours')

Un histogramme me dira quel type de tests statistiques je pourrai utiliser plus tard. Cet histogramme semble avoir une distribution presque normale, avec une courbe en forme de cloche.

La plupart des tests statistiques, tels que le test t ou l'analyse de variance (ANOVA), supposent que les données sont normalement distribuées. Leur utilisation avec des ensembles de données asymétriques peut fausser les résultats. Les tests non paramétriques peuvent être plus précis dans ces circonstances.

.

Je suis également à l'affût d'éventuelles corrélations. Je peux les tester en créant des nuages ​​de points d'une variable par rapport à une autre.

Pour afficher le nuage de points du temps passé devant un écran par rapport à un score de stress auto-évalué, je peux utiliser la fonction relplot :

sns.relplot(x="screen_time_hours",y="stress_level_0_10",data=screen)

Le nuage de points montre une relation linéaire positive, indiquant que le niveau de stress augmente avec le temps passé devant un écran. Je peux tracer la ligne de régression sur le nuage de points avec la fonction regplot.

sns.regplot(x="screen_time_hours",y="stress_level_0_10",data=screen)

Trouver des corrélations

Bien qu’il semble exister une corrélation entre le temps passé devant un écran et le stress, ce n’est qu’une corrélation. Le temps passé devant un écran n'est pas nécessairement cause stress, l'intrigue montre simplement qu'il y a une relation entre les deux.

Le tracé de régression de Seaborn ne me donne pas les valeurs de la fonction linéaire. Pour obtenir la pente de x et l'ordonnée à l'origine de l'équation classique à l'origine de la pente y = mx + b dont vous vous souvenez peut-être du lycée, je dois utiliser une autre bibliothèque.

statsmodels est une bibliothèque contenant de nombreux tests statistiques courants et est particulièrement conçue pour l'analyse de régression. Il peut obtenir des régressions à l'aide de formules inspirées de R, un autre langage populaire pour les statistiques et l'analyse de données.

results = smf.ols('stress_level_0_10 ~ screen_time_hours',data=screen).fit()
results.summary()

Cela placera les résultats de la régression dans un tableau du notebook Jupyter. Le tableau montre les valeurs des coefficients pour l'équation à l'origine de la pente. Ici, l'ordonnée à l'origine est d'environ 2,86 et la pente est de 0,59. Je peux également faire une prédiction approximative du niveau de stress qu'une personne serait si elle rapportait son temps d'écran en le branchant sur l'équation.


La partie la plus difficile de l’analyse des données est de les trouver

Kaggle a résolu une pierre d'achoppement majeure dans la pratique de l'analyse des données : les trouver. Je peux désormais trouver rapidement des ensembles de données intéressants dans Kaggle et les explorer avec mes bibliothèques Python préférées. Ce flux de travail me permet de me concentrer sur les données au lieu d'essayer de les trouver.

★★★★★