I. 何をする?

Cheatsheetでdata framesのsubsetsの作成方法を学びます。

https://i.loli.net/2018/02/09/5a7d635467064.png

学ぶ内容は次です。

II. サンプル・データの作成

seabornは、グラフ作成に用います。ここではサンプルデータirisの読み込みに用います。snsで呼び出します。

pandasは、データ・フレームの集計に使います。pdで呼び出します。

sns.iris.sample(5)で、irisからランダムにサンプルを5行取り出します。

import seaborn as sns
import pandas as pd
iris = sns.load_dataset('iris')
df = iris.sample(5)
print(df)
##      sepal_length  sepal_width  petal_length  petal_width    species
## 109           7.2          3.6           6.1          2.5  virginica
## 8             4.4          2.9           1.4          0.2     setosa
## 5             5.4          3.9           1.7          0.4     setosa
## 130           7.4          2.8           6.1          1.9  virginica
## 145           6.7          3.0           5.2          2.3  virginica

III.列名と行名の変更

dfの列名を変更するコードは次です。

df.columns = [‘列名’, ‘列名’, ‘列名’,,,,]

dfの行名を変更するコードは次です。

df.index ≒ [‘行名’, ‘行名’, ‘行名’,,,,]

df.columns = ['col1', 'col2', 'col3', 'col4', 'col5']
df.index = ['obs1', 'obs2', 'ons3', 'obs4', 'obs5']
print(df)
##       col1  col2  col3  col4       col5
## obs1   7.2   3.6   6.1   2.5  virginica
## obs2   4.4   2.9   1.4   0.2     setosa
## ons3   5.4   3.9   1.7   0.4     setosa
## obs4   7.4   2.8   6.1   1.9  virginica
## obs5   6.7   3.0   5.2   2.3  virginica

IV. 列の取り出し

列名を1列取り出すコードは次です。

データ名[‘行名’]、あるいは、データ名.行名

df['col2']
## obs1    3.6
## obs2    2.9
## ons3    3.9
## obs4    2.8
## obs5    3.0
## Name: col2, dtype: float64

あるいは、

df.col2
## obs1    3.6
## obs2    2.9
## ons3    3.9
## obs4    2.8
## obs5    3.0
## Name: col2, dtype: float64

複数列をデータ・フレームとして取り出すコードは次です。

データ名[[‘列名’, ‘列名’,,,]]

df[['col1', 'col5']]
##       col1       col5
## obs1   7.2  virginica
## obs2   4.4     setosa
## ons3   5.4     setosa
## obs4   7.4  virginica
## obs5   6.7  virginica

V. 行の取り出し

Indexで行を取り出します。Indexは表の一番左の列で一番上が空白になっています。

1.Indexの行名で取り出す場合

コードは次です。

loc[[‘行名’, ‘行名’,,,]]で、行を列名(インデクス)で選びます。

df.loc[['obs1', 'obs2']]
##       col1  col2  col3  col4       col5
## obs1   7.2   3.6   6.1   2.5  virginica
## obs2   4.4   2.9   1.4   0.2     setosa

2.インデクスの番号で取り出す場合

インデクス番号は0から始まります。’ ’は不要です。

コードは次です。

iloc[[番号, 番号,,,]

df.iloc[[0, 1]]
##       col1  col2  col3  col4       col5
## obs1   7.2   3.6   6.1   2.5  virginica
## obs2   4.4   2.9   1.4   0.2     setosa

3.列の値で取り出す場合

df[df.col5 == 'versicolor']
## Empty DataFrame
## Columns: [col1, col2, col3, col4, col5]
## Index: []
df[df['col5'] == 'versicolor']
## Empty DataFrame
## Columns: [col1, col2, col3, col4, col5]
## Index: []

4.複数の特定の値で取り出す場合

a.isin( )を用いる

ます、真偽のデータ・フレームを取得します。

selected = df.col5.isin(['versicolor', 'setosa'])
selected
## obs1    False
## obs2     True
## ons3     True
## obs4    False
## obs5    False
## Name: col5, dtype: bool

次に、真となる行を取り出します。

df[selected]
##       col1  col2  col3  col4    col5
## obs2   4.4   2.9   1.4   0.2  setosa
## ons3   5.4   3.9   1.7   0.4  setosa

b.locとlogical indexingを用いる

df.loc[(df['col5'] == 'setosa') | (df['col5'] == 'versicolor')]
##       col1  col2  col3  col4    col5
## obs2   4.4   2.9   1.4   0.2  setosa
## ons3   5.4   3.9   1.7   0.4  setosa

5.複数の条件で取り出す場合

To be continued.