Python PR

【Python】割合(比率)を求める方法

記事内に商品プロモーションを含む場合があります

この記事では、Pythonで 割合を求める方法を解説します。

割合を求める

割合とは ベース値(X) に対して その値(Y) はどれくらいの大きさなのか を求めます。

割合は以下の計算式で求めることができます。

割合 = 比べられる値(Y)ベース値(X)

Python でも以下のように簡単に求めることができます。

x = 4
y = 1

print(y / x)

実行結果

0.25

ベース値(X) に対して何倍なのか を小数で得ることができました。得た結果をベース値に掛けることで比べた値を得ることができます。

x = 4
y = 1

rato = y / x
print(x * rato)

実行結果

1.0

百分率

小数では分かりにくい場合、百分率で表現することで分かりやすくすることができます。小数を百分率に直すには 100 をかければ良いだけです。

x = 4
y = 1

rato = y / x
print(f'{y} は {x} の {rato * 100}% です')

実行結果

1 は 4 の 25.0% です

分数

fractionsモジュール の Fractionクラス を使うことで分数を表現することもできます。

from fractions import Fraction

x = 4
y = 1

yx = Fraction(y, x)
print(yx)

実行結果

1/4

小数から初期化することもできます。その場合、Decimal を使うか limit_denominator()メソッド を使う必要がある。

from fractions import Fraction
from decimal import Decimal

print(Fraction(Decimal('0.1')))
print(Fraction(Decimal('0.2')))
print(Fraction(0.3).limit_denominator())
print(Fraction(0.4).limit_denominator())

実行結果

1/10
1/5
3/10
2/5

生成した分数を使って演算することもできます。

fraction = Fraction(1, 4)

print(2 * fraction)
print(3 * fraction)
print(4 * fraction)
print(5 * fraction)

実行結果

1/2
3/4
1
5/4

Linkfractions --- 有理数 — Python ドキュメント

比率を求める

比率とは、ある数値と他の数値との関係を示す割合です。

例えば、A が 1個、B が 2個 あったとしたら、その比率は 1 : 2 と表現することができる。ならば、24 : 60 の場合はどうだろうか?

数が大きいので若干イメージが湧きづらい。

そんな時は、最大公約数でそれぞれの値を割れば良い。24 と 60 の最大公約数は 12 なので それぞれの値を 12 で割ると

24 : 60 = 2 : 5

となる。

これを Python で実装すると以下のようなコードになる。

import math

# 整数のリスト
nums = [24, 60]

# 最大公約数
gcd = math.gcd(*nums)

# リスト内包表記を使ってそれぞれの要素を最大公約数で割る
rato = [int(i / gcd) for i in nums]
print(rato)

実行結果

[2, 5]

この比率に同じ値をかけることで 2 : 5 の値を生成することができる。

print([i * 141 for i in rato])

実行結果

[282, 705]

百分率で表現したい場合は、比率を比率の合計値で割ったものに 100 かけることで得られる。

import math

# 比率
rato = [2, 5]

# 比率の合計値
sum_rato = sum(rato)

# 比率を合計値で割ったものに 100 をかける
print([i / sum_rato * 100 for i in rato])

実行結果

[28.57142857142857, 71.42857142857143]

割りけれなかったのでイマイチだが、1 : 3 とかだと分かりやすい。