Size: a a a

Python для анализа данных

2021 August 03

D

Dmitry in Python для анализа данных
Привет. В пандасе нужно разделить один столбец на другой, но в делителе нулевое значение? Я не могу нагуглитьт как поступить, можете подсказать, куда копать?
источник

AD

Alexander Dergilev in Python для анализа данных
except ZeroDivisionError?
источник

EZ

Egor Zhulanov in Python для анализа данных
напиши условие, если делитель 0, пропускать значение
источник

3

3ldar in Python для анализа данных
источник

h

helby in Python для анализа данных
np.where(col1 != 0, col2/col1, 0)
источник

h

helby in Python для анализа данных
Это будет в разы быстрее чем if else
источник

VM

Valerii Mamontov in Python для анализа данных
Привет. Округлить число можно через "f-string". Например, так:


var = 3.141592653589793

print(f"{var:.1f}")

# 3.1
источник

AD

Andrew Dakhnovsky in Python для анализа данных
это форматирование при выводе
округление это несколько не то...
источник

VM

Valerii Mamontov in Python для анализа данных
можно, только нужно использовать ламбда-функцию:

import pandas as pd

some_data = {x: [x + 2.718, (x + 3) / x] for x in range(1, 5)}
df = pd.DataFrame(data=some_data)
df[5] = df[2].apply(lambda x: f"{x:.1f}")
display(df)

# out:
# 1  2  3  4  5
# 0  3.718  4.718  5.718  6.718  4.7
# 1  4.000  2.500  2.000  1.750  2.5
источник

AD

Andrew Dakhnovsky in Python для анализа данных
а можно подобный эксперимент только чтобы не  2.718, а, скажем,   2.781  ?

повторяю,то что ты делаешь - это просто обрезание до одного символа после запятой
если у тебя там будет -0,08 то оно его и обрежет в чудесный "-0.0"
причем строчный
округление работает иначе
причем существуют разные функции
раундж, флор и т.д.
источник

ИС

Илья Смирнов... in Python для анализа данных
Всем привет, как удалить папку на гитхабе и переименовать?
источник

VM

Valerii Mamontov in Python для анализа данных
import pandas as pd

some_data = {x: [x + 2.78578, (x - 12.2) / x] for x in range(2, 5)}
df = pd.DataFrame(data=some_data)
df['round3'] = df[3].apply(lambda x: f"{x:.1f}")
df['round4'] = df[4].apply(lambda x: f"{x:.1f}")
display(df)

# Out:

# 2  3  4  round3  round4
# 0  4.78578  5.785780  6.78578  5.8  6.8
# 1  -5.10000  -3.066667  -2.05000  -3.1  -2.0
источник

VM

Valerii Mamontov in Python для анализа данных
Если честно. то я сам в шоке, т.к. только сегодня прочитал про возможность f-строк делать округления.
источник

AD

Andrew Dakhnovsky in Python для анализа данных
хм
признаю, был неправ
источник

AD

Andrew Dakhnovsky in Python для анализа данных
а панда неявно приводит стринг к числу?
а то непонятно, оно ж  стринг на выходе?
источник
2021 August 04

AK

Aleksei Komissarov in Python для анализа данных
Почему неявно? Явно же. Вы внутри кавычек проводите операции. На выходе всегда будет строка.
источник

VM

Valerii Mamontov in Python для анализа данных
F-string возвращает строку и в итоге вся колонка будет иметь тип string.
Чтобы преобразовать к float нужно поправить код внутри apply - df[4].apply(lambda x: float(f"{x:.1f}")).
Это избыточно, думаю, лучше использовать round.
источник

VM

Valerii Mamontov in Python для анализа данных
Преобразование (округление) в данном случае выполняет не панда, а пайтон. Оно происходит внутри f-строк.
источник

С

Сергей in Python для анализа данных
round округляет по банковскому методу, для математического надо к числу прибавлять 0.5*0.1^(точность округления),а потом round
источник

R

Rustam in Python для анализа данных
Да точность важней, по этому float и round уверенней будет. Спасибо за отклики. Познавательно.
источник