どうも!僕です!
つか〇です!
pandasのデータ構造「Series」の基本的な操作について紹介します.
多くのことが,今後紹介する「DataFrame」にも通用するので,しっかり基礎を押さえていきましょう!
比較演算子によるフィルタリング,掛け算等,数学的関数の適用
pandasは,NumPyと同様にループを使わずに各要素ごとに計算を行うことができます.
NumPyについては,「NumPyの基礎① ~NumPyとは?NumPyの構造,扱いを知ろう!!編~」で紹介しています.
一方で,pandasでは,ラベル付けしたインデックスとデータの値との関係は保持されます.
以下の例で見ていきましょう.
比較演算子による参照
まず,下記のようにpandasとpandasのSeriesをインポートして,Series構造を持つ配列を作成します.
数値は適当に変えちゃってOKです!
import pandas as pd
from pandas import Series
obj2 = pd.Series([6, -9, 2, 1, 5], index=["b", "e", "a", "d", "c"])
obj2
b 6
e -9
a 2
d 1
c 5
dtype: int64
この,Series構造のデータに関して,3より大きい値を持つ行を取得してみましょう!
obj2[obj2 > 3]
出力は以下のようになります.
b 6
c 5
dtype: int64
3より大きいデータを持つ行だけ取得できましたね.
このとき,インデックスラベルとデータの関係は保持されたままとなっていることもわかります.
スカラー値との計算
それでは,スカラー値との掛け算も見ていきましょう.
3を掛けましょう!
みんなでアホになりましょう.
はい.
では,やりましょう.
obj2 * 3
b 18
e -27
a 6
d 3
c 15
dtype: int64
すべてに3がかかりましたね.
すべてアホになれましたね.最高です!
ちなみに3150(最高)も3の倍数ですね!
数学的関数の適用
続いて,数学で用いられる関数を適用してみましょう!
今回は,exp()メソッドを使ってみましょう.
expは,「exponential」で,数学で使う指数関数ですね.
「eの〇乗」とかいうやつです.
では,やってみましょう.
import numpy as np
np.exp(obj2)
b 403.428793
e 0.000123
a 7.389056
d 2.718282
c 148.413159
dtype: float64
合っているかどうかを確かめるのは面倒ですが,webで計算ツールを探して確認してみてください.
CASIOさんのサイトから確認できます.
https://keisan.casio.jp/exec/system/1260353091
で,先ほどのコードを見てもらうと,NumPyでの処理を行ってます.
NumPyの関数や,NumPy風の操作を行った場合でも,pandasでは,データとインデックスの関係が保持されます.
今回は,exp()で行いましたが,ほかにもいろいろあるので,自分で探して適用してみましょう!
まとめ
pandasでの演算操作について軽く触れてみました.
上記のように直感的に計算を行えるのがいいところです.
やっぱ,for文でループ処理を書かなくていいってのは楽ですね!
pandasの詳しい内容については,「Pythonによるデータ分析入門」がお勧めです.
データ分析での使い方をわかりやすく解説しています.
独学だけではこぼしてしまう内容も結構載っているので,お勧めです.
一緒にpandasをマスターして,データ分析を武器に世界を変えていきましょう!!
コメント