この記事では、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 とかだと分かりやすい。


