Size: a a a

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

2020 November 30

АМ

Алексей Макаров... in Python для анализа данных
Pavel Zheltouhov
А method chaining экономит память и работает как бы внутри генератора, если я использую cross join, который слишком много лишних элементов продуцирует?
А можешь пример кода скинуть? Не очень пойму

По идее, method chaining снижает потребление памяти только за счёт того, что не нужно записывать в память кучу промежуточных датафреймов
источник

PZ

Pavel Zheltouhov in Python для анализа данных
Алексей Макаров
А можешь пример кода скинуть? Не очень пойму

По идее, method chaining снижает потребление памяти только за счёт того, что не нужно записывать в память кучу промежуточных датафреймов
нагуглил странный, но прикольный прием для имитации cross join :
df1['key'] = 0
df2['key'] = 0

df_cartesian = df1.merge(df2, how='outer')
источник

s

ssv in Python для анализа данных
Про mth chaining - да, можно пример? Нипонятно
источник

s

ssv in Python для анализа данных
Я его понимаю так, что ссылка передается по методам и модифицируется один и тот-же объект.
источник

АМ

Алексей Макаров... in Python для анализа данных
Pavel Zheltouhov
нагуглил странный, но прикольный прием для имитации cross join :
df1['key'] = 0
df2['key'] = 0

df_cartesian = df1.merge(df2, how='outer')
Ееее, повесить машину кодом на pandas — бесценно
источник

PZ

Pavel Zheltouhov in Python для анализа данных
Алексей Макаров
Ееее, повесить машину кодом на pandas — бесценно
Ну ведь он же нужен бывает.
я как-нибудь на днях потестю.
источник

АМ

Алексей Макаров... in Python для анализа данных
ssv
Я его понимаю так, что ссылка передается по методам и модифицируется один и тот-же объект.
Ну да. Как следствие не плодятся лишние объекты
источник

PZ

Pavel Zheltouhov in Python для анализа данных
таким образом это не просто стилистическая вещь, а в случае с cross join, совершенно необходимая
источник

АМ

Алексей Макаров... in Python для анализа данных
Pavel Zheltouhov
таким образом это не просто стилистическая вещь, а в случае с cross join, совершенно необходимая
Всё равно не пойму как method chaining помогает при cross join. Он же не ускоряет его

Напиши пример :)
источник

PZ

Pavel Zheltouhov in Python для анализа данных
Алексей Макаров
Всё равно не пойму как method chaining помогает при cross join. Он же не ускоряет его

Напиши пример :)
Я полагаю в памяти  отфильтрует лишнее. Или нет? Щас не за компом
источник

KM

Konstantin Mohov in Python для анализа данных
Думаю, важно указать, что все датафреймы, с которыми работаешь, хранятся в памяти. То есть если изменяешь не 1 датафрейм, а последовательно df1, df2, ... dfn то памяти столько и будет расходоваться.
НО, если изменять 1 и тот же, то откатиться будет сложнее. В общем, думать в любой непонятной ситуации))
Сделать-показать пример сохранения не промежуточных датафреймов, а фильтров, и потом их применение
источник

s

ssv in Python для анализа данных
Алексей Макаров
Ееее, повесить машину кодом на pandas — бесценно
Как 2 пальца - сожрать всю память и своп забить.
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Привет, скажите, пожалуйста, можно ли сделать более оптимально:
в df в строке после номера удалить все значения
def days_split (a):
   return a.split()

def days_splitss (a):
   for i in range(len(a)):
       if a[i].isnumeric() == True:
           ww = i
           
   return a[:ww]

def ttt(i):
   if i == []:
       return ['другое']
   else:
       return i

sss = df['Кредитный продукт'].apply(days_split)
ssss = sss.apply(days_splitss)
ssss = ssss.apply(ttt)
ssss = ssss.str.join(" ")

Например, с "ПЕРВЫЙ  15 дней" оставить только "ПЕРВЫЙ"
источник

AS

Alex Savva in Python для анализа данных
Владислав Литвинюк
Привет, скажите, пожалуйста, можно ли сделать более оптимально:
в df в строке после номера удалить все значения
def days_split (a):
   return a.split()

def days_splitss (a):
   for i in range(len(a)):
       if a[i].isnumeric() == True:
           ww = i
           
   return a[:ww]

def ttt(i):
   if i == []:
       return ['другое']
   else:
       return i

sss = df['Кредитный продукт'].apply(days_split)
ssss = sss.apply(days_splitss)
ssss = ssss.apply(ttt)
ssss = ssss.str.join(" ")

Например, с "ПЕРВЫЙ  15 дней" оставить только "ПЕРВЫЙ"
if a[i]. isnumeric() == True избыточное, достаточно просто if a[i]. isnumeric()
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
логично
источник

AS

Alex Savva in Python для анализа данных
В одной строке удаляет?
источник

AS

Alex Savva in Python для анализа данных
*удаляете
источник

AS

Alex Savva in Python для анализа данных
Или по всему столбу?
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Alex Savva
Или по всему столбу?
в каждой строке по столбцу df['Кредитный продукт']
источник

AS

Alex Savva in Python для анализа данных
"в df в строке после номера удалить все значения" и "с "ПЕРВЫЙ  15 дней" оставить только "ПЕРВЫЙ" не совсем понятное условие..
источник