pandasの学習用のデータセットを入手する

Pythonでpandasの学習をしていると、お試し用のデータセットが欲しくなることがあります。pandasにはデータセットをダウンロードする機能はありませんが、seabornにDataFrameとしてデータをダウンロードする機能があります。

目次

  1. seabornが公開しているデータセット
  2. データセットのダウンロード
  3. データセットをキャッシュから読み込む
  4. 主な関数やメソッド

seabornが公開しているデータセット

GitHubのseabornのリポジトリにデータが公開されています。

公開されているデータは、get_dataset_names()関数で取得できます。

>>> import seaborn as sns
>>> sns.get_dataset_names()
['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'exercise', 'flights', 'fmri', 'gammas', 'geyser', 'iris', 'mpg', 'penguins', 'planets', 'tips', 'titanic']

iris(アヤメの分類データ)やtitanic(タイタニック号の乗船名簿)が有名ですよね。

データセットのダウンロード

irisデータセットをダウンロードしてみます。

load_dataset()関数に引数としてデータセットを指定すると、データセットをダウンロードします。戻り値はDataFrameです。

下記の例は、irisデータセットをダウンロードして、dfという名前のDataFrameに代入しています。そのdfの情報をinfo()メソッドで、最初の5行のデータをhead()メソッドで表示します。

>>> import pandas as pd
>>> import seaborn as sns

>>> df = sns.load_dataset('iris')

>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype
---  ------        --------------  -----
 0   sepal_length  150 non-null    float64
 1   sepal_width   150 non-null    float64
 2   petal_length  150 non-null    float64
 3   petal_width   150 non-null    float64
 4   species       150 non-null    object
dtypes: float64(4), object(1)
memory usage: 6.0+ KB

>>> df.head(5)
   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

データセットをキャッシュから読み込む

ダウンロードしたデータは、キャッシュとしてローカルドライブに保存されます。2回目以降をキャッシュから読み込むようにすれば、ネットやGitHubの負荷を減らせるわけです。

キャッシュとしてデータセットが保存されているフォルダを調べるには、get_data_home()関数を使用します。

>>> import seaborn as sns
>>> sns.get_data_home()
'C:\\Users\\account_name\\seaborn-data'

Windows10で実行しているのですが、ログインアカウントのseaborn-dataというフォルダに保存されているようです。

C:\Users\account_name>dir seaborn-data
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 8AFE-9592 です

 C:\Users\account_name\seaborn-data のディレクトリ

2021/07/10  18:38    <DIR>          .
2021/07/10  18:38    <DIR>          ..
2021/07/10  18:38             3,858 iris.csv
               1 個のファイル               3,858 バイト
               2 個のディレクトリ  773,695,901,696 バイトの空き領域

iris.csvがダウンロードされていました。

特に何も指定しない場合は、ネットからのダウンロードよりもキャッシュからの読み込みが優先されます。

例として、キャッシュフォルダにあるiris.csvを下記のように書き換えます。

cache_test1, cache_test2
1,a
2,b

そして、seabornでデータセットを読み込んでみます。

>>> import pandas as pd
>>> import seaborn as sns

>>> df = sns.load_dataset('iris')

>>> df
   cache_test1  cache_test2
0            1            a
1            2            b

キャッシュの方のデータが読み込まれました。

キャッシュを無効にしてネットから強制的にダウンロードする場合には、cache引数にFalseを指定します。ただし、この場合はダウンロードしたデータがキャッシュフォルダに保存されませんので注意してください。

>>> import pandas as pd
>>> import seaborn as sns

>>> df = sns.load_dataset('iris', cache=False)

>>> df.head(5)
   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.get_dataset_names()

ダウンロード可能なデータセットのリストを返します。

import seaborn as sns

ret = sns.get_dataset_names()

変数

内容

ret

list

ダウンロード可能なデータセットのリスト

seaborn.get_data_home()

データセットのキャッシュフォルダを返す関数です。

import seaborn as sns

ret = sns.get_data_home([data_home])

変数

内容

data_home

省略可。規定値はNone。

ret

str

データセットのキャッシュフォルダ

seaborn.load_dataset()

データセットをダウンロードして、DataFrameに読み込みます。

import seaborn as sns

df = sns.load_dataset(name, [cache], [data_home], [kws])

変数

内容

name

str

データセットの名前

cache

boolean

省略可。規定値はTrue。キャッシュを使用するかどうか。

data_home

str

省略可。規定値はNone。キャッシュフォルダの指定。

kws

key and values

省略可。その他の読み取りオプションの指定。

df

DataFrame

データセットのDataFrame。

cacheがTrueのとき、最初にローカルのキャッシュの読み込みを試行して、ローカルから読み込みできない場合はネットからのダウンロードを試みます。ダウンロードできた場合は、データをキャッシュフォルダに保存します。

公開日

広告