Практический экзамен для инженеров по данным (DE601P) (Datacamp)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Практический экзамен для инженеров по данным (DE601P) (Datacamp)

Сообщение Anonymous »

У меня есть некоторые проблемы с этим тестом (устройства и приложения для здоровья).
это ограничения



Имя столбца
Описание




user_id
Уникальный идентификатор для каждого пользователя. не должно быть пропущенных значений.


дата
Дата данных о состоянии здоровья было записано или была принята добавка, в формате даты. Пропущенных значений быть не должно.


электронная почта
Контактный адрес электронной почты пользователь. Пропущенных значений быть не должно.


user_age_group
Возрастная группа пользователь, один из: «Младше 18», «18–25», «26–35», «36–45», «46–55», «56–65», «Старше 65» или «Неизвестно», где возраст отсутствует.


experiment_name
Название эксперимента, связанного с использование дополнения. Допускаются отсутствующие значения для пользователей, у которых есть только данные о состоянии здоровья.


supplement_name
Название добавки, принятой в тот день. Допускаются множественные записи. Дни без приема добавок должны быть закодированы как «Нет приема».


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


< td>is_placebo
Индикатор того, была ли добавка плацебо (истина/ложь). Допускаются отсутствующие значения для дней без приема добавки.

average_heart_rate
Средняя частота пульса, зафиксированная носимым устройством. Отсутствующие значения допускаются.


средняя_глюкоза
Средний уровень глюкозы, зафиксированный на носимом устройстве. Отсутствующие значения допускаются.


sleep_hours
Общее время сна в часах за ночь, предшествующую журналу текущего дня. Допускаются пропущенные значения.


activity_level
Оценка уровня активности от 0 до 100. .Допускаются пропущенные значения.



после проверки столбцов типы, которые он отображает следующим образом, которые соответствуют требованию



user_id
объект




дата
datetime64[ns]

электронная почта
объект


user_age_group
категория


имя_эксперимента
объект


имя_дополнения
объект


dosage_grams
float64


is_placebo
bool


average_heart_rate
< td>float64


средняя_глюкоза
float64


часы сна
float64


уровень_активности
int64



но результат после отправки был таким
  • Определение, запись и выполнение функций. ОК
  • Интерпретируйте схему базы данных и объединяйте несколько таблиц по строкам или столбцам. Ошибка
Внимательно прочтите схему. Какие столбцы позволят вам объединить несколько таблиц? Знаете ли вы, как таблицы должны связываться друг с другом и какие строки и столбцы следует сохранять?
  • Определить и заменить пропущенные значения Не удалось
В реальных данных пропущенные значения не всегда могут быть в том формате, в котором их представляет используемый вами инструмент анализа. Иногда вместо типичного представления, например пустого пропущенные значения могут быть обозначены тире (-), словом типа «отсутствует» или другим неожиданным форматом. Важно не предполагать, что функции по умолчанию будут идентифицировать и обрабатывать все возможные варианты отсутствующих данных.
  • Очистка категориальных и текстовых данных путем манипулирования строками. Не удалось
Знаете ли вы, какие категории должны быть возможны в каждом столбце ваших данных? Являются ли они единственными категориями, которые действительно существуют? Если у вас есть дополнительные категории из-за орфографических ошибок или различий в написании заглавных букв, ваш анализ может оказаться неправильным.
  • Преобразуйте значения между типами данных. Ошибка
Данные, имеющие неправильный формат, обычно являются сигналом того, что в данных есть что-то еще. Вы проверили значения, которые у вас есть? Почему они не того типа? Вам нужно внести изменения перед преобразованием типа?
После следования рекомендациям.
Я написал функцию merge_all_data(), которая обрабатывает эти изменения. ограничения.
  • сгруппируйте группу user_age_group
  • очистите Sleep_hours, чтобы она стала плавающей, и удалите строку hH в столбце
  • удалить данные из user_health_data_df, чтобы убедиться, что у них есть данные о состоянии здоровья
  • агрегировать, чтобы найти дозировку
  • объединить их все вместе, чтобы получить все необходимые столбцы
  • удалить ненужные столбцы
  • преобразовать тип данных date в datetime и is_placebo в bool
  • Обеспечить уникальные ежедневные записи
  • Изменить порядок столбцов
