初めてのpandas(irisデータセット)

スポンサーリンク
Python




pandasはPythonによるデータ解析に必須のツールで、データを整えるためのライブラリです。

pandasを理解できれば、データの整理をすることができます。データ解析や機械学習は、データの整理(データの前処理)が仕事の80%と言われいます。それだけ、重要で意味のある作業だということです。

ここでは、irisのデータを使ってpandasを使ってみましょう。

irisとは、花の形(ガクの長さや幅、花弁の長さや幅)で花の種類(setosa、versicolor、virginica)を分類するためのデータで、scikit-learnに入っています。

当ブログで採用している、Anacondaをインストールして、Jupyter Labを使うとスムースにコピペして確認できます。

【2020年最新】Anacondaのインストール方法

それでは、やっていきましょう。

ライブラリのインポートとアイリスデータを整える

import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
series1 = pd.Series(data=[iris.target_names[i] for i in iris.target], name="kind")
df = pd.concat([df,series1], axis=1)
df                      # 作成した ’df’ という名前のデータフレームを出力する

出力:

今回はこのコードの説明は省きます。本筋がデータの整理なので。

出力されたデータの形はデータフレームといい、’df’ という名前に設定しています。以後の ‘df’ は、このデータフレームのことを示しています。

出力の上にある、sepal length (cm), sepal width (cm), petal length (cm), petal width (cm), kind が変数名で ‘columns’ と呼び、列を表します。

出力の左にある、0~149の数字は ‘rows’ や ‘index’ と呼び、行を表します。

出力の下にある、150rows × 5columns は、150の行数、5の列数があることを示しています。

データを触ってみる

データの一部を抽出する

df["sepal length (cm)"]

出力:

‘df’ のなかの指定した列(sepal length (cm))のデータのみを抽出できました。

これは、別の方法でも同じ出力が可能です。

df[df.columns[0]]

出力:

これは、

df.columns

出力:
Index([‘sepal length (cm)’, ‘sepal width (cm)’, ‘petal length (cm)’,
‘petal width (cm)’, ‘kind’],
dtype=’object’)

 

コラム名(列の名前)が分かります。’sepal length (cm)’ と  ‘sepal width (cm)’ と  ‘petal length (cm)’ と ‘petal width (cm)’ と ‘kind’ の5つの列名が分かります。
さらに、

df.columns[0]

出力:
‘sepal length (cm)’

 

これで、列の指定ができます。df の columns(列名)の0番目を指定している。(0番目は1つ目という意味、ややこしいけど、だいたいのプログラミング言語はそんな感じ)

データの統計量(平均値)を出力

df.mean()

出力:
sepal length (cm)   5.843333
sepal width (cm)    3.057333
petal length (cm)   3.758000
petal width (cm)    1.199333
dtype: float64

各変数の平均値が出力されました。

この結果を確認してみましょう。

平均値は、変数をすべて足した値を総数で割った値です。

まず、sepal length (cm)のデータを確認してみます。

データの総数を出力します。

df[df.columns[0]].count()

出力:
150

データの総数が150個であると出力されました。
次に変数をすべて足した値を出力してみます。

df[df.columns[0]].sum()

出力:
876.5

これは、カラムの0番目、つまり ‘sepal length (cm)’ の総数を表しています。

df[df.columns[0]].sum()/df[df.columns[0]].count()

このコードは、変数をすべて足した値 ÷ データの総数 を計算しています。つまり、平均値です。

出力:
5.843333333333334

df.mean() の数値と一致しましたね。

データの一部のみ取り出す

データの sepal length (cm) と sepal width (cm) を取り出してみましょう。

df_2=df[["sepal length (cm)","sepal width (cm)"]]
df_2

出力:

指定した列のみを取り出せました。
別の方法として、以下のコードがあります。

df_1 = df[df.columns[:2]]
df_1

出力:

先ほどと同じ出力結果です。
このコードは、「columns(列)の2列目までを取り出す」、という命令です。
df_2=df[[“sepal length (cm)”,”sepal width (cm)”]] と指定するほうが、直感的ですが、df[df.columns[:2]]のほうが、入力ミスが少なく使い勝手がよいです。
わたしのような初心者は、直感的に分かりやすい方が、いいかもしれませんね。
今回は、以上です。





コメント

タイトルとURLをコピーしました