Categories: Python

【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 とかだと分かりやすい。

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

5か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago