Как найти число по проценту в питоне

How do I increase or decrease an “X” number by a certain amount of percentage say, 2% or 3%?

Case scenario: My value is 5 – I want to increase this number by 2% – so the final value will be 5.1 after 2% percentage increase.

And the same would be if I want to decrease this number by an “X” percentage.

I hope that makes sense, thank you.

asked Feb 21, 2022 at 20:39

Cassano 's user avatar

2

To calculate a percentage in Python, use the division operator (/) to get the quotient from two numbers and then multiply this quotient by 100 using the multiplication operator (*) to get the percentage.

y=int(input("Enter Percentage: "))
x=5
x += (x * y/100)
print(x)

Output:

Enter Percentage: 2
5.1

For Decreasing Value:

y=int(input("Enter Percentage: "))
x=5
x -= (x * y/100)
print(x)

Output:

Enter Percentage: 2
4.9

answered Feb 21, 2022 at 20:48

M. Twarog's user avatar

M. TwarogM. Twarog

2,4083 gold badges20 silver badges39 bronze badges

A percent is just a fraction of 100, so multiply by 1 + your percent over 100:

>>> x = 5
>>> x *= (1 + 2/100)
>>> x
5.1

Another way to think of it is incrementing x by x times that percent (these operations are algebraically equivalent):

>>> x = 5
>>> x += (x * 2/100)
>>> x
5.1

answered Feb 21, 2022 at 20:41

Samwise's user avatar

SamwiseSamwise

66.6k3 gold badges27 silver badges42 bronze badges

If you want to increase by a percent, multiply the number by (1+{percent}). To decrease by a percent, multiply the number by (1-{percent}). Given your example:

  • Increase 5 by 2%: 5*(1+0.02)=5*1.02=5.1
  • Decrease 5 by 2%: 5*(1-0.02)=5*0.98=4.9.

answered Feb 21, 2022 at 20:45

Rich's user avatar

RichRich

11.9k9 gold badges61 silver badges92 bronze badges

Есть ли в стандартной библиотеке python метод вычисления процентов ?
Или в подключаемом модуле.

Нужно сделать такую функцию, чтобы с введенной юзером цифры отнималось 10%, и выдавалась конечная цифра без этих 10%.

Max's user avatar

Max

2,3126 золотых знаков20 серебряных знаков34 бронзовых знака

задан 25 авг 2013 в 10:17

ror's user avatar

3

Для начала выясните, что Вы хотите получить.

Пользователь вводит 100%, а Вы хотите увидеть 90%? Тогда это X/100*90 = X * 0.9

Пользователь вводит 110%, а Вы хотите увидеть 100%? Тогда это X/110*100

Если идти от того, что на калькуляторах происходит:

“438 – 10%” по факту означает “438 минус 10% от 438”

Будет так: 438 – (438 / 100 * 10) = 438 – 0.1 * 438 = 438 – 43.8 = 394.2

Nicolas Chabanovsky's user avatar

ответ дан 25 авг 2013 в 10:28

Softa's user avatar

SoftaSofta

5994 серебряных знака8 бронзовых знаков

1

x = float(input('Введите цифры : '))
y = 0.1
z = x - (x * y)
print(round(z,2))

Функцию ’round’, ее значения можете поменять для какой точности вам нужно.

insolor's user avatar

insolor

45.7k16 золотых знаков54 серебряных знака95 бронзовых знаков

ответ дан 9 авг 2021 в 16:59

Bogdan gusakov's user avatar

1

Автор оригинала: Andrea Ridolfi.

В этой статье рассматриваются расчет процентов. Проценты являются статистическими показателями, которые используются для описания специфических порций образца популяции. Следующие разделы объяснят, какие проценты являются, для чего они используются и как их рассчитать, используя Python. Как вы увидите, Python позволяет решить эту проблему несколькими способами, либо путем определения функции вручную или эксплуатации Numpy Отказ

Что такое проценты?

Проценты являются статистическими показателями, которые часто используются для определения определенной части образца населения. Точнее, мы используем процентиль, чтобы указать значение (рассматриваемое переменной) ниже, в котором конкретный процент выборочного населения падает. Например, если мы рассмотрим распределение высоты всех английских людей, живущих в Великобритании; говоря, что значение высоты 180 см Определяет 65 TH процентиль, это означает, что 65% всех английских людей, живущих в Великобритании, короче 180 см Отказ Как вы можете себе представить, процентиль обычно используются во многих статистических исследованиях, а также при отчетности о результатах опросов или измерений на большие группы населения.

Как рассчитать процентили?

Предположим, чтобы собрать высоту N люди; Чтобы оценить проценты, упомянутые к этому распределению, первый шаг – сортировать все значения в порядке возрастания. На данный момент предположим, что нас просят рассчитать 75 TH процентиль распределения; Мы рассчитаем так называемое ранг K/100 Отказ В этом случае k/100.75. Отказ Теперь мы должны умножить ранг для общего количества образцов в распределении (n, в этом случае 58); Отсюда мы получаем k x.75 x.5 Отказ Поскольку результат не является целым числом, мы приблизили значение ближайшего целого числа (44 в этом случае). Следующий шаг состоит в том, чтобы найти значение высоты, соответствующую на 44 TH положение в раздаче образца; Это значение соответствует 75 TH процентиль. В случае результата k x n это целое число, мы продолжаем дальше, непосредственно находя соответствующую стоимость в распределении образца; Это уже наш процентиль.

Теперь, когда мы знаем, какие проценты и как их можно рассчитать, мы увидим, как Python Делает эту задачу очень легко и быстро. В первой части мы решим проблему, определяя функцию, которая выполняет все шаги, показанные в предыдущем разделе, в то время как во второй части мы будем использовать Numpy Встроенная функция .percentile. () Отказ

Импорт соответствующих библиотек

Мы начинаем наш скрипт, импортируя библиотеки, которые будут использоваться на протяжении всего примера.

Нам нужно импортировать

  • Математика для того, чтобы быть в состоянии круглая плавающие числа до ближайшего целого числа,
  • Numpy Для функции .percentile. () , и
  • Матплотлиб Для окончательной части, в которой мы будем построить значения процентилей на распределение.
import numpy as np
import math
import matplotlib.pyplot as plt

Написание функции Python для расчета процентов

В этом первом разделе мы увидим, как создать функцию для расчета процентов. Целью этого раздела является чисто дидактикой, как вы увидите позже, Python Предлагает встроенные библиотеки, которые решают задачу автоматически. Тем не менее, всегда важно понимать, как проблема решена, и как работает определенная функция Python.

def my_percentile(data, percentile):
    n = len(data)
    p = n * percentile / 100
    if p.is_integer():
        return sorted(data)[int(p)]
    else:
        return sorted(data)[int(math.ceil(p)) - 1]

Мы начинаем, позвонив на нашу функцию my_percentile , он потребуется в качестве входных параметров. Распределение образца и процентиль, который мы хотим рассчитать. Как описано выше, первый шаг – оценить размер нашего распределения (N); Затем мы вычисляем продукт «P» размера выборки и ранга Отказ

На данный момент мы должны создавать экземпляр Если заявление , чтобы отделить дело, в котором k x n это целое число от случая, в котором нет. Мы используем Python Метод .is_integer () оценить ли P это целое число; Этот метод возвращает Правда в положительном случае.

Если p.is_integer () Возвращает Правда Мы должны искать P-TH Значения в нашем распределении (отсортировано в порядке возрастания). Чтобы сортировать распределение в порядке возрастания, мы использовали функцию отсортировано () и пропустите в качестве входного параметра самого распределения. Важно помнить, чтобы преобразовать P от поплавка (поскольку это происходит от математической операции, выполненной в предыдущей строке) к целому числу; В противном случае вы получите ошибку, в котором говорится, что значение индекса списка должно быть целым числом.

Мы заключаем, поднимая остальное заявление который охватывает случай, когда значение P не целое число; В этом случае, используя функцию .ceil. () (из Math Библиотека) , Мы приблизительно стоимость P до ближайшего более высокого целого числа.

Затем мы преобразуем это число на целое число и вычитайте 1, чтобы соответствовать индексации, используемую в списках. Следующие строки кода вы можете найти все шаги, объясненные до сих пор, в этом разделе.

Вычисление процентов с использованием нашей функции

Чтобы проверить, хорошо ли работает наша функция, мы сначала должны определить распределение значений; Для этого мы можем использовать Numpy функция .RANDOM.RANDN () , который рисует случайные значения из обычного распределения, нам просто нужно пройти в качестве входного параметра размером массива. Мы выбираем создание массива 10000 значений.

dist = np.random.randn(10000)

Давайте теперь попробуем рассчитать значения 5 TH С 25 TH , 50 TH 75 TH и 95 TH Проценты. Мы можем построить список, называемый « Perc_func », который содержит все эти проценты, оцениваемые через нашу функцию. Прежде чем делать это, мы определяем Список называется « index », который содержит значения процентов, которые нас интересуют. После этого мы эксплуатируем Понимание списка , чтобы вызвать функцию my_percentile () Для каждого процентиля, определенного в списке « index ».

