Size: a a a

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

2021 January 25

A

Alexander in Python для анализа данных
хорошо, попробую. спасибо
источник

A

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

KM

Konstantin Mohov in Python для анализа данных
Konstantin Mohov
`#> python3 -m venv env
#> source env/bin/activate
#> pip3 install GDAL `
только тут активация соурса для юникса
источник

KM

Konstantin Mohov in Python для анализа данных
Alexander
удалю все зависимости пока, потом через чистую установку сделаю
👍
источник

A

Alexander in Python для анализа данных
Получилось. Обратил внимание, что фиона удаляет последнюю версию gdal 3.2.1 и пытается установить 3.1.4, хотя они обе для питона 3.8. Короче накатил гдал 3.1.4 .whl и потом установилась уже fiona
источник

KM

Konstantin Mohov in Python для анализа данных
Ура!!!
источник

AZ

Arsenii Zed in Python для анализа данных
Alexander
Получилось. Обратил внимание, что фиона удаляет последнюю версию gdal 3.2.1 и пытается установить 3.1.4, хотя они обе для питона 3.8. Короче накатил гдал 3.1.4 .whl и потом установилась уже fiona
Поздравляем!)
источник

T

Tishka17 in Python для анализа данных
Всем привет. Может тут кто юзает Luigi.

Подскажите, я хочу сделать пайплайн который можно будет гонять как в k8s, так и в других окружениях (в зависимости от способа деплоя). Как это лучше сделать? у меня ощущение, что я собираю велосипед
источник
2021 January 27

SP

Sergei Perminov in Python для анализа данных
Вопрос на миллион)

Есть ли такая функция, которая бы автоматом в hadoop прошлась по файлам и там где файл разбит на мелкие части сделала repartition ?

Ну или наработки или как стоит к такому вопросу лучше подойти.
источник
2021 January 28

СИ

Сергей Ильин... in Python для анализа данных
с циклами в пандасе поможете? (и да, я понимаю, что циклы в пандасе - это не pythonic-way)

тест, который работает:

# делаем .loc одного из столбцов равный значению
temp_df = df.loc[df['cat_number']=='5111-0395']
# обрезаем датафрейм нужным количеством столбцов (опционально)
temp_df = temp_df[['cat_number', 'date', 'DT']]
# сортируем по одному из столбцов
temp_df.sort_values('DT', ascending = True)
# берем последний и первый элементы в этом датафрейме и считаем разницу
diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# из полученного diff типом timedelta получаем фактическое количество дней
diff = diff[0].days
# в датафрейме temp_df_c берем и обрезаем датафрейм по нужным нам значениям в выбранном столбце
temp_df_c = df_c.loc[df_c['cat_number']=='5111-0395']
# в столбец lifetime (не созданный до этого) кладем diff
temp_df_c['lifetime'] = diff

все ок, все работает.
Последней строчкой пандас сам создает столбец lifetime, в который кладет значение, содержащееся в diff


Переходим к циклу, который не работает:

# для каждого i-того уникального вхождения в столбце cat_number в датафрейме df
for i in df.cat_number.unique():
# сохраняем в temp_df обрезанный датафрейм с условием по столбцу cat_number, равным i
   temp_df = df[df['cat_number']==i].sort_values(['DT','date'], ascending = (True, True))
# получаем аналогичным образом diff
   diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# приводим diff к удобному виду
   diff = diff[0].days
# в другой датафрейм df_c, обрезанный по условию в столбце cat_number, равному i, в новый (не созданный до этого) столбец кладем diff
   df_c[df_c['cat_number']==i]['lifetime'] = diff

вся эта штука с каждым новым i в цикле переписывает (каждый раз создает заново) столбец lifetime. Как мне применить .append тут (чтобы цикл не переписывал значение) я так и не понял. Поможете?
источник

ET

Evgeniy Troshichev in Python для анализа данных
Сгруппировать по категории, в качестве агрегатных функций применить к дате min и max, затем про ним вычислить lifetime?
источник

СИ

