{ "cells": [ { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "df0 = pd.read_csv('data_prev.csv')\n", "df1 = pd.read_csv('data7.csv')\n", "df2 = pd.read_csv('data6.csv')" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "df = pd.concat([df0, df1, df2], ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "page_url 0\n", "image_url 0\n", "author 2\n", "title 0\n", "annotation 0\n", "category 0\n", "dtype: int64" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna().sum()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "df.dropna(subset=['annotation', 'author'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "Index: 24385 entries, 0 to 24386\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 page_url 24385 non-null object\n", " 1 image_url 24385 non-null object\n", " 2 author 24385 non-null object\n", " 3 title 24385 non-null object\n", " 4 annotation 24385 non-null object\n", " 5 category 24385 non-null object\n", "dtypes: object(6)\n", "memory usage: 1.3+ MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "df.drop_duplicates(subset=['author', 'title'], inplace=True)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "Index: 24235 entries, 0 to 24385\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 page_url 24235 non-null object\n", " 1 image_url 24235 non-null object\n", " 2 author 24235 non-null object\n", " 3 title 24235 non-null object\n", " 4 annotation 24235 non-null object\n", " 5 category 24235 non-null object\n", "dtypes: object(6)\n", "memory usage: 1.3+ MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Евгений Онегин\n", "1 Мастер и Маргарита (с иллюстрациями балета Сер...\n", "2 Сто лет одиночества : [роман]\n", "3 О дивный новый мир (замена картинки)\n", "4 Дюна: [фантастический роман].\n", " ... \n", "24381 Игра в бисер\n", "24382 Ромео и Джульетта\n", "24383 Опасные связи : роман\n", "24384 Тартарен из Тараскона\n", "24385 Станция на горизонте\n", "Name: title, Length: 24235, dtype: object" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['title']" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "def has_partial_start(row, col_name):\n", " name = row[col_name]\n", " for other_name in df[col_name]:\n", " if other_name != name and other_name.startswith(name):\n", " return True\n", " return False\n", "\n", "# def filter_partial_start(row, col_name):\n", "# name = row[col_name]\n", "# for other_name in df[col_name]:\n", "# if other_name != name and other_name.startswith(name):\n", "# return False\n", "# return True\n", "\n", "# Применение функции для удаления строк с частичным совпадением в начале\n", "filt_df = df[~df.apply(lambda x: has_partial_start(x, 'title'), axis=1)]" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "pd.set_option('display.max_rows', None)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "category\n", "Социология 3802\n", "Фантастика. Фэнтези 2731\n", "Классическая и современная проза 2265\n", "Детективы 1834\n", "Эзотерическая литература 1133\n", "Клиническая медицина. Внутренние болезни 640\n", "Популярная психология 603\n", "Бизнес. Торговля 574\n", "Фольклор 542\n", "Философия 520\n", "Филология 485\n", "Испанский, португальский, итальянский языки 465\n", "Религия 461\n", "Маркетинг 441\n", "Публицистика. Биографии. Мемуары 440\n", "Науки о Земле 330\n", "Биологические науки 322\n", "прочие языки 322\n", "Книги по программированию 319\n", "Политика. Партии и движения 277\n", "Любовные романы. Книги о любви 275\n", "Исторические романы 267\n", "Поэзия. Драматургия 245\n", "Естественные науки в целом. Науковедение 219\n", "Народная медицина. Нетрадиционные методы лечения 200\n", "Математика 196\n", "Автоматика. Радиоэлектроника. Связь 188\n", "Энергетика. Машиностроение. Приборостроение 179\n", "Физика 147\n", "Транспорт 138\n", "Военная наука. Военное дело 133\n", "Детская психология 116\n", "Приключения 110\n", "Защита информации. Компьютерная безопасность 104\n", "Общая патология. Общая терапия 103\n", "Домашние животные 101\n", "Хирургия. Онкология. Прикладные отрасли медицины 101\n", "Здравоохранение. Гигиена. Эпидемиология 98\n", "Химические науки 97\n", "Прикладное программное обеспечение 96\n", "Педиатрия 90\n", "Астрономия 87\n", "Строительство 76\n", "Горная промышленность. Металлургия 73\n", "Психологические школы и направления. Психоанализ 72\n", "Ветеринария 71\n", "Курортология. Физиотерапия. Лечебная физкультура 66\n", "Химическая промышленность. Пищевая промышленность. Легкая промышленность. Деревообрабатывающая и целлюлозно-бумажная промышленность. Полиграфия 59\n", "Экология 58\n", "Психология общения 55\n", "Базы и банки данных. СУБД 39\n", "Общая психология. История психологии 37\n", "Технические науки и промышленность в целом 37\n", "Операционные системы и программы-оболочки 33\n", "Отдельные философские учения 30\n", "Компьютерные сети. Интернет 29\n", "Механика 27\n", "Фармакология. Лекарствоведение. Токсикология 24\n", "Прикладная психология. Соционика. Педагогическая психология 11\n", "Статистика. Демография 9\n", "Мобильные устройства 6\n", "Name: count, dtype: int64" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filt_df['category'].value_counts()" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "Index: 1627 entries, 0 to 24382\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 page_url 1627 non-null object\n", " 1 image_url 1627 non-null object\n", " 2 author 1627 non-null object\n", " 3 title 1627 non-null object\n", " 4 annotation 1627 non-null object\n", " 5 category 1627 non-null object\n", "dtypes: object(6)\n", "memory usage: 89.0+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Евгений Онегин\n", "8 Дюна\n", "9 Малое собрание сочинений\n", "13 Мастер и Маргарита\n", "22 Бедная Лиза\n", " ... \n", "24339 Остров сокровищ\n", "24348 Дети капитана Гранта\n", "24379 Милый друг\n", "24380 Саломея\n", "24382 Ромео и Джульетта\n", "Name: title, Length: 1627, dtype: object" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['title']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Фильтрация категорий\n" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "category_counts = df['category'].value_counts()\n", "\n", "# Фильтрация категорий с количеством значений больше 100\n", "filtered_categories = category_counts[category_counts > 500].index\n", "\n", "# Фильтрация DataFrame по отфильтрованным категориям\n", "filtered_df = df[df['category'].isin(filtered_categories)]" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "category\n", "Социология 3954\n", "Фантастика. Фэнтези 2916\n", "Классическая и современная проза 2716\n", "Детективы 1979\n", "Эзотерическая литература 1175\n", "Клиническая медицина. Внутренние болезни 647\n", "Популярная психология 629\n", "Фольклор 613\n", "Философия 598\n", "Бизнес. Торговля 588\n", "Филология 503\n", "Name: count, dtype: int64" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filtered_df['category'].value_counts()" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "categories_list = ['Классическая и современная проза', 'Детективы', 'Фантастика. Фэнтези', 'Любовные романы. Книги о любви', 'Поэзия. Драматургия', 'Общая патология. Общая терапия', 'Народная медицина. Нетрадиционные методы лечения', 'Клиническая медицина. Внутренние болезни', 'Ветеринария', 'Домашние животные', 'Публицистика. Биографии. Мемуары', 'Эзотерическая литература', 'Философия', 'Религия', 'Социология', 'Фольклор', 'Бизнес. Торговля', 'Маркетинг', 'Книги по программированию', 'Политика. Партии и движения', 'Филология', 'Математика', 'Физика', 'Астрономия', 'Науки о Земле', 'Экология', 'Биологические науки', 'Популярная психология', 'Психологические школы и направления. Психоанализ', 'Детская психология', 'Приключения', 'Исторические романы']\n", "filtered_df = filt_df[filt_df['category'].isin(categories_list)]" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "filtered_df.to_csv('data_final.csv', index=False)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# df.to_csv('data_final.csv', index=False)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "df = pd.read_csv('data_sent.csv')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "RangeIndex: 17774 entries, 0 to 17773\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 page_url 17774 non-null object\n", " 1 image_url 17774 non-null object\n", " 2 author 17774 non-null object\n", " 3 title 17774 non-null object\n", " 4 annotation 17774 non-null object\n", " 5 category 17774 non-null object\n", "dtypes: object(6)\n", "memory usage: 833.3+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_27471/112674152.py:2: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df['annotation'] = df['annotation'].apply(lambda text: ''.join([symbol for symbol in text if symbol not in [';']]).strip().lower())\n" ] } ], "source": [ "df = df[df['annotation'].str.split().str.len() >= 50]\n", "df['annotation'] = df['annotation'].apply(lambda text: ''.join([symbol for symbol in text if symbol not in [';']]).strip().lower())\n", "df.reset_index(drop=True, inplace=True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "RangeIndex: 17774 entries, 0 to 17773\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 page_url 17774 non-null object\n", " 1 image_url 17774 non-null object\n", " 2 author 17774 non-null object\n", " 3 title 17774 non-null object\n", " 4 annotation 17774 non-null object\n", " 5 category 17774 non-null object\n", "dtypes: object(6)\n", "memory usage: 833.3+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df.to_csv('data_final.csv', index=False) " ] } ], "metadata": { "kernelspec": { "display_name": "faiss_env", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }