2024-10-19 17:27:50 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3><b>Уф.. начинаем длинную тяжелую лабу...</b></h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>3 набора данных, с которыми будет проводиться работа:</b>\n",
"<ol>\n",
" <li>\n",
" <p>Объекты вокруг Земли</p>\n",
" <a href=\"https://www.kaggle.com/datasets/sameepvani/nasa-nearest-earth-objects\">Ссылка</a> \n",
" </li>\n",
" <li>\n",
" <p>Оценки студентов на экзамене</p>\n",
" <a href=\"https://www.kaggle.com/datasets/spscientist/students-performance-in-exams\">Ссылка</a>\n",
" </li>\n",
" <li>\n",
" <p>Прогноз цены мобильного телефона</p>\n",
" <a href=\"https://www.kaggle.com/datasets/dewangmoghe/mobile-phone-price-prediction\">Ссылка</a>\n",
" </li>\n",
"</ol>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-11-04 20:29:09 +04:00
"<div style=\"margin: 40px;\">\n",
"<h4 >Информация о первом датасете:</h4>\n",
2024-10-19 17:27:50 +04:00
"\n",
2024-11-04 20:29:09 +04:00
"<p style=\"margin: 40px;\"><b>О наборе данных</b><br/>\n",
2024-10-19 17:27:50 +04:00
"Контекст<br/>\n",
"В космическом пространстве существует бесконечное количество объектов. Некоторые из них находятся ближе, чем мы думаем. Хотя нам может казаться, что расстояние в 70 000 км не может причинить нам вред, в астрономическом масштабе это очень маленькое расстояние, которое может нарушить многие природные явления. Таким образом, эти объекты/астероиды могут причинить вред. Поэтому разумно знать, что нас окружает и что может причинить нам вред. Таким образом, этот набор данных содержит список сертифицированных Н А С А астероидов, которые классифицируются как ближайшие к Земле объекты.</p>\n",
"\n",
"<br/>\n",
"<h4>Информация о втором датасете:</h4>\n",
2024-11-04 20:29:09 +04:00
"<p style=\"margin: 40px;\"><b>О наборе данных</b><br/>\n",
2024-10-19 17:27:50 +04:00
"Контекст<br/>\n",
"Оценки, полученные студентами<br/>\n",
"Содержание<br/>\n",
"Этот набор данных состоит из оценок, полученных учениками по различным предметам.<br/>\n",
"Благодарности<br/>\n",
"http://roycekimmons.com/tools/generated_data/exams<br/>\n",
"Вдохновение<br/>\n",
"Понять влияние предыстории родителей, подготовки к тестированию и т.д. Н а успеваемость учащихся</p>\n",
"<br/>\n",
"\n",
"<h4>Информация о третьем датасете:</h4>\n",
2024-11-04 20:29:09 +04:00
"<p style=\"margin: 40px;\"><b>О наборе данных</b><br/>\n",
2024-10-19 17:27:50 +04:00
"Этот набор данных был собран путём с б о р а данных с онлайн-сайтов.\n",
"Столбцы выглядят следующим образом.\n",
"\n",
"Название: в этом столбце содержится название мобильного телефона.\n",
"\n",
"Рейтинг: в этом столбце указаны оценки, выставленные телефону. Минимальная оценка — 0, максимальная — 5.\n",
"\n",
"Spec_score: в этом столбце указана оценка телефона на основе е г о характеристик. Минимальное значение — 0, максимальное — 100.\n",
"\n",
"No_of_sim: в этом столбце указано, поддерживает ли телефон две SIM-карты, 3G, 4G, 5G, LTE.\n",
"\n",
"Оперативная память: В этом столбце содержится информация о оперативной памяти телефона\n",
"\n",
"Аккумулятор: В этой колонке представлена информация о характеристиках аккумулятора телефона.\n",
"\n",
"Дисплей: В этом столбце содержится информация о размере экрана телефона.\n",
"\n",
"Камера: В этой колонке представлена информация о камере, задней и фронтальной.\n",
"\n",
"В не шняя_па мять: этот столбец содержит информацию о том, поддерживает ли устройство внешнюю память и\n",
"какой объём памяти.\n",
"\n",
"Android_version: этот столбец сообщает нам о версии Android на телефоне.\n",
"\n",
"Цена: Цена телефона.\n",
"\n",
"Компания: Компания, которой принадлежит телефон.\n",
"\n",
"В с тр о е нна я_па мять: в этом столбце представлена информация о встроенной памяти телефона.\n",
"\n",
"б ыс тр а я_за р ядка : показывает, поддерживает ли устройство быструю зарядку. Если да, то насколько.\n",
"\n",
"Screen_resolution: Это описывает разрешение экрана телефона.\n",
"\n",
"Процессор: В этом столбце приведена информация о процессоре телефона.\n",
"\n",
"Имя_пр о це с с о р а : в этом столбце описывается название процессора.\n",
"<br/>\n",
2024-11-04 20:29:09 +04:00
"</div>\n"
2024-10-19 17:27:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-11-04 20:29:09 +04:00
"<p style=\"margin: 40px;\">начинаем...<br>первое...<br>Проблемная область: Это данные о ближайших к Земле объектах (астероиды и кометы), которые могут угрожать нашей планете. Важно анализировать их траектории, размеры и скорость для предотвращения потенциальных катастроф.<br>Объекты наблюдения: Астероиды, кометы и другие объекты.<br>Атрибуты: 'id', 'name', 'est_diameter_min', 'est_diameter_max', 'relative_velocity', 'miss_distance', 'orbiting_body', 'sentry_object', 'absolute_magnitude', 'hazardous'<br>Связи между объектами: Нет явных связей между объектами, но можно изучать корреляции между размером, скоростью и расстоянием объекта.</p>"
2024-10-19 17:27:50 +04:00
]
},
{
"cell_type": "code",
2024-11-04 20:29:09 +04:00
"execution_count": 1,
2024-10-19 17:27:50 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"вот столько колонОчек 10\n",
"вот такие колонОчки: ['id', 'name', 'est_diameter_min', 'est_diameter_max', 'relative_velocity', 'miss_distance', 'orbiting_body', 'sentry_object', 'absolute_magnitude', 'hazardous']\n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"data = pd.read_csv(\"./csv/1.csv\", sep=\",\")\n",
"print(\"вот столько колонОчек\", data.columns.size)\n",
"print(\"вот такие колонОчки:\", data.columns.tolist()) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-11-04 20:29:09 +04:00
"<p style=\"margin: 40px;\">\n",
"Получение сведений о пропущенных данных <br>Типы пропущенных данных:<br>None - представление пустых данных в Python<br>NaN - представление пустых данных в Pandas<br>'' - пустая строка\n",
"</p>"
2024-10-19 17:27:50 +04:00
]
},
{
"cell_type": "code",
2024-11-04 20:29:09 +04:00
"execution_count": 7,
2024-10-19 17:27:50 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"id 0\n",
"name 0\n",
"est_diameter_min 0\n",
"est_diameter_max 0\n",
"relative_velocity 0\n",
"miss_distance 0\n",
"orbiting_body 0\n",
"sentry_object 0\n",
"absolute_magnitude 0\n",
"hazardous 0\n",
"dtype: int64 \n",
"\n",
"id False\n",
"name False\n",
"est_diameter_min False\n",
"est_diameter_max False\n",
"relative_velocity False\n",
"miss_distance False\n",
"orbiting_body False\n",
"sentry_object False\n",
"absolute_magnitude False\n",
"hazardous False\n",
"dtype: bool \n",
"\n"
]
}
],
"source": [
"# Проверим, есть ли пропущенные значения\n",
"print(data.isnull().sum(), \"\\n\")\n",
"\n",
"# Есть ли пустые значения признаков\n",
"print(data.isnull().any(), \"\\n\")"
]
},
{
2024-11-04 20:29:09 +04:00
"cell_type": "markdown",
2024-10-19 17:27:50 +04:00
"metadata": {},
2024-11-04 20:29:09 +04:00
"source": [
"<p style=\"margin: 40px;\">Тут понятно, что пропущенных значений нет, поэтому заполнять пустые места не нужно <br>И еще на сайте видно, что колонки \"orbiting_body\" и \"sentry_object\" не имеют никаких значений кроме \"Земля\" и \"false\" соответственно. Значит удалим их</p>"
]
2024-10-19 17:27:50 +04:00
},
{
"cell_type": "code",
2024-11-04 20:29:09 +04:00
"execution_count": 18,
2024-10-19 17:27:50 +04:00
"metadata": {},
2024-11-04 20:29:09 +04:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['id', 'name', 'est_diameter_min', 'est_diameter_max',\n",
" 'relative_velocity', 'miss_distance', 'absolute_magnitude',\n",
" 'hazardous'],\n",
" dtype='object')\n"
]
}
],
"source": [
"# data = data.drop(columns=['sentry_object'])\n",
"# data = data.drop(columns=['orbiting_body'])\n",
"print(data.columns)"
]
2024-10-19 17:27:50 +04:00
},
2024-11-14 21:22:58 +04:00
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
2024-10-19 17:27:50 +04:00
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
2024-11-14 21:22:58 +04:00
"source": [
"numeric_columns = ['est_diameter_min', 'est_diameter_max', 'relative_velocity', 'miss_distance', 'absolute_magnitude']\n",
"for column in numeric_columns:\n",
" if pd.api.types.is_numeric_dtype(data[column]): # Проверяем, является ли колонка числовой\n",
" q1 = data[column].quantile(0.25) # Находим 1-й квартиль (Q1)\n",
" q3 = data[column].quantile(0.75) # Находим 3-й квартиль (Q3)\n",
" iqr = q3 - q1 # Вычисляем межквартильный размах (IQR)\n",
"\n",
" # Определяем границы для выбросов\n",
" lower_bound = q1 - 1.5 * iqr # Нижняя граница\n",
" upper_bound = q3 + 1.5 * iqr # Верхняя граница\n",
"\n",
" # Подсчитываем количество выбросов\n",
" outliers = data[(data[column] < lower_bound) | (data[column] > upper_bound)]\n",
" outlier_count = outliers.shape[0]\n",
"\n",
" # Устраняем выбросы: заменяем значения ниже нижней границы на саму нижнюю границу, а выше верхней — на верхнюю\n",
" data[column] = data[column].apply(lambda x: lower_bound if x < lower_bound else upper_bound if x > upper_bound else x)\n",
"\n",
" print(f\"Колонка {column}:\")\n",
" print(f\" Есть выбросы: {'Да' if outlier_count > 0 else 'Нет'}\")\n",
" print(f\" Количество выбросов: {outlier_count}\")\n",
" print(f\" Минимальное значение: {data[column].min()}\")\n",
" print(f\" Максимальное значение: {data[column].max()}\")\n",
" print(f\" 1-й квартиль (Q1): {q1}\")\n",
" print(f\" 3-й квартиль (Q3): {q3}\\n\")"
]
2024-10-19 17:27:50 +04:00
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}