Conjuntos de datos de muestra en Pandas

Respuestas:

103

Desde que escribí originalmente esta respuesta, la he actualizado con las muchas formas que ahora están disponibles para acceder a conjuntos de datos de muestra en Python. Personalmente, tiendo a quedarme con cualquier paquete que ya esté usando (generalmente seaborn o pandas). Si necesita acceso sin conexión, instalar el conjunto de datos con Quilt parece ser la única opción.

Seaborn

El brillante paquete de trazado seaborntiene varios conjuntos de datos de muestra integrados.

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 no desea importar seaborn, pero aún desea acceder a sus conjuntos de datos de muestra , puede usar el enfoque de @ andrewwowens para los datos de muestra de seaborn:

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

Tenga en cuenta que los conjuntos de datos de muestra que contienen columnas categóricas tienen su tipo de columna modificado porsns.load_dataset() y es posible que el resultado no sea el mismo al obtenerlo directamente de la URL. Los conjuntos de datos de muestra de iris y puntas también están disponibles en el repositorio de pandas github aquí .

Conjuntos de datos de muestra R

Dado que cualquier conjunto de datos se puede leer a través pd.read_csv(), es posible acceder a todos los conjuntos de datos de muestra de R copiando las URL de este repositorio conjunto de datos R .

Las formas adicionales de cargar los conjuntos de datos de muestra de R incluyen statsmodel

import statsmodels.api as sm

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

y PyDataset

from pydataset import data

iris = data('iris')

scikit-learn

scikit-learn devuelve datos de muestra como matrices numpy en lugar de un marco de datos 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

Edredón

Quilt es un administrador de conjuntos de datos creado para facilitar la gestión de conjuntos de datos. Incluye muchos conjuntos de datos de muestra comunes, como varios del repositorio de muestra de uciml . La página de inicio rápido muestra cómo instalar e importar el conjunto de datos de iris:

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

Después de instalar un conjunto de datos, es accesible localmente, por lo que esta es la mejor opción si desea trabajar con los datos sin conexión.

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 también admite el control de versiones de conjuntos de datos e incluye una breve descripción de cada conjunto de datos.

joelostblom
fuente
9
¿No debería la respuesta simplemente NO? No hay un conjunto de datos de "práctica" útil que pueda cargar con pandas.
Giacomo
15

El rpy2módulo está hecho para esto:

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

r['iris'].head()

rendimientos

   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

Hasta pandas 0.19 puede usar la propia rpyinterfaz de pandas :

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

rendimientos

   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

rpy2también proporciona una forma de convertir Robjetos en objetos de 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())

rendimientos

    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
fuente
1
Gracias por la sugerencia. Estaba haciendo esto pero viola la "facilidad" de que los datos están disponibles en R. ¡Sin embargo, es una solución que lo hace!
canyon289
3
¿Hm? ¿Qué es tan difícil rcom.load_data('iris')?
unutbu
Probablemente nada, me doy cuenta de que puedo estar siendo demasiado exigente. ¡Aprecio la respuesta!
canyon289
1
Tenga en cuenta que pandas.rpyse eliminó en 0,20 . Para interactuar con R, rpy2es la opción recomendada.
joelostblom
13

Cualquier archivo .csv disponible públicamente se puede cargar en pandas extremadamente rápido usando su URL. Aquí hay un ejemplo usando el conjunto de datos de iris originalmente del archivo de 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()

El resultado aquí es el encabezado del archivo .csv que acaba de cargar desde la URL dada.

>>> 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

Una URL corta memorable para el mismo es https://j​.mp/iriscsv. Esta URL corta funcionará solo si se escribe y no si se copia y pega.

andrewwowens
fuente
El sitio web no está caído. Consulte archive.ics.uci.edu/ml/datasets/Iris para obtener una descripción, o descargueiris.names
zhazha