Сергей Ильин... in Python для анализа данных
Evgeniy Troshichev
Сгруппировать по категории, в качестве агрегатных функций применить к дате min и max, затем про ним вычислить lifetime?
Да, что-то вроде того
источник

СИ

Сергей Ильин... in Python для анализа данных
Evgeniy Troshichev
Сгруппировать по категории, в качестве агрегатных функций применить к дате min и max, затем про ним вычислить lifetime?
Но только в разных датафреймах же..
источник

СИ

Сергей Ильин... in Python для анализа данных
Evgeniy Troshichev
Сгруппировать по категории, в качестве агрегатных функций применить к дате min и max, затем про ним вычислить lifetime?
Но это же не решит проблему с тем, что цикл переписывает новый столбец. Или я не правильно понял?
источник

VR

Vasily Rozhkov in Python для анализа данных
Сергей Ильин
с циклами в пандасе поможете? (и да, я понимаю, что циклы в пандасе - это не pythonic-way)

тест, который работает:

# делаем .loc одного из столбцов равный значению
temp_df = df.loc[df['cat_number']=='5111-0395']
# обрезаем датафрейм нужным количеством столбцов (опционально)
temp_df = temp_df[['cat_number', 'date', 'DT']]
# сортируем по одному из столбцов
temp_df.sort_values('DT', ascending = True)
# берем последний и первый элементы в этом датафрейме и считаем разницу
diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# из полученного diff типом timedelta получаем фактическое количество дней
diff = diff[0].days
# в датафрейме temp_df_c берем и обрезаем датафрейм по нужным нам значениям в выбранном столбце
temp_df_c = df_c.loc[df_c['cat_number']=='5111-0395']
# в столбец lifetime (не созданный до этого) кладем diff
temp_df_c['lifetime'] = diff

все ок, все работает.
Последней строчкой пандас сам создает столбец lifetime, в который кладет значение, содержащееся в diff


Переходим к циклу, который не работает:

# для каждого i-того уникального вхождения в столбце cat_number в датафрейме df
for i in df.cat_number.unique():
# сохраняем в temp_df обрезанный датафрейм с условием по столбцу cat_number, равным i
   temp_df = df[df['cat_number']==i].sort_values(['DT','date'], ascending = (True, True))
# получаем аналогичным образом diff
   diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# приводим diff к удобному виду
   diff = diff[0].days
# в другой датафрейм df_c, обрезанный по условию в столбце cat_number, равному i, в новый (не созданный до этого) столбец кладем diff
   df_c[df_c['cat_number']==i]['lifetime'] = diff

вся эта штука с каждым новым i в цикле переписывает (каждый раз создает заново) столбец lifetime. Как мне применить .append тут (чтобы цикл не переписывал значение) я так и не понял. Поможете?
df_temp = pd.DataFrame()
for i in ....
  .....
  df_temp = pd.concat([df_temp, temp], axis=1, ignore_index=True)

както так можно, например
источник

VR

Vasily Rozhkov in Python для анализа данных
написал на память  - курите про pd.concat ))
источник

AB

Anastasia Belokon in Python для анализа данных
Сергей Ильин
с циклами в пандасе поможете? (и да, я понимаю, что циклы в пандасе - это не pythonic-way)

тест, который работает:

# делаем .loc одного из столбцов равный значению
temp_df = df.loc[df['cat_number']=='5111-0395']
# обрезаем датафрейм нужным количеством столбцов (опционально)
temp_df = temp_df[['cat_number', 'date', 'DT']]
# сортируем по одному из столбцов
temp_df.sort_values('DT', ascending = True)
# берем последний и первый элементы в этом датафрейме и считаем разницу
diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# из полученного diff типом timedelta получаем фактическое количество дней
diff = diff[0].days
# в датафрейме temp_df_c берем и обрезаем датафрейм по нужным нам значениям в выбранном столбце
temp_df_c = df_c.loc[df_c['cat_number']=='5111-0395']
# в столбец lifetime (не созданный до этого) кладем diff
temp_df_c['lifetime'] = diff

