Примеры наборов данных в Pandas

88

При использовании R удобно загружать "практические" наборы данных, используя

data(iris)

или

data(mtcars)

Есть что-то подобное для Панд? Я знаю, что могу загрузить любой другой метод, просто интересно, есть ли что-нибудь встроенное.

каньон289
источник
2
Возможный дубликат. Есть ли примеры наборов данных для Python?
другой Бен

Ответы:

103

Поскольку я изначально написал этот ответ, я обновил его множеством способов, которые теперь доступны для доступа к образцам наборов данных в Python. Лично я предпочитаю использовать тот пакет, который уже использую (обычно seaborn или pandas). Если вам нужен автономный доступ, установка набора данных с Quilt кажется единственным вариантом.

Сиборн

В блестящий пакет для seabornпостроения графиков встроено несколько наборов образцов данных.

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

Панды

Если вы не хотите импортировать seaborn, но по-прежнему хотите получить доступ к его наборам данных выборки , вы можете использовать подход @andrewwowens для выборки данных seaborn:

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

Обратите внимание, что типовые наборы данных, содержащие категориальные столбцы, имеют измененный тип столбца,sns.load_dataset() и результат может быть другим, если получить его напрямую из URL-адреса. Образцы данных iris и tips также доступны в репозитории pandas на github здесь .

Примеры наборов данных R

Так как любой набор данных можно считывать с помощью pd.read_csv(), можно получить доступ примеров наборов данных всех R путем копирования URL - адресов из этого набора данных R хранилища .

Дополнительные способы загрузки образцов данных R включают: statsmodel

import statsmodels.api as sm

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

а также PyDataset

from pydataset import data

iris = data('iris')

scikit-learn

scikit-learn возвращает образцы данных в виде массивов numpy, а не фрейма данных 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

Одеяло

Quilt - это менеджер наборов данных, созданный для облегчения управления наборами данных. Он включает в себя множество типовых наборов данных, например несколько из репозитория образцов uciml . На странице быстрого запуска показано, как установить и импортировать набор данных диафрагмы:

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

После установки набора данных он становится доступным локально, поэтому это лучший вариант, если вы хотите работать с данными в автономном режиме.

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 также поддерживает управление версиями наборов данных и включает краткое описание каждого набора данных.

Joelostblom
источник
9
Разве ответ не должен быть просто НЕТ, не существует удобных наборов данных для «практики», которые можно было бы загрузить с помощью панд.
Джакомо
15

rpy2Модуль сделан для этого:

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

r['iris'].head()

дает

   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

До pandas 0.19 вы могли использовать собственный rpyинтерфейс pandas :

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

дает

   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

rpy2также предоставляет способ преобразования Rобъектов в объекты 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())

дает

    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
источник
1
Спасибо за предложение. Я делал это, но это нарушает "легкость" того, что данные доступны в R. Это решение, которое позволяет это сделать!
canyon289
3
Хм? в чем дело rcom.load_data('iris')?
unutbu
Скорее всего, ничего, я понимаю, что могу быть слишком разборчивым. Я ценю ответ!
canyon289
1
Обратите внимание, что это pandas.rpyбыло удалено в версии 0.20 . Для взаимодействия с R rpy2рекомендуется использовать этот вариант.
joelostblom
13

Любой общедоступный файл .csv можно очень быстро загрузить в pandas, используя его URL-адрес. Вот пример использования набора данных iris, изначально взятого из архива 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()

Результатом является заголовок файла .csv, который вы только что загрузили с заданного URL.

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

Запоминающийся короткий URL-адрес тоже есть https://j​.mp/iriscsv. Этот короткий URL-адрес будет работать, только если он введен, а не скопирован.

Andrewwowens
источник
Сайт не закрыт. Посмотрите archive.ics.uci.edu/ml/datasets/Iris для описания или загрузитеiris.names
zhazha