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