все ок, все работает.
Последней строчкой пандас сам создает столбец lifetime, в который кладет значение, содержащееся в diff


Переходим к циклу, который не работает:

# для каждого i-того уникального вхождения в столбце cat_number в датафрейме df
for i in df.cat_number.unique():
# сохраняем в temp_df обрезанный датафрейм с условием по столбцу cat_number, равным i
   temp_df = df[df['cat_number']==i].sort_values(['DT','date'], ascending = (True, True))
# получаем аналогичным образом diff
   diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# приводим diff к удобному виду
   diff = diff[0].days
# в другой датафрейм df_c, обрезанный по условию в столбце cat_number, равному i, в новый (не созданный до этого) столбец кладем diff
   df_c[df_c['cat_number']==i]['lifetime'] = diff

вся эта штука с каждым новым i в цикле переписывает (каждый раз создает заново) столбец lifetime. Как мне применить .append тут (чтобы цикл не переписывал значение) я так и не понял. Поможете?
Ну есть вариант создать список cat_numbers = []. В конце цикла создавать словарь cat= {'cat_number':cat_number,'lifetitme':diff}, присоединить его к cat_numbers(cat_numbers.append(cat))  и потом уже с помощью pd.concat перевести его в DataFrame. Это если с помощью циклов, вообще мне кажется, вам легче будет создать новые колонки в исходном df time_max и time_min с помощью groupby('cat_number')['date'].transform(max) и transform(min) соответственно. Получить искомую разницу в новом столбце 'lifetime' и с помощью drop_duplicates(subset=''cat_number) получить необходимое
источник

VM

Valerii Mamontov in Python для анализа данных
Сергей Ильин
с циклами в пандасе поможете? (и да, я понимаю, что циклы в пандасе - это не pythonic-way)

тест, который работает:

# делаем .loc одного из столбцов равный значению
temp_df = df.loc[df['cat_number']=='5111-0395']
# обрезаем датафрейм нужным количеством столбцов (опционально)
temp_df = temp_df[['cat_number', 'date', 'DT']]
# сортируем по одному из столбцов
temp_df.sort_values('DT', ascending = True)
# берем последний и первый элементы в этом датафрейме и считаем разницу
diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# из полученного diff типом timedelta получаем фактическое количество дней
diff = diff[0].days
# в датафрейме temp_df_c берем и обрезаем датафрейм по нужным нам значениям в выбранном столбце
temp_df_c = df_c.loc[df_c['cat_number']=='5111-0395']
# в столбец lifetime (не созданный до этого) кладем diff
temp_df_c['lifetime'] = diff

все ок, все работает.
Последней строчкой пандас сам создает столбец lifetime, в который кладет значение, содержащееся в diff


Переходим к циклу, который не работает:

# для каждого i-того уникального вхождения в столбце cat_number в датафрейме df
for i in df.cat_number.unique():
# сохраняем в temp_df обрезанный датафрейм с условием по столбцу cat_number, равным i
   temp_df = df[df['cat_number']==i].sort_values(['DT','date'], ascending = (True, True))
# получаем аналогичным образом diff
   diff = (temp_df.tail(1).date.values - temp_df.head(1).DT.values)
# приводим diff к удобному виду
   diff = diff[0].days
# в другой датафрейм df_c, обрезанный по условию в столбце cat_number, равному i, в новый (не созданный до этого) столбец кладем diff
   df_c[df_c['cat_number']==i]['lifetime'] = diff

вся эта штука с каждым новым i в цикле переписывает (каждый раз создает заново) столбец lifetime. Как мне применить .append тут (чтобы цикл не переписывал значение) я так и не понял. Поможете?
Добрый день!
Используя цикл, можно добавлять строки в нужный датафрейм через метод .loc
Например, так - https://repl.it/@valerymamontov/pandasappendrows
источник

AK

Alex K in Python для анализа данных
Народ, привет, а как узнать сколько красных машин в городе в котором 1000 машин, если мы посчитали что например из 100 проехавших 10 красные
источник

AK

Alex K in Python для анализа данных
Как посчитать вероятность гс по выборке если кратко
источник