Python pandas seaborn 計算

python

【Python】pandas, seabornの計算処理のまとめ

こんにちは。

 

産婦人科医で人工知能の研究をしているTommy(Twitter:@obgyntommy)です。

 

本記事ではPythonのライブラリの1つである pandas の計算処理について学習していきます。

 

pandasの使い方については、以下の記事にまとめていますので参照してください。

関連記事
Python pandas 使い方
【Python】Pandasの使い方【基本から応用まで全て解説】

続きを見る

 

データを取得したとき、そのまま使えるということはほとんどありません。

 

データの概要を知るために計算を行うこともありますし、機械学習で使うためには、データを計算して新しい特徴量を追加することもあります。

 

ここで本記事の学習到達目標です。

 

 本記事の学習目標

  • matplotlibの計算メソッドの修得
  • 行・列・指定範囲の計算方法の修得
  • 列同士の計算方法の修得
  • pandasの算術メソッドの修得
  • pandasのグループ化の方法

 

今回は、これらの計算がしっかりできるように習得していきましょう。

 

使用するデータのセッティングとseabornのインストール方法

Python pandas seaborn 計算

本記事では、irisのデータを使って学習していきます。

 

irisのデータは scikit-learn もしくは seaborn のライブラリから得る事ができます。

 

seabornのライブラリでは pandasのDataFrameの形式でデータを取得できるので、今回はそのライブラリで取得したデータを使用します。

seabornをインストールする方法

早速seabornをインストールしましょう。

 

In[]

 

これを入力するだけで、seabornをインストールする事が出来ます。

 

データを読み込む方法

下記コードでデータを取得してください。

 

headメソッドでどういったデータか見ておきましょう。

 

In[]

 

headメソッドで確認した、最初の5行のデータがこちらです。

 

Out[]

Python pandas seaborn 計算

 

pandasの計算メソッド

Python pandas seaborn 計算

pandasにはいくつか計算するためのメソッドが用意されています。

 

今回は、行や列に対して図のように合計平均などを計算します。

Python pandas seaborn 計算

 

計算するメソッドの種類は下記の表になります。

 

メソッド計算
sum合計
mean平均
median中央値
max最大値
min最小値
var分散
std標準偏差

 

sum(合計)

sumメソッドで合計を計算してみましょう。

 

パラメータに axis=0 (列), axis=1 (行)を与えることで、列か行の計算ができます。

 

パラメータを指定しない場合、初期値の 0 が使われて、列の合計になります。

In[]

sumメソッドは数値は合計を計算しますが、文字データは連結します。

 

数値のみの計算をしたい場合は、パラメータに numeric_only=True  と指定しましょう。

 

Out[]

 

axis=1 を指定して、行方向の合計を算出してみましょう。

 

In[]

 

Out[]

 

次に、species (品種)の setosa だけで計算させてみましょう。

 

条件をつけてのデータの指定方法は、ここでは説明を簡単にしますが、iris [条件]とすることで、決まった条件のデータに絞れます。

 

ここでいう条件が iris[‘species’]==’setosa’ で、species 列の setosa と等しいものとなっています。

In[]

 

Out[]

 

他のメソッドも sum と同じなので、順にコードと結果を確認していきましょう。

mean(平均)

平均の計算をしてみましょう。

 

In[]

 

Out[]

 

median(中央値)

中央値の計算をしてみましょう。

 

In[]

 

Out[]

 

max(最大値)

最大値の計算をしてみましょう。

 

In[]

 

文字列はアルファベット順で、最後尾のものが表示されています。

 

Out[]

 

min(最小値)

最小値の計算をしてみましょう。

 

In[]

 

文字列はアルファベット順の最初のものが表示されています。

 

Out[]

 

var(分散)

分散の計算をしてみましょう。

 

In[]

 

Out[]

 

std(標準偏差)

標準偏差の計算をしてみましょう。

 

In[]

 

Out[]

 

行、列、指定範囲の計算方法

Python pandas seaborn 計算

次は、列や行の各データに対して計算をしていきます。

 

図のようなイメージになります。

Python pandas seaborn 計算

または、下記図のような一部だけの計算です。

 

Python pandas seaborn 計算

 

この列だけ、この範囲だけなどデータの範囲を指定して、その範囲に対して計算をします。

 

ブロードキャスト

pandas の計算も numpy 同様、ブロードキャストと呼ばれる考えがあります。

 

例えば、ある列にそれぞれ +1 をする計算をするとき、行数分の 1 を用意して足し算をする必要があります。

Python pandas seaborn 計算

これでは、1 を足すたびに、行数分のデータを用意しなければいけませんが、これでは面倒です。

 

そのため、numpy や  pandas にはブロードキャストと呼ばれる機能があり、

 

下記のように行数分のデータを用意しなくても、対象データ全部に対して、足し算などの計算ができるようになっています。

Python pandas seaborn 計算

では実際に見ていきましょう。

 

まずは、もう一度 headメソッド で最初の5列のデータを確認しましょう。

 

In[]

 

Out[]

Python pandas seaborn 計算

 

四則演算

指定した、列やデータ範囲に対して、四則演算をすることができます。

 

各列に下記の計算をしてみましょう。

 

  • sepal_length+1
  • sepal_width-5
  • petal_length*3
  • petal_width/2

コードはこちらになります。

 

In[]

 

Out[]

Python pandas seaborn 計算

こちらのコードでも同じ意味です。

 

 

用途

この計算を何で使うんだろう?と思われた方もいるかもしれません。