index = [5, 25, 50, 75, 95]
perc_func = [my_percentile(dist, i) for i in index]

На данный момент список « Perc_func » должен содержать значения, соответствующие всем процентам, перечисленным в списке « index ».

Вычисление процентов с использованием Numpy.Percentle ()

Теперь, когда мы знаем, как рассчитать процентили распределения, мы также можем эксплуатировать Numpy Встроенная функция, чтобы сделать это быстрее и эффективно.

.percentile () Функция принимает в качестве входных параметров. Распределение образца и процентиль, который мы заинтересованы в. Это также позволяет нам решить, какой метод следует использовать в случае, если продукт n x k не целое число; Действительно, есть не просто один правильный способ сделать это, ранее мы решили приблизиться к ценности до ближайшего целого числа; Однако мы также могли бы выбрать приблизиться к этому максимум более высоким/нижним целым числом или принимать среднее значение между нижним и более высоким целееми целых чисел.

Все эти параметры могут быть выбраны, выбирая среди этих ключевых слов для опции « Интерполяция » [«Линейный», «ниже», «выше», «средняя точка», «ближайший»].

Вы можете найти полную документацию на Отказ процентиль () функция здесь Отказ

Различные варианты могут привести к слегка разным результатам, мы выбираем опцию « Ближайший », чтобы соответствовать методу, используемому в функции « my_percentile ». Аналогичным образом, к тому, что мы сделали в предыдущем разделе, мы создаем список под названием « Perc_numpy », в котором мы храним значения 5 господство 25 TH , 50 TH 75 TH и 95 TH Проценты, оцениваются с использованием Numpy Отказ Следующие строки кода описывают только что объясненные процедуры.

# Using numpy for calculating percentiles
perc_numpy = [np.percentile(dist, i, interpolation='nearest') for i in index]

Теперь мы можем распечатать два списка и проверять, являются ли полученные результаты равны.

print(perc_func)
print(perc_numpy)

Построение процентилей на распределении

В начале статьи мы определили, какие процентили представляют собой.

Поскольку статистические определения могут быть довольно сложными для понимания, мы можем отобразить наше распределение значений и посмотреть, где рассчитанные проценты расположены в распределении.

Сделать это, мы эксплуатируем Matplotlib. и функция .axaxvline. () , который позволяет построить вертикальные линии на участке. Мы размещаем функцию AXVLINE () в для петли Чтобы создать вертикальную линию для каждого процентиля, содержащегося в списке « perc_func ». Чтобы лучше выделить процентильные линии, мы используем красный цвет.

# Plotting 
plt.hist(dist, 50)
for i in range(len(index)):
    plt.axvline(perc_func[i], color='r')
plt.show()

Окончательный результат отображается в Рисунок 1 ; Как видите, 50 TH Процент расположен прямо в середине распределения, а 95 TH Процент – это последняя строка и соответствует значению, ниже которого мы можем найти 95% населения образца.

Рисунок 1: Представление нормального распределения, используемого в примере, с вертикальными красными линиями, соответствующими (слева направо) до 5 господство 25 TH , 50 TH 75 TH и 95 TH Проценты.

Выводы

В этой статье мы узнали о Проценты То, что они представляют, и как их можно использовать для описания части распределения образца. Из их статистического определения мы разработали функцию Python для расчета проценты распределения образца.

После этого мы исследовали Numpy Функция .percentile () который позволяет вычислять процентили распределения образца в супер-быстрой и эффективном способе.

Затем мы сравнили результаты двух методов и проверили, что они были идентичны.

В конце концов, мы также показали графически проценты, которые мы ранее рассчитали на распределение образца, чтобы лучше понять их фактическое значение.

  • Редакция Кодкампа

17 авг. 2022 г.
читать 1 мин


N -й процентиль набора данных — это значение, которое отсекает первые n процентов значений данных, когда все значения отсортированы от наименьшего к наибольшему.

Например, 90-й процентиль набора данных — это значение, которое отсекает нижние 90 % значений данных от верхних 10 % значений данных.

Мы можем быстро вычислить процентили в Python, используя функцию numpy.percentile() , которая использует следующий синтаксис:

numpy.percentile (а, д)

куда:

  • а: Массив значений
  • q: Процентили или последовательность процентилей для вычисления, которые должны быть в диапазоне от 0 до 100 включительно.

В этом руководстве объясняется, как использовать эту функцию для расчета процентилей в Python.

Как найти процентили массива

Следующий код иллюстрирует, как найти различные процентили для заданного массива в Python:

