Conjuntos de dados de amostra em Pandas

88

Ao usar R, é útil carregar conjuntos de dados de "prática" usando

data(iris)

ou

data(mtcars)

Existe algo semelhante para os Pandas? Eu sei que posso carregar usando qualquer outro método, apenas curioso se há algo embutido.

canyon 289
fonte
2
Possível duplicata de Existem conjuntos de dados de exemplo para Python?
um ben diferente de

Respostas:

103

Desde que originalmente escrevi esta resposta, eu a atualizei com as muitas maneiras que agora estão disponíveis para acessar conjuntos de dados de amostra em Python. Pessoalmente, costumo ficar com qualquer pacote que já estou usando (geralmente nativo do mar ou pandas). Se você precisar de acesso offline, instalar o conjunto de dados com Quilt parece ser a única opção.

Seaborn

O pacote de plotagem brilhante seabornpossui vários conjuntos de dados de amostra 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

Se você não deseja importar seaborn, mas ainda deseja acessar seus conjuntos de dados de amostra , você pode usar a abordagem de @andrewwowens para os dados de amostra do mar:

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

Observe que os conjuntos de dados de amostra contendo colunas categóricas têm seu tipo de coluna modificado porsns.load_dataset() e o resultado pode não ser o mesmo obtendo-o diretamente do url. Os conjuntos de dados de amostra de íris e dicas também estão disponíveis no repositório do pandas github aqui .

Conjuntos de dados de amostra R

Uma vez que qualquer conjunto de dados pode ser lido via pd.read_csv(), é possível acessar os conjuntos de dados de amostra todos de R copiando os URLs a partir deste repositório conjunto de dados R .

Maneiras adicionais de carregar os conjuntos de dados de amostra R incluem statsmodel

import statsmodels.api as sm

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

e PyDataset

from pydataset import data

iris = data('iris')

scikit-learn

scikit-learn retorna dados de amostra como matrizes numpy em vez de um quadro de dados do 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

Colcha

Quilt é um gerenciador de conjunto de dados criado para facilitar o gerenciamento do conjunto de dados. Inclui muitos conjuntos de dados de amostra comuns, como vários do repositório de amostra uciml . A página de início rápido mostra como instalar e importar o conjunto de dados da íris:

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

Depois de instalar um conjunto de dados, ele pode ser acessado localmente, portanto, esta é a melhor opção se você deseja trabalhar com os dados offline.

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

O Quilt também oferece suporte ao controle de versão do conjunto de dados e inclui uma breve descrição de cada conjunto de dados.

joelostblom
fonte
9
A resposta não deveria ser apenas NÃO, não há conjuntos de dados "práticos" que você possa carregar com os pandas.
Giacomo
15

O rpy2módulo é feito para isso:

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

r['iris'].head()

rendimentos

   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

Até o pandas 0,19, você pode usar a própria rpyinterface do pandas :

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

rendimentos

   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

rpy2também fornece uma maneira de converter Robjetos em objetos 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())

rendimentos

    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
fonte
1
Obrigado pela sugestão. Eu estava fazendo isso, mas viola a "facilidade" que os dados estão disponíveis no R. É uma solução que dá certo!
canyon289
3
Hm? sobre o que é tão difícil rcom.load_data('iris')?
unutbu
Provavelmente nada, percebo que posso estar sendo muito exigente. Agradeço a resposta!
canyon289
1
Observe que pandas.rpyfoi removido em 0,20 . Para fazer interface com R, rpy2é a opção recomendada.
joelostblom
13

Qualquer arquivo .csv publicamente disponível pode ser carregado no pandas de forma extremamente rápida usando seu URL. Aqui está um exemplo usando o conjunto de dados iris originalmente do arquivo 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()

A saída aqui é o cabeçalho do arquivo .csv que você acabou de carregar do URL fornecido.

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

Um URL curto memorável para o mesmo é https://j​.mp/iriscsv. Este URL curto funcionará apenas se for digitado e não se for copiado e colado.

Andrewwowens
fonte
O site não está fora do ar. Verifique archive.ics.uci.edu/ml/datasets/Iris para obter a descrição ou baixeiris.names
zhazha