機械学習などをする場合には、データを正規化標準化といったことをします。

先ほど紹介した「計算メソッド」の meanstd の値と、今回の四則演算を使って計算することがあります。

 

行や指定範囲に対して、計算したい場合はどうすれば良いのか見ていきましょう。

 

データの範囲の仕方は色々ありますが、今回は iloc を使用します。

In[]

 

1行目のデータを計算したいと思います。

 

列名の「species」は文字で計算できないので、1行目の4列目までを指定します。

 

In[]

 

Out[]

Python pandas seaborn 計算

ここで例えば、5を足してみましょう。

 

In[]

 

Out[]

Python pandas seaborn 計算

 

log(対数)

numpy のメソッドを使った計算もすることもできます。

 

sepal_width  の値を log で計算してみましょう。

 

In[]

 

Out[]

Python pandas seaborn 計算

log の計算が行われていますね。

 

用途

log はデータの分布に偏りがあるときに、正規分布に近い分布にしたいときに使用します。

 

絶対値

絶対値を計算します。

 

今回使用するデータは負の値のものはないので、-1 を掛け算したものを使いましょう。

 

In[]

 

Out[]

 

では、絶対値を計算しましょう。

 

numpy の abs メソッドを使います。

 

In[]

 

きちんと絶対値になっているのが確認できますよね。

 

用途

線形回帰のロス計算とかで絶対値誤差算出などで使用します。

 

平方根

numpy の sqrt メソッドを使って、平方根を計算します。

 

In[]

 

Out[]

Python pandas seaborn 計算

用途

ユークリッド距離の計算などで使います。

 

列同士で計算を行う方法

Python pandas seaborn 計算

次は列同士の値を使って計算をしてみましょう。

Python pandas seaborn 計算

用途

列同士を計算することで、新しい特徴量を作ることが出来ます。

sepal の lengthwidth を割って、sepal_ratio という列を作ってみましょう。

 

iris[‘列名’] = とすることで、新しい列が作られます。

 

In

 

Out[]

Python pandas seaborn 計算

pandasの算術メソッド

Python pandas seaborn 計算

pandasに用意されている、計算用のメソッドもあるので、紹介します。

 

メソッドには以下のものが用意されています。

 

メソッド計算
add足し算
sub引き算
div除算
mul乗算
mod剰余
powべき乗

 

上記メソッドの基本的な使い方はそれぞれ同じなので、div(除算) についてピックアップして説明していきます。

 

1つの数値のみを計算する方法

sepal_length の全部の行に対して、divを使って、10で割ります。

 

In[]

 

Out[]

Python pandas seaborn 計算

 

複数の値をまとめて計算する方法

sepallength を10で割って、width を5で割ってみます。

 

DataFrameで2列を指定して、divメソッドには  [10, 5] と2列分の数値を与えます。

 

In[]

 

Out[]

Python pandas seaborn 計算

列データを計算

divメソッドには列のデータを渡すこともできます。

 

「列同士の計算」で紹介したことと同じ計算を div メソッドを使ってやってみます。

 

sepal_length 列からdivメソッドを使って、引数に sepal_width の列のデータを与えます。

 

新しい値は、sepal_ratio として新しい列に入れます。

 

In[]

 

Out[]

Python pandas seaborn 計算

applyを使った計算方法

Python pandas seaborn 計算

applyメソッドを使うと、処理したい関数を作って、その関数で処理することができます。

 

公式の applyメソッド の案内は以下になります。

 

pandas.DataFrame.apply — pandas 1.1.0 documentation
pandas.DataFrame.apply — pandas 1.1.0 documentation

続きを見る

 

species の文字列の列を setosa:1versicolour:2virginica:3 としてみましょう。

 

In[]

 

Out[]

Python pandas seaborn 計算

 

func_sample(x)x には指定した範囲のデータ(今回は species 列のデータ)が順番に入ってきて、処理されます。

 

pandasでグループ化を行う方法

Python pandas seaborn 計算

pandas  は groupbyメソッド で、カテゴリごとにグループに分けて計算することができます。

 

最初の「計算メソッド」で各列の合計などを計算しました。

 

品種ごとで計算したい場合には、条件 species==’setosa’ と指定して、計算しても良いのですが、groupby で分ける方法も見ていきましょう。

 

groupby でグループ化する

irisデータを species でグループ化してみましょう。

 

In[]

 

DataFrame が DataFrameGroupBy となりました。

 

これを使って、計算していきます。

グループ化後の計算例

「計算メソッド」で説明した、メソッドと同じです。

 

mean で平均を見てみましょう。

 

In[]

 

Out[]

Python pandas seaborn 計算

上記の様な結果になりましたでしょうか。

 

簡単に、品種ごとの平均値が出す事が出来ましたね。

 

他にも、std など以下の「計算メソッド」で紹介したメソッドも試してみてください。

メソッド計算
sum合計
mean平均
median中央値
max最大値
min最小値
var分散
std標準偏差

 

また、pandas の使用方法については以下の記事にまとめています。一通りpandasの使い方を学習できた方は再度復習してみましょう。

関連記事
Python pandas 使い方
【Python】Pandasの使い方【基本から応用まで全て解説】

続きを見る

 

 

 

人気記事 【入門から上級レベルまで】人工知能・機械学習の独学におすすめの本25選

人気記事 無料あり:機械学習エンジニアの僕がおすすめするAI(機械学習)特化型プログラミングスクール3社


-python
-, , ,

Copyright© Tommy blog  , 2020 All Rights Reserved.