import numpy as np

#make this example reproducible
np.random.seed (0)

#create array of 100 random integers distributed between 0 and 500
data = np.random.randint (0, 500, 100)

#find the 37th percentile of the array
np.percentile (data, 37)

173.26

#Find the quartiles (25th, 50th, and 75th percentiles) of the array
np.percentile (data, [25, 50, 75])

array([116.5, 243.5, 371.5])

Как найти процентили столбца DataFrame

В следующем коде показано, как найти значение 95-го процентиля для одного столбца pandas DataFrame:

import numpy as np 
import pandas as pd

#create DataFrame
df = pd.DataFrame({'var1': [25, 12, 15, 14, 19, 23, 25, 29, 33, 35],
 'var2': [5, 7, 7, 9, 12, 9, 9, 4, 14, 15],
 'var3': [11, 8, 10, 6, 6, 5, 9, 12, 13, 16]})

#find 90th percentile of var1 column
np.percentile (df.var1 , 95)

34.1

Как найти процентили нескольких столбцов DataFrame

В следующем коде показано, как найти значение 95-го процентиля для нескольких столбцов в кадре данных pandas:

import numpy as np 
import pandas as pd

#create DataFrame
df = pd.DataFrame({'var1': [25, 12, 15, 14, 19, 23, 25, 29, 33, 35],
 'var2': [5, 7, 7, 9, 12, 9, 9, 4, 14, 15],
 'var3': [11, 8, 10, 6, 6, 5, 9, 12, 13, 16]})

#find 95th percentile of each column
df.quantile (.95)

var1 34.10
var2 14.55
var3 14.65

#find 95th percentile of just columns var1 and var2
df[['var1', 'var2']]. quantile (.95)

var1 34.10
var2 14.55

Обратите внимание, что мы смогли использовать функцию pandas quantile() в приведенных выше примерах для вычисления процентилей.

Связанный: Как рассчитать процентили в R (с примерами)

In Python, the % sign is commonly used in three cases:

  1. Modulo calculation. For example, 5 % 3 returns 2.
  2. Old-school string formatting. For example, "I am %d years old" % 25 returns "I am 25 years old".
  3. “Magic” commands in IPython shell. For example, In [2]: %recall executes the previous command.

1. Modulo in Python

The most commonly known use case for % in Python is the modulo operator.

The modulo operator calculates the remainder of a division between two integers.

For example, dividing 10 to 3 evenly is impossible. There will be one leftover. To verify this using Python, write:

leftovers = 10 % 3
print(leftovers)

Output:

1

This can represent for example how many slices of pizza are left over when 10 slices are shared with 3 eaters.

Practical Modulo Example: Leap Years

Definition. A leap year is a year that is evenly divisible by 4 or 400. The exception is that years divisible by 100 are not leap years (unless they are divisible by 400). For example, 2016, 2000, 1600 are leap years but 2011 and 1900 are not.

Task. Write a program that checks if a given year is a leap year.

Answer. To solve this problem, you need to figure out if a given year is divisible by 4 but not by 100 unless it’s divisible by 400.

To turn this into code, you get this kind of result:

def is_leap(year):
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)

Example usage:

print(is_leap(2000))  # --> True
print(is_leap(1900))  # --> False
print(is_leap(2016))  # --> True

If this answer rings no bells, here is a complete guide on how to figure out leap years in Python.

2. Old-school String Formatting with % Operator

In earlier days, Python string formatting was possible using the % operator followed by a type identifier.

For instance, let’s add a string into another string using %s:

>>> name = "Alice"
>>> "Hello %s" % name
'Hello Alice'

This is positional formatting. It works such that you specify a place for a variable in a string using the % operator. Immediately after that, you specify the type of variable you want to insert.

In the above example, you embed a string into another string with the format specifier %s.

  • The percentage sign means a variable will be inserted in that position.
  • The character ‘s’ shows the type of the inserted variable is string.

In addition to embedding strings into strings, you can embed other types too. To do this, you need to use different format specifiers.

For example, to embed a number into a string, use the %d format specifier:

>>> age = 20
>>> "I am %d years old." % age
'I am 20 years old.'

Or if you want to convert an integer to a string that represents a hexadecimal number, you can use the %x format specifier:

>>> age = 1000
>>> "I am 0x%x years old." % age
'I am 0x3e8 years old.'

However, this formatting style is yesterday’s news.

  • In Python 2.6 and later, you can use .format() method to format strings.
  • As of Python 3.6, you can use formatted strings (F-strings) to format strings in a more elegant way.

An example of the string.format() method in Python 2.6+:

>>> age = 30
>>> "I am {} years old".format(age)
I am 30 years old

A formatted string example in Python 3.6+:

>>> age = 30
>>> f"I am {age} years old"
I am 30 years old

3. Magic Commands in IPython Shell

Magic commands are command-line-like commands that are available in the IPython shell.

But What Is an IPython Shell?

If you are using Jupyter Notebook you definitely know what an IPython shell is.

If you do not know what an IPython shell is, it is an interactive Python shell. It has rich features such as syntax highlighting or code completion. IPython Notebooks (these days Jupyter Notebook) is a popular web-based interactive computational environment. In this environment, you can create, run, visualize and document the code all in the same interactive shell.

Magic Commands in IPython Shell

If you are using Jupyter Notebook, you have to know about magic commands.

For example, you can get the present working directory in the IPython shell using %pwd magic command:

In [1]: %pwd
Out[1]: 'C:\User\Artturi'

This works the same way as the pwd command works in a command-line window.

In IPython, there are two types of magic commands:

  1. Line magics.
  2. Cell magics.

1. Line Magics in IPython

Line magic commands are similar to command-line commands. They start with a singular % character followed by the command without arguments or parenthesis.

These line magics can be used as expressions. Their result can be stored into a Python variable.

2. Cell Magics in IPython

Cell magics operate on multiple lines below the call as opposed to line magics. To call a cell magic command, use a two % operators, %%, followed by the command name.

A cell magic command can make modifications to the input. This input does not even have to be valid in Python. The whole block is received as a string by the cell magic command.

Available Magic Commands in IPython

To get a list of all the available line magics and cell magics, use the %lsmagic command.

For example:

In [1]: %lsmagic
Out[1]: 
Available line magics:
%alias  %alias_magic  %autoawait  %autocall  %autoindent  %automagic  %bookmark
  %cat  %cd  %clear  %colors  %conda  %config  %cp  %cpaste  %debug  %dhist  %d
irs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %l
dir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstar
t  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  
%mkdir  %more  %mv  %notebook  %page  %paste  %pastebin  %pdb  %pdef  %pdoc  %p
file  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psou
rce  %pushd  %pwd  %pycat  %pylab  %quickref  %recall  %rehashx  %reload_ext  %
rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env 
 %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_l
s  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %
%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python
3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile
Automagic is ON, % prefix IS NOT needed for line magics.

How to Use Magic Commands

Listing out all the possible magic commands is useful. But even more useful is knowing how to actually use them. Luckily, you do not need to start googling the magic commands up. Instead, you can use a built-in magic command to get help with any magic commands in IPython:

  • To get help on any line magic command, run %commandname?
  • To get help with a cell magic command, run %%commandname?

For example, let’s see what the line magic %autocall does:

In [11]: %autocall?
Docstring:
Make functions callable without having to type parentheses.
Usage:
   %autocall [mode]
The mode can be one of: 0->Off, 1->Smart, 2->Full.  If not given, the
value is toggled on and off (remembering the previous state).
In more detail, these values mean:
0 -> fully disabled
1 -> active, but do not apply if there are no arguments on the line.
In this mode, you get::
  In [1]: callable
  Out[1]: <built-in function callable>
  In [2]: callable 'hello'
  ------> callable('hello')
  Out[2]: False
2 -> Active always.  Even if no arguments are present, the callable
object is called::
  In [2]: float
  ------> float()
  Out[2]: 0.0
Note that even with autocall off, you can still use '/' at the start of
a line to treat the first argument on the command line as a function
and add parentheses to it::
  In [8]: /str 43
  ------> str(43)
  Out[8]: '43'
# all-random (note for auto-testing)
File:      /usr/local/lib/python3.9/site-packages/IPython/core/magics/auto.py

Or let’s take a look at what the cell magic command %%ruby does:

In [1]: %%ruby?
    ...: 
    ...: 
Docstring:
%%ruby script magic
Run cells with ruby in a subprocess.
This is a shortcut for `%%script ruby`
File:      /usr/local/lib/python3.9/site-packages/IPython/core/magics/script.py

Conclusion

The percentage operator % is used in three ways in Python:

  1. Calculating modulos.
  2. Old-school string formatting.
  3. Magic commands in IPython shell.

Thanks for reading.

Happy coding!

Further Reading

10 Jupyter Notebook Tricks

50 Python Interview Questions

Resources

https://docs.python.org/3/

About the Author

I’m an entrepreneur and a blogger from Finland. My goal is to make coding and tech easier for you with comprehensive guides and reviews.

Recent Posts

Добавить комментарий