это мой код

Код: Выделить всё

import pandas as pd
import numpy as np

def merge_all_data(user_health_file, supplement_usage_file, experiments_file, user_profiles_file):
user_profiles_df = pd.read_csv(user_profiles_file)
user_health_data_df = pd.read_csv(user_health_file)
supplement_usage_df = pd.read_csv(supplement_usage_file)
experiments_df = pd.read_csv(experiments_file)

# Age Grouping
bins = [0, 17, 25, 35, 45, 55, 65, np.inf]
labels = ['Under 18', '18-25', '26-35', '36-45', '46-55', '56-65', 'Over 65']
user_profiles_df['user_age_group'] = pd.cut(user_profiles_df['age'], bins=bins, labels=labels, right=False)
user_profiles_df['user_age_group'] = user_profiles_df['user_age_group'].cat.add_categories('Unknown').fillna('Unknown')
user_profiles_df.drop(columns=['age'], inplace=True)

user_health_data_df['sleep_hours'] = user_health_data_df['sleep_hours'].str.replace('[hH]', '', regex=True).astype(float)

# Supplement Usage Data
supplement_usage_df['dosage_grams'] = supplement_usage_df['dosage'] / 1000
supplement_usage_df['is_placebo'] = supplement_usage_df['is_placebo'].astype(bool)
supplement_usage_df.drop(columns=['dosage', 'dosage_unit'], inplace=True)

# Merging Data
merged_df = pd.merge(user_profiles_df, user_health_data_df, on='user_id', how='left')
merged_df = pd.merge(merged_df, supplement_usage_df, on=['user_id', 'date'], how='left')
merged_df = pd.merge(merged_df, experiments_df, on='experiment_id', how='left')

# Filling Missing Values
merged_df['supplement_name'].fillna('No intake', inplace=True)
merged_df['dosage_grams'] = merged_df['dosage_grams'].where(merged_df['supplement_name'] != 'No intake', np.nan)

# Drop Unnecessary Columns
merged_df.drop(columns=['experiment_id', 'description'], inplace=True)

# Rename and Format Date
merged_df.rename(columns={'name': 'experiment_name'}, inplace=True)
merged_df['date'] = pd.to_datetime(merged_df['date'], errors='coerce')
merged_df['is_placebo'] = merged_df['is_placebo'].astype(bool)
# Ensure Unique Daily Entries
merged_df = merged_df.groupby(['user_id', 'date']).first().reset_index()

# Reorder Columns
new_order = ['user_id', 'date', 'email', 'user_age_group', 'experiment_name',
'supplement_name', 'dosage_grams', 'is_placebo',
'average_heart_rate', 'average_glucose', 'sleep_hours', 'activity_level']
merged_df = merged_df[new_order]

return merged_df

# Example usage
merged_df = merge_all_data('user_health_data.csv', 'supplement_usage.csv', 'experiments.csv', 'user_profiles.csv')

Я вижу, что в именах эксперимента, имя_дополнения, дозировка_грамм и is_placebo разрешены пропущенные значения, поэтому я не преобразовывал их в какую-либо форму.
Я также используйте .isnull().sum() для поиска нулевых значений



user_id
0




дата
0


электронная почта
0


user_age_group
0


имя_эксперимента
721< /td>


имя_дополнения
0


dosage_grams
721


is_placebo
0


average_heart_rate
0


среднее_глюкоза
0


sleep_hours
0

< tr>
уровень_активности
0




Подробнее здесь: https://stackoverflow.com/questions/790 ... p-datacamp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Практический экзамен для инженеров по данным (DE601P) (Datacamp)
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Экзамен Datacamp: экзамен Python Associate
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Образец экзамена Datacamp: экзамен Python Associate - VoltBike Innovations
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Образец экзамена Datacamp: экзамен Python Associate - VoltBike Innovations
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Образец экзамена Datacamp: экзамен Python Associate - VoltBike Innovations
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»