Exemples de jeux de données dans Pandas

88

Lors de l'utilisation de R, il est pratique de charger des ensembles de données «d'entraînement» en utilisant

data(iris)

ou

data(mtcars)

Y a-t-il quelque chose de similaire pour les pandas? Je sais que je peux charger en utilisant n'importe quelle autre méthode, juste curieux de savoir s'il y a quelque chose de intégré.

canyon289
la source
2
Possible duplication de Y a-t-il des exemples d'ensembles de données pour Python?
un autre ben

Réponses:

103

Depuis que j'ai initialement écrit cette réponse, je l'ai mise à jour avec les nombreuses méthodes qui sont désormais disponibles pour accéder aux exemples d'ensembles de données en Python. Personnellement, j'ai tendance à m'en tenir à n'importe quel paquet que j'utilise déjà (généralement seaborn ou pandas). Si vous avez besoin d'un accès hors ligne, l'installation de l'ensemble de données avec Quilt semble être la seule option.

Seaborn

Le package de traçage génial seaborncontient plusieurs ensembles de données d'échantillons intégrés.

import seaborn as sns

iris = sns.load_dataset('iris')
iris.head()
   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

Pandas

Si vous ne souhaitez pas importer seaborn, mais que vous souhaitez tout de même accéder à ses exemples de jeux de données , vous pouvez utiliser l'approche de @ andrewwowens pour les données d'échantillons Seaborn:

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

Notez que les exemples d'ensembles de données contenant des colonnes catégorielles ont leur type de colonne modifié parsns.load_dataset() et le résultat peut ne pas être le même en l'obtenant directement à partir de l'URL. Les exemples d'ensembles de données d'iris et de conseils sont également disponibles dans le repo pandas github ici .

Ensembles de données d'échantillons R

Étant donné que tout ensemble de données peut être lu via pd.read_csv(), il est possible d'accéder en copiant les URL à partir échantillons de données de tous R ce référentiel R ensemble de données .

Les méthodes supplémentaires de chargement des ensembles de données d'échantillons R incluent statsmodel

import statsmodels.api as sm

iris = sm.datasets.get_rdataset('iris').data

et PyDataset

from pydataset import data

iris = data('iris')

scikit-learn

scikit-learn renvoie des exemples de données sous forme de tableaux numpy plutôt que de trame de données pandas.

from sklearn.datasets import load_iris

iris = load_iris()
# `iris.data` holds the numerical values
# `iris.feature_names` holds the numerical column names
# `iris.target` holds the categorical (species) values (as ints)
# `iris.target_names` holds the unique categorical names

Courtepointe

Quilt est un gestionnaire de jeux de données créé pour faciliter la gestion des jeux de données. Il comprend de nombreux exemples de jeux de données courants, tels que plusieurs du référentiel d'échantillons uciml . La page de démarrage rapide montre comment installer et importer l'ensemble de données d'iris:

# In your terminal
$ pip install quilt
$ quilt install uciml/iris

Après avoir installé un ensemble de données, il est accessible localement, c'est donc la meilleure option si vous souhaitez travailler avec les données hors ligne.

import quilt.data.uciml.iris as ir

iris = ir.tables.iris()
   sepal_length  sepal_width  petal_length  petal_width        class
0           5.1          3.5           1.4          0.2  Iris-setosa
1           4.9          3.0           1.4          0.2  Iris-setosa
2           4.7          3.2           1.3          0.2  Iris-setosa
3           4.6          3.1           1.5          0.2  Iris-setosa
4           5.0          3.6           1.4          0.2  Iris-setosa

Quilt prend également en charge la gestion des versions des ensembles de données et inclut une brève description de chaque ensemble de données.

joelostblom
la source
9
La réponse ne devrait pas être simplement NON, il n'y a pas d'ensembles de données pratiques que vous pouvez charger avec des pandas.
Giacomo
15

Le rpy2module est fait pour cela:

from rpy2.robjects import r, pandas2ri
pandas2ri.activate()

r['iris'].head()

rendements

   Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species
1           5.1          3.5           1.4          0.2  setosa
2           4.9          3.0           1.4          0.2  setosa
3           4.7          3.2           1.3          0.2  setosa
4           4.6          3.1           1.5          0.2  setosa
5           5.0          3.6           1.4          0.2  setosa

Jusqu'à pandas 0.19, vous pouvez utiliser la propre rpyinterface de pandas :

import pandas.rpy.common as rcom
iris = rcom.load_data('iris')
print(iris.head())

rendements

   Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species
1           5.1          3.5           1.4          0.2  setosa
2           4.9          3.0           1.4          0.2  setosa
3           4.7          3.2           1.3          0.2  setosa
4           4.6          3.1           1.5          0.2  setosa
5           5.0          3.6           1.4          0.2  setosa

rpy2fournit également un moyen de convertir des Robjets en objets Python :

import pandas as pd
import rpy2.robjects as ro
import rpy2.robjects.conversion as conversion
from rpy2.robjects import pandas2ri
pandas2ri.activate()

R = ro.r

df = conversion.ri2py(R['mtcars'])
print(df.head())

rendements

    mpg  cyl  disp   hp  drat     wt   qsec  vs  am  gear  carb
0  21.0    6   160  110  3.90  2.620  16.46   0   1     4     4
1  21.0    6   160  110  3.90  2.875  17.02   0   1     4     4
2  22.8    4   108   93  3.85  2.320  18.61   1   1     4     1
3  21.4    6   258  110  3.08  3.215  19.44   1   0     3     1
4  18.7    8   360  175  3.15  3.440  17.02   0   0     3     2
unutbu
la source
1
Merci pour la suggestion. Je faisais cela mais cela viole la "facilité" que les données sont disponibles dans R. C'est une solution qui y parvient!
canyon289
3
Hm? de quoi est-il si difficile rcom.load_data('iris')?
unutbu
Probablement rien, je me rends compte que je suis peut-être trop pointilleux. J'apprécie la réponse!
canyon289
1
Notez que a pandas.rpyété supprimé dans 0.20 . Pour s'interfacer avec R, rpy2est l'option recommandée.
joelostblom
13

Tout fichier .csv disponible publiquement peut être chargé dans des pandas très rapidement en utilisant son URL. Voici un exemple utilisant le jeu de données iris originaire des archives UCI.

import pandas as pd

file_name = "https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv"
df = pd.read_csv(file_name)
df.head()

La sortie ici étant l'en-tête du fichier .csv que vous venez de charger à partir de l'URL donnée.

>>> df.head()
   sepal_length  sepal_width  petal_length  petal_width species
0           5.1          3.5           1.4          0.2  setosa
1           4.9          3.0           1.4          0.2  setosa
2           4.7          3.2           1.3          0.2  setosa
3           4.6          3.1           1.5          0.2  setosa
4           5.0          3.6           1.4          0.2  setosa

Une URL courte mémorable pour le même est https://j​.mp/iriscsv. Cette URL courte ne fonctionnera que si elle est tapée et non si elle est copiée.

andrewwowens
la source
Le site Web n'est pas en panne. Vérifiez archive.ics.uci.edu/ml/datasets/Iris pour la description, ou téléchargeziris.names
zhazha