Объединение данных, метод merge | Аналитик данных | karpov.courses

Поделиться
HTML-код
  • Опубликовано: 30 июл 2020
  • Решать задания к урокам: karpov.courses/analytics/demo
    Полный курс «Аналитик данных»: bit.ly/3CRKiQA

Комментарии • 8

  • @vitekofp
    @vitekofp Год назад +2

    Спасибо. Теперь всё понятно. До этого как вилами по воде.

  • @kriptozavod7375
    @kriptozavod7375 Год назад

    Объяснили тему, над которой я страдал 1,5 часа, спасибо вам большое❤

  • @kamranezi
    @kamranezi Год назад

    Очень понятно и быстро вспоминаешь по таким видео. Такой вопрос:
    Есть две pandas таблицы, каждая содержит два столбца. В первой это время и сердечный ритм. Во второй - это время и систолическое давление.
    Напишите код, который создает третью таблицу, в которой для каждого замера давления в той же строке содержится время и значение ближайшего замера сердечного ритма, если он был сделан обязательно до замера давления и не раньше, чем за 15 минут.Это обязательный вопрос *
    Пример:
    df_hr = pandas.DataFrame({'time': [datetime(2022,1,1,7,40), datetime(2022,1,1,9,50), datetime(2022,1,1,10,1)], 'hr': [60, 90,100]})
    df_bp = pandas.DataFrame({'time': [datetime(2022,1,1,10), datetime(2022,1,1,8)], 'bp': [140, 120]})
    Ожидаемый результат:
    pandas.DataFrame({
    'time_hr': [datetime(2022,1,1,9,50)],
    'hr': [90],
    'time_bp': [datetime(2022,1,1,10)],
    'bp': [140]

    • @ihaid00k
      @ihaid00k Год назад

      Камран, вот код, который ты спрашивал:
      # импортируем pandas
      import pandas as pd
      # задаем таблицу с сердечным ритмом, использовать функцию datetime необязательно (!)
      df_hr = pd.DataFrame({'time': ['2022-1-1 07:40', '2022-1-1 09:50', '2022-1-1 10:01'], 'hr': [60, 90,100]})
      # задаем таблицу с систолическим давлением
      df_bp = pd.DataFrame({'time': ['2022-1-1 10:00', '2022-1-1 8:00'], 'bp': [140, 120]})
      # на этом шаге (!) конвертируем значения столбцов из строк в формат "дата и время"
      df_hr['time'] = pd.to_datetime(df_hr['time'])
      df_bp['time'] = pd.to_datetime(df_bp['time'])
      # создаем третью таблицу, куда мы будем записывать нужные нам записи
      df_result = pandas.DataFrame({'time_hr': [], 'hr': [], 'time_bp': [], 'bp': []})
      # проходимся циклом по исходным двум таблицам
      # проходимся по каждой строке таблицы систолическим давлением
      for row_bp in df_bp.iterrows():
      # проходимся по каждой строке таблицы с сердечным ритмом
      for row_hr in df_hr.iterrows():
      # считаем разницу во времени между замерами систалического давления и сердечного ритма
      delta = row_bp[1][0] - row_hr[1][0]
      # если дельта больше 15 минут
      if delta >= datetime.timedelta(minutes=15):
      # то записываем результат в третью таблицу
      df_result = df_result.append({'time_hr': row_hr[1][0], 'hr': row_hr[1][1], 'time_bp': row_bp[1][0], 'bp': row_bp[1][1]},ignore_index=True)
      ВАЖНО: данный код записывает все замеры с дельтой больше 15 минут, то есть после данной обработки в результирующей таблице df_result необходимо будет найти минимальные значения, но это сделать не тяжело.

  • @user-rk6zz8zk3l
    @user-rk6zz8zk3l 3 года назад

    А где ссылка? :)

    • @karpovcourses
      @karpovcourses  3 года назад

      а о какой ссылке речь?)

    • @user-gq2zr4nt9o
      @user-gq2zr4nt9o 3 года назад +2

      @@karpovcourses Добрый день.
      Полагаю, что о ссылке на статью о JOINах.
      Аня, в описании к видео информация, где искать статьи и материалы.
      А так, лови - habr.com/ru/post/448072/

    • @shapovalentine
      @shapovalentine Год назад

      @@user-gq2zr4nt9o но там её нет)