本記事ではpythonで絶対値を求める方法を紹介します。
組み込み関数abs()がおすすめです。難しい前準備が必要なく、すぐに使うことができるからです。
pythonで絶対値を計算する方法6つ
pyhtonで絶対値を計算する方法はいくつかあります。本記事ではその中から6つ紹介します。
- 関数を使わず絶対値を求める
- 組み込み関数で絶対値を求める|abs()
- 少数点型で絶対値を求める|math.fabs()
- 記号を含む式の絶対値を求める|sympy.Abs()
- リストの絶対値を求める|numpy.abs()
- データフレームの絶対値を求める|pandas.DataFrame.abs()
それぞれ順番に具体的なコードも書きながら紹介します。
本記事のコードは全てグーグルコラボラトリーで記述・動作を確認しています。
グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。
データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!
関数を使わず絶対値を求める
絶対値とは0からの距離を表す値です。 そのため、結果は必ず正の値となります。
入力した値が、
- 0より大きい場合、入力した値を返す。
- 0より小さい場合、-1をかけた値を返す。
という処理をすると絶対値を求められそうです。
ではこの処理をabs_val()という関数に提起して、if文で書いてみます。
def abs_val(n):
if n < 0:
n = n * -1
return n
abs_val()がきちんと動くか確認してみましょう。
print(abs_val(2))
print(abs_val(4-5))
出力:
2
1
問題なく動きました。
組み込み関数で絶対値を求める|abs()
abs()はpythonに組み込まれている関数です。
ライブラリをインストールなどの前準備が必要なく使用可能です。
計算式を入力しても処理可能です。 整数を入力すると整数で、小数を入力すると少数で返します。
print(abs(2))
print(abs(-4))
print(abs(4-5))
print("abs(4-5)のデータタイプは", type(abs(4-5)), "です")
print(abs(-3.0))
print("abs(-3.0)データタイプは", type(abs(-3.0)), "です")
出力:
2
4
1
abs(4-5)のデータタイプは <class ‘int’> です
3.0 abs(-3.0)
データタイプは <class ‘float’> です
abs()はすぐ使うことができるので、さっと絶対値を計算したい時におすすめです。
少数点型で絶対値を求める|math.fabs()
mathはpython標準モジュールで数学関数を扱うことができます。
math.fabsは絶対値を必ず小数点型(float)で返します。 ここがabs()と違う点です。
はじめにmathをインポートする必要があります。
import math
print(math.fabs(2))
print(math.fabs(-4))
print(math.fabs(4-5))
print("math.fabs(4-5)のデータタイプは", type(math.fabs(4-5)), "です")
print(math.fabs(-3.0))
print("math.fabs(-3.0)データタイプは", type(math.fabs(-3.0)), "です")
出力:
2.0
4.0
1.0
math.fabs(4-5)のデータタイプは <class ‘float’> です
3.0
math.fabs(-3.0)データタイプは <class ‘float’> です
記号を含む式の絶対値を求める|sympy.Abs()
sympyはxやyなどの記号を含む計算をしたい際に有効なライブラリです。
sympy.Abs()は記号を含む式の絶対値を求めることができます。
事前に開発環境へsimpyをインストールすること、sympyをインポートすることで使用可能です。
googlecolaboratoryを使えばインストールを省略できます。
記号を含む絶対値の計算は次の手順でおこないます。
- 記号を定義する
- 計算式を用意する
- 絶対値を計算する
sympy.Abs()はAが大文字ですので間違えないよう注意してくださいね。
import sympy
# 1. 記号を定義する
x = sympy.Symbol('x', real=True)
# 2. 計算式を用意する
# |x-3| = 2x -> |x-3| - 2x = 0の形で入力
y = sympy.Abs(x - 3) - 2*x
# 3. 絶対値を計算する
print(sympy.solve(y, x))
出力:
[1]
リストの絶対値を求める|numpy.abs()
numpy.abs()は配列の絶対値を計算する関数です。
abs()やmath.fabs()はリストの絶対値を求められません。
しかし、numpy.abs()を使用するとリストの絶対値を計算可能です。
numpyライブラリを使用するには、次の準備が必要です。
- 開発環境にnumpyをインストールする。
- numpyをインポートする。
グーグルコラボラトリーを使用している場合、1は必要ありません。
インポートの際、npと省略することが多いです。
import numpy as np
print(np.abs([10, -1.5]))
print(np.abs([10+2j, -1.5+1j]))
出力:
[10. 1.5]
[10.19803903 1.80277564]
numpy.abs()はnumpy.absoluteの短縮系です。
numpy公式ではnumpy.absoluteで説明されています。
また、2次元以上の配列ではエラーになるので注意が必要です。
2次元以上の配列の絶対値はpandas.abs()で求めることができます。
numpy.fabs()
numpy.fabs()はリストの絶対値を小数点型で返します。
import numpy as np
print(np.fabs([10, -1.5]))
出力:
[10. 1.5]
numpy.fabs()では複素数の計算ができないので注意してください。
データフレームの絶対値を求める|pandas.DataFrame.abs()
pandasはデータ解析を簡単にするライブラリです。
最大となるデータを探したり、指定した項目に沿ってデータを並び替えることも可能です。
pandas.DataFrame.abs()では、データフレームの絶対値を求めることができます。
pandasは外部ライブラリのため、開発環境へのインストールと事前のインポートが必要です。
グーグルコラボラトリーではインポートするだけで使うことができます。
一般的にpandasをpdと略してインポートします。
はじめにデータフレームを用意します。
import pandas as pd
df = pd.DataFrame({
'a': [4, 5, 6, 7],
'b': [10, 20, 30, 40],
'c': [100, 50, -30, -50]})
df.head()
出力:
index | a | b | c |
---|---|---|---|
0 | 4 | 10 | 100 |
1 | 5 | 20 | 50 |
2 | 6 | 30 | -30 |
3 | 7 | 40 | -50 |
用意したデータフレームの絶対値を求めましょう。
これまでは()の中に数字や式などを入力していましたが、pandasの場合、データフレーム.abs()と書き方が違う点に注意してください。
df.abs()
出力:
index | a | b | c |
---|---|---|---|
0 | 4 | 10 | 100 |
1 | 5 | 20 | 50 |
2 | 6 | 30 | 30 |
3 | 7 | 40 | 50 |
絶対値を求めるカラムを指定することもできます。今回はスライスという方法で指定します。
スライスはdf[‘カラム名’]で使用可能です。
df["c"].abs()
出力:
0 100
1 50
2 30
3 50
Name: c, dtype: int64
まとめ
今回はpythonで絶対値を求める方法を6つ紹介しました。
それぞれ特徴がありますが、簡単に使えるという点で組み込み関数 abs()をオススメします。
よくある質問
- abs()関数を使用しないで絶対値を計算したいです。
-
if文を使うことで、abs()関数を使わなくても絶対値を計算することができます。
- pythonの絶対値を使うと、どのようなことができますか?
-
データのばらつきを調べるために絶対値が活躍します。
平均偏差はデータのばらつきを求める計算式で、式は次の通りです。
平均値から各データの差の絶対値の平均(=絶対値を付けた偏差の平均)
- pythonについてもっと勉強したいです!
-
pythonを勉強するには書籍・動画・プログラミングスクールなどがあります。特にUdemyは有料ですが、pythonを勉強できる動画がたくさんあるのでおすすめです。
合わせて読みたい
コメント