pythonで絶対値を計算する6つの方法|numpyやpandasの方法も紹介

pythonで絶対値を計算する6つの方法

本記事ではpythonで絶対値を求める方法を紹介します。

組み込み関数abs()がおすすめです。難しい前準備が必要なく、すぐに使うことができるからです。

目次

pythonで絶対値を計算する方法6つ

pyhtonで絶対値を計算する方法はいくつかあります。本記事ではその中から6つ紹介します。

  • 関数を使わず絶対値を求める
  • 組み込み関数で絶対値を求める|abs()
  • 少数点型で絶対値を求める|math.fabs()
  • 記号を含む式の絶対値を求める|sympy.Abs()
  • リストの絶対値を求める|numpy.abs()
  • データフレームの絶対値を求める|pandas.DataFrame.abs()

それぞれ順番に具体的なコードも書きながら紹介します。

本記事のコードは全てグーグルコラボラトリーで記述・動作を確認しています。

グーグルコラボラトリーとはgoogleアカウントを持っている人であれば、誰でも・無料で使うことができるpythonの対話型実行環境です。

データ分析に必要なライブラリが初めから搭載されていて、環境構築の必要がないため、python初心者には特にオススメです!

関数を使わず絶対値を求める

絶対値とは0からの距離を表す値です。 そのため、結果は必ず正の値となります。

入力した値が、

  1. 0より大きい場合、入力した値を返す。
  2. 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を使えばインストールを省略できます。

記号を含む絶対値の計算は次の手順でおこないます。

  1. 記号を定義する
  2. 計算式を用意する
  3. 絶対値を計算する

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ライブラリを使用するには、次の準備が必要です。

  1. 開発環境にnumpyをインストールする。
  2. 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()

出力:

indexabc
0410100
152050
2630-30
3740-50
df

用意したデータフレームの絶対値を求めましょう。

これまでは()の中に数字や式などを入力していましたが、pandasの場合、データフレーム.abs()と書き方が違う点に注意してください。

df.abs()

出力:

indexabc
0410100
152050
263030
374050
df.abs()

絶対値を求めるカラムを指定することもできます。今回はスライスという方法で指定します。

スライスは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を勉強できる動画がたくさんあるのでおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次