Архив метки: pandas

Хакатон Екб

С пятницы по воскресенье, в Екатеринбурге и онлайн, прошёл хакатон под патронажем МинСтроя России.

Кейсы (задания) там были разные.

Команда, частью которой я стал, взялась за задачу, целью которой было на основании имеющихся факторов, спрогнозировать изменение графика выполнения работ.

В любом хакатоне важно не только то, какое место заняла команда. Не менее важно то, какой вклад внёс ты, как член коллектива.

Я помог понять, чего же от нас ожидает заказчик.

Помогал вовремя выполнять график соревнования.

И наполнял команду оптимизмом.

В результате нашего коллективного труда, мы заняло место основательной середины.

А какой ваш опыт участия в соревнованиях?

Статья понравилась?

Проект для ВК

Делаю проект по анализу данных для заявки на стажировку в ВК.

Знаю точно, что не сделаю полностью.

Отправлю с последним абзацем в котором напиши что-то типа такого:

А далее проводим категоризацию методом случайного леса.

… в работе пользуюсь новым поиском Бинга с элементами ИИ. …

Статья понравилась?

Замена значений в пандах по словарю

Часто для целей анализа бывает необходимым заменить значения в ячейках таблицы DataFrame на другие. Например, на короткие их версии, Или вообще нумерованные.

В приводимом примере замена

  • Для программы важно понять над чем вам нужно поработать. Не переживайте, вам будут доступны все опции.

на

  • q1

и т д

Вот вариант кода замены с использованием циклов в pandas:

# переименуем названия вопросов внутри столбца question_title для удобства на  q1, q2, q3, q4, q5, q6 соответственно
for i in filtered_answers.index:
    if filtered_answers.loc[i,'question_title'] == 'Для программы важно понять над чем вам нужно поработать. Не переживайте, вам будут доступны все опции.':
        filtered_answers.loc[i,'question_title'] = 'q1'
    elif filtered_answers.loc[i,'question_title'] == 'В зависимости от опыта работы вам может понадобиться разный вид консультаций и помощи от команды сопровождения и трудоустройства. Для нас очень важен честный ответ и понимание вашего бэкграунда.':
        filtered_answers.loc[i,'question_title'] = 'q2'
    elif filtered_answers.loc[i,'question_title'] == 'Бывает, что во время обучения меняется его цель. Например, изначально вы не планировали менять работу, но влюбились в профессию. Может, произошли жизненные изменения или вам сложно определить цель. Чтобы мы поняли, как помочь, отметьте подходящее утверждение:':
        filtered_answers.loc[i,'question_title'] = 'q3'
    elif filtered_answers.loc[i,'question_title'] == 'Планируете ли вы записаться на Карьерный Трек?':
        filtered_answers.loc[i,'question_title'] = 'q4'
    elif filtered_answers.loc[i,'question_title'] == 'Тут вы можете оставить свой комментарий, если не нашли подходящего варианта ответа.':
        filtered_answers.loc[i,'question_title'] = 'q5'
    else:
        filtered_answers.loc[i,'question_title'] = 'q6'
Статья понравилась?

Двухэтажные название колонок

После комплексной группировки таблицы pandas Pynhon dataframe командой groupby напрмер применив такую строку

# сколько заказов у каждого покупателя
agg_func_count = {'order_id': ['count'],
                    'sum_product': [ 'sum']}
count_orders_customer = df.groupby('customer_id')['order_id', 'sum_product'].agg(agg_func_count).reset_index()

Получаем двухэтажное название колонок в итоговой таблице.

Ещё они называются иерархические индексы

Пример dataframe с двухэтажными колонками

Выглядит это очень красиво. Но при попытке обратиться к колонке по названию, возникает сложность.

Что же делать?

Трансформировать иерархические названия столбцов pandas

Вот непонятная, но эффективная строка для этого

count_orders_customer.columns = ['_'.join(col).rstrip('_') for col in count_orders_customer.columns.values]

И получим результат сглаживания

Не земетили подвох?
Статья понравилась?

Как прочесть csv файл с Яндекс Диска в pandas

Яндекс.Диск официально не предоставляет сервис прямого считывания файлов по прямой ссылке.

Публичная ссылка на файл открывается в окне браузера. И уже в этом окне есть ссылка для скачивания.

Но в задачах анализа данных бывает необходимо в тетрадке Юпитер.Ноутбука прямо считывать данные в переменную из облачного хранилища.

Самый популярный в РФ ресурс для хранения файлов сейчас – это Яндекс.Диск.

Вот пример кода на Python для чтения файла:

import pandas as pd 
import requests 
from urllib.parse import urlencode 
 
# используем api 
base_url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?' 
public_key = 'https://disk.yandex.ru/d/c_JZSSJSnqWYzA' 
 
# получаем url 
final_url = base_url + urlencode(dict(public_key=public_key)) 
response = requests.get(final_url) 
download_url = response.json()['href'] 
 
# загружаем файл в df 
download_response = requests.get(download_url) 
df = pd.read_csv(download_url, sep='\t') 

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

Ну это как для любого файла csv .

Статья понравилась?