{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Работа с таблицами. Введение в библиотеку pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Датафреймы (таблицы) в pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В этой и последующих лекциях мы будем работать с таблицами. В социальных науках термины *база данных* и *таблица* часто используются как синонимы. Вообще, между этими терминами есть существенная разница, так как база данных по сути ‒ это набор таблиц, связанных друг с другом (можно думать о ней как о файле Excel с разными листами). Но давайте для простоты считать эти термины эквивалентными, основы работы с «настоящими» базами данных (*SQL*, *PyMongo*) мы обсуждать не будем. Кроме того, в качестве синонима слова *таблица* мы будем использовать слово *датафрейм* как кальку с термина *data frame*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Таблицы можно получить из стандартных структур данных в Python. Например, мы можем создать таблицу в таком виде:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "table = [[1, 2, 3], [4, 5, 6]]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[1, 2, 3], [4, 5, 6]]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Давайте превратим `table` в датафрейм из библиотеки `pandas`. Эта библиотека используется для удобной и более эффективной работы с таблицами. Ее функционал достаточно разнообразен, но давайте начнем с каких-то базовых функций и методов. \n", "\n", "Для начала импортируем саму библиотеку." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Здесь мы использовали такой прием: импортировали библиотеку и присвоили ей сокращенное имя, которое будет использоваться в пределах данного ноутбука. Чтобы не писать перед каждой библиотечной функцией длинное `pandas.` и не импортировать сразу все функции из этой библиотеки, мы сократим название до `pd` и в дальнейшем Python будет понимать, что мы имеем в виду. Можно было бы сократить и до `p`, но тогда есть риск забыть про это и создать переменную с таким же именем, что плохо. К тому же `pd` ‒ распространенное и устоявшееся сокращение.\n", "\n", "(И да, таким образом можно сокращать названия любых библиотек и модулей. Ничто бы не помешало нам на предыдущих занятиях писать, например, `import math as ma`, просто в этом не было необходимости).\n", "\n", "А теперь вернемся к таблице ‒ превратим список списков в объект `DataFrame`:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
0123
1456
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1 2 3\n", "1 4 5 6" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(table) # выглядит посимпатичнее" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сохраним результат в переменную `df`:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(table)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
0123
1456
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1 2 3\n", "1 4 5 6" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Как можно заметить, по умолчанию Python создает датафрейм по строкам, то есть в качестве первой строки берет первый список, затем ‒ второй, и так далее. При желании это можно исправить ‒ транспонировать таблицу, то есть поменять местами строки и столбцы. Для этого существует метод `.transpose()`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
014
125
236
\n", "
" ], "text/plain": [ " 0 1\n", "0 1 4\n", "1 2 5\n", "2 3 6" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.transpose()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Другой нюанс: Python создал названия строк и столбцов по умолчанию ‒ просто пронумеровал их, начиная с нуля. Разумеется, это тоже можно настраивать, но давайте оставим это до более содержательного примера. А пока посмотрим, что из себя представляют столбцы нашего датафрема:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 4\n", "Name: 0, dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[0] # столбец с индексом 1 - Series" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(df[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Столбец датафрейма `df` имеет особый тип *Series*. Внешне *Series* отличается от обычного списка значений, потому что, во-первых, при вызове столбца на экран выводятся не только сами элементы, но их номер (номер строки), а во-вторых, на экран выводится строка с названием столбца (`Name: 0`) и его тип (`dtype: int64`, целочисленный). Первая особенность роднит *Series* со словарями: он представляет собой пары *ключ-значение*, то есть *номер-значение*. Вторая особенность роднит *Series* с массивами `numpy`: элементы обычно должны быть одного типа.\n", "\n", "Библиотеку `numpy` мы еще не обсуждали, но обязательно обсудим позже, так как во многих задачах использовать массивы `numpy` гораздо удобнее, чем списки. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Загрузка таблицы из файла и описание переменных\n", "\n", "А теперь давайте загрузим какую-нибудь реальную базу данных из файла. Библиотека `pandas` достаточно гибкая, она позволяет загружать данные из файлов разных форматов. Пока остановимся на самом простом ‒ файле *csv*, что расшифровывается как *comma separated values*. Столбцы в таком файле по умолчанию отделяются друг от друга запятой. Например, такая таблица" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
0149
1486
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1 4 9\n", "1 4 8 6" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame([[1, 4, 9], [4, 8, 6]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "сохраненная в формате *csv* без названий строк и столбцов будет выглядеть так:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "1, 4, 9\n", "4, 8, 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Но разделитель столбцов в таблице может быть и другим, например, точкой с запятой:" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "1; 4; 9\n", "4; 8; 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В таких случаях нам потребуется дополнительно выставлять параметр `sep = \";\"`, чтобы Python понимал, как правильно отделять один столбец от другого. Но потренируемся открывать разные форматы файлов в следующий раз. Сейчас посмотрим, как загрузить файл с компьютера.\n", "\n", "По умолчанию Python видит только те файлы, которые хранятся в текущей рабочей папке ‒ папке, откуда запускается Python или, в нашем случае, Jupyter Notebook. Чтобы узнать, какая папка является рабочей, необходимо загрузить модуль `os` и вызвать функцию `getcwd()`:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import os" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/Users/allat/Documents/github/CognTech/2-python-libraries'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.getcwd() # от get current working directory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Эта функция возвращает путь к рабочей папке. В моем случае это `'//Users/allat/Documents/github/CognTech/2-python-libraries`, на компьютере с Windows в классе ‒ `C:\\\\Users\\\\student`. Python подсказывает, что в моем случае рабочей папкой является *2-python-libraries*, которая лежит в папке *CognTech*, в *github* и так далее. Обратите внимание: в Mac OS и Linux слэши между названиями папок прямые и одинарные, в Windows ‒ обратные и двойные. Плюс, в Windows всегда в начале прописывается диск (`C:` или иные)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Иногда удобно положить файл, с которым мы будем работать, в рабочую папку. Можно явно переместить файл из папки в папку, но при работе в Jupyter можно сделать проще ‒ воспользоваться кнопкой *Upload* на странице *Home*. Кто пользуется командной строкой, есть альтернатива: запустить сам Jupyter Notebook из той папки, где хранятся файлы для работы.\n", "\n", "А так можно изменить рабочую папку, прописав новый путь:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "os.chdir(\"/Users/allat/Documents/github/CognTech/\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь перейдем к загрузке самого файла. Воспользуемся функцией `read_csv()`. \n", "\n", "*Для тех, кто чаще работает в R:* следите за написанием этой функции, есть соблазн написать `read.csv()`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"scores2.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В файле `scores2.csv` сохранены оценки студентов-политологов по ряду курсов. Оценки реальные, взяты из кумулятивного рейтинга, но имена студентов зашифрованы ‒ вместо них задействованы номера студенческих билетов. Посмотрим на базу данных:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idcatpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
0М141БПЛТЛ024798898108.07997.088.06101
1М141БПЛТЛ03181010101010109.0910109.088.09101
2М141БПЛТЛ0759991091098.091099.088.0791
3М141БПЛТЛ017998899106.09998.088.0890
4М141БПЛТЛ06910101010101098.081097.065.08101
5М141БПЛТЛ0721098109898.081097.088.0990
6М141БПЛТЛ020877691088.07797.086.0891
7М141БПЛТЛ0267108710798.08888.087.0780
8М141БПЛТЛ07379889898.08997.076.01091
9М141БПЛТЛ078669561076.08696.088.0670
10М141БПЛТЛ06078779885.07585.078.0791
11М141БПЛТЛ04069869786.09585.085.07100
12М141БПЛТЛ06599848879.085109.088.0691
13М141БПЛТЛ05367759878.08687.086.0990
14М141БПЛТЛ01569769794.07776.077.01070
15М141БПЛТЛ02189889887.07766.086.0780
16М141БПЛТЛ01877979786.06787.077.0780
17М141БПЛТЛ03998988868.07696.078.0491
18М141БПЛТЛ036810788694.08876.076.0781
19М141БПЛТЛ04967668684.08596.085.0680
20061140438810588810.0779NaN78.0781
21М141БПЛТЛ04886869644.06484.067.0780
22М141БПЛТЛ03469769686.07665.085.0890
23М141БПЛТЛ04558878676.07786.086.0580
24М141БПЛТЛ03359879797.07887.085.0780
25М141БПЛТЛ08355658765.07575.075.0470
26М141БПЛТЛ0081088981098.091098.055.01041
27М141БПЛТЛ001677410776.08684.066.0480
28М141БПЛТЛ03879649676.07484.054.0971
29М141БПЛТЛ05277778666.08675.086.0571
30М141БПЛТЛ01176869665.06676.086.0580
31М141БПЛТЛ00477668665.05565.075.0880
32М141БПЛТЛ01066769776.07586.086.0581
33М141БПЛТЛ07169779684.06776.05NaN570
34М141БПЛТЛ03556768554.06675.087.0670
35М141БПЛТЛ03076667664.08555.085.0791
36М141БПЛТЛ07055648655.06456.085.0670
37М141БПЛТЛ05189868767.06665.044.0551
38М141БПЛТЛ04657747585.07575.084.0570
39М141БПЛТЛ04758647595.06464.074.0880
40М141БПЛТЛ06355648444.05454.075.0880
41М141БПЛТЛ02968879567.06585.074.0570
42М141БПЛТЛ06478676684.06444.065.0470
43М141БПЛТЛ07677868666.08685.074.0460
44М141БПЛТЛ06277769665.06564.055.0460
45М141БПЛТЛ07456747656.06686.066.0881
4613023203867658484.08455.064.0560
47М141БПЛТЛ02379689694.07776.044.0751
48М141БПЛТЛ05478648644.06484.044.0481
49М141БПЛТЛ012667410654.07574.054.0481
50М141БПЛТЛ00665658555.06475.075.0680
51М141БПЛТЛ05565647748.05464.065.0451
52М141БПЛТЛ00767767674.05565.045.0471
53М141БПЛТЛ05086668454.05564.054.0660
54М141БПЛТЛ066710779584.06564.064.0560
55М141БПЛТЛ04355658565.06454.05NaN460
56М141БПЛТЛ0846784855NaN8444.044.0671
57М141БПЛТЛ00557557474.05455.044.0481
58М141БПЛТЛ04445746445.04444.06NaN551
591305103854449555.0544NaN74.0441
\n", "
" ], "text/plain": [ " id catps mstat soc econ eng polth mstat2 phist law \\\n", "0 М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 \n", "1 М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 \n", "2 М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 \n", "3 М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 \n", "4 М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 \n", "5 М141БПЛТЛ072 10 9 8 10 9 8 9 8.0 8 \n", "6 М141БПЛТЛ020 8 7 7 6 9 10 8 8.0 7 \n", "7 М141БПЛТЛ026 7 10 8 7 10 7 9 8.0 8 \n", "8 М141БПЛТЛ073 7 9 8 8 9 8 9 8.0 8 \n", "9 М141БПЛТЛ078 6 6 9 5 6 10 7 6.0 8 \n", "10 М141БПЛТЛ060 7 8 7 7 9 8 8 5.0 7 \n", "11 М141БПЛТЛ040 6 9 8 6 9 7 8 6.0 9 \n", "12 М141БПЛТЛ065 9 9 8 4 8 8 7 9.0 8 \n", "13 М141БПЛТЛ053 6 7 7 5 9 8 7 8.0 8 \n", "14 М141БПЛТЛ015 6 9 7 6 9 7 9 4.0 7 \n", "15 М141БПЛТЛ021 8 9 8 8 9 8 8 7.0 7 \n", "16 М141БПЛТЛ018 7 7 9 7 9 7 8 6.0 6 \n", "17 М141БПЛТЛ039 9 8 9 8 8 8 6 8.0 7 \n", "18 М141БПЛТЛ036 8 10 7 8 8 6 9 4.0 8 \n", "19 М141БПЛТЛ049 6 7 6 6 8 6 8 4.0 8 \n", "20 06114043 8 8 10 5 8 8 8 10.0 7 \n", "21 М141БПЛТЛ048 8 6 8 6 9 6 4 4.0 6 \n", "22 М141БПЛТЛ034 6 9 7 6 9 6 8 6.0 7 \n", "23 М141БПЛТЛ045 5 8 8 7 8 6 7 6.0 7 \n", "24 М141БПЛТЛ033 5 9 8 7 9 7 9 7.0 7 \n", "25 М141БПЛТЛ083 5 5 6 5 8 7 6 5.0 7 \n", "26 М141БПЛТЛ008 10 8 8 9 8 10 9 8.0 9 \n", "27 М141БПЛТЛ001 6 7 7 4 10 7 7 6.0 8 \n", "28 М141БПЛТЛ038 7 9 6 4 9 6 7 6.0 7 \n", "29 М141БПЛТЛ052 7 7 7 7 8 6 6 6.0 8 \n", "30 М141БПЛТЛ011 7 6 8 6 9 6 6 5.0 6 \n", "31 М141БПЛТЛ004 7 7 6 6 8 6 6 5.0 5 \n", "32 М141БПЛТЛ010 6 6 7 6 9 7 7 6.0 7 \n", "33 М141БПЛТЛ071 6 9 7 7 9 6 8 4.0 6 \n", "34 М141БПЛТЛ035 5 6 7 6 8 5 5 4.0 6 \n", "35 М141БПЛТЛ030 7 6 6 6 7 6 6 4.0 8 \n", "36 М141БПЛТЛ070 5 5 6 4 8 6 5 5.0 6 \n", "37 М141БПЛТЛ051 8 9 8 6 8 7 6 7.0 6 \n", "38 М141БПЛТЛ046 5 7 7 4 7 5 8 5.0 7 \n", "39 М141БПЛТЛ047 5 8 6 4 7 5 9 5.0 6 \n", "40 М141БПЛТЛ063 5 5 6 4 8 4 4 4.0 5 \n", "41 М141БПЛТЛ029 6 8 8 7 9 5 6 7.0 6 \n", "42 М141БПЛТЛ064 7 8 6 7 6 6 8 4.0 6 \n", "43 М141БПЛТЛ076 7 7 8 6 8 6 6 6.0 8 \n", "44 М141БПЛТЛ062 7 7 7 6 9 6 6 5.0 6 \n", "45 М141БПЛТЛ074 5 6 7 4 7 6 5 6.0 6 \n", "46 130232038 6 7 6 5 8 4 8 4.0 8 \n", "47 М141БПЛТЛ023 7 9 6 8 9 6 9 4.0 7 \n", "48 М141БПЛТЛ054 7 8 6 4 8 6 4 4.0 6 \n", "49 М141БПЛТЛ012 6 6 7 4 10 6 5 4.0 7 \n", "50 М141БПЛТЛ006 6 5 6 5 8 5 5 5.0 6 \n", "51 М141БПЛТЛ055 6 5 6 4 7 7 4 8.0 5 \n", "52 М141БПЛТЛ007 6 7 7 6 7 6 7 4.0 5 \n", "53 М141БПЛТЛ050 8 6 6 6 8 4 5 4.0 5 \n", "54 М141БПЛТЛ066 7 10 7 7 9 5 8 4.0 6 \n", "55 М141БПЛТЛ043 5 5 6 5 8 5 6 5.0 6 \n", "56 М141БПЛТЛ084 6 7 8 4 8 5 5 NaN 8 \n", "57 М141БПЛТЛ005 5 7 5 5 7 4 7 4.0 5 \n", "58 М141БПЛТЛ044 4 5 7 4 6 4 4 5.0 4 \n", "59 13051038 5 4 4 4 9 5 5 5.0 5 \n", "\n", " phil polsoc ptheo preg compp game wpol male \n", "0 9 9 7.0 8 8.0 6 10 1 \n", "1 10 10 9.0 8 8.0 9 10 1 \n", "2 10 9 9.0 8 8.0 7 9 1 \n", "3 9 9 8.0 8 8.0 8 9 0 \n", "4 10 9 7.0 6 5.0 8 10 1 \n", "5 10 9 7.0 8 8.0 9 9 0 \n", "6 7 9 7.0 8 6.0 8 9 1 \n", "7 8 8 8.0 8 7.0 7 8 0 \n", "8 9 9 7.0 7 6.0 10 9 1 \n", "9 6 9 6.0 8 8.0 6 7 0 \n", "10 5 8 5.0 7 8.0 7 9 1 \n", "11 5 8 5.0 8 5.0 7 10 0 \n", "12 5 10 9.0 8 8.0 6 9 1 \n", "13 6 8 7.0 8 6.0 9 9 0 \n", "14 7 7 6.0 7 7.0 10 7 0 \n", "15 7 6 6.0 8 6.0 7 8 0 \n", "16 7 8 7.0 7 7.0 7 8 0 \n", "17 6 9 6.0 7 8.0 4 9 1 \n", "18 8 7 6.0 7 6.0 7 8 1 \n", "19 5 9 6.0 8 5.0 6 8 0 \n", "20 7 9 NaN 7 8.0 7 8 1 \n", "21 4 8 4.0 6 7.0 7 8 0 \n", "22 6 6 5.0 8 5.0 8 9 0 \n", "23 7 8 6.0 8 6.0 5 8 0 \n", "24 8 8 7.0 8 5.0 7 8 0 \n", "25 5 7 5.0 7 5.0 4 7 0 \n", "26 10 9 8.0 5 5.0 10 4 1 \n", "27 6 8 4.0 6 6.0 4 8 0 \n", "28 4 8 4.0 5 4.0 9 7 1 \n", "29 6 7 5.0 8 6.0 5 7 1 \n", "30 6 7 6.0 8 6.0 5 8 0 \n", "31 5 6 5.0 7 5.0 8 8 0 \n", "32 5 8 6.0 8 6.0 5 8 1 \n", "33 7 7 6.0 5 NaN 5 7 0 \n", "34 6 7 5.0 8 7.0 6 7 0 \n", "35 5 5 5.0 8 5.0 7 9 1 \n", "36 4 5 6.0 8 5.0 6 7 0 \n", "37 6 6 5.0 4 4.0 5 5 1 \n", "38 5 7 5.0 8 4.0 5 7 0 \n", "39 4 6 4.0 7 4.0 8 8 0 \n", "40 4 5 4.0 7 5.0 8 8 0 \n", "41 5 8 5.0 7 4.0 5 7 0 \n", "42 4 4 4.0 6 5.0 4 7 0 \n", "43 6 8 5.0 7 4.0 4 6 0 \n", "44 5 6 4.0 5 5.0 4 6 0 \n", "45 6 8 6.0 6 6.0 8 8 1 \n", "46 4 5 5.0 6 4.0 5 6 0 \n", "47 7 7 6.0 4 4.0 7 5 1 \n", "48 4 8 4.0 4 4.0 4 8 1 \n", "49 5 7 4.0 5 4.0 4 8 1 \n", "50 4 7 5.0 7 5.0 6 8 0 \n", "51 4 6 4.0 6 5.0 4 5 1 \n", "52 5 6 5.0 4 5.0 4 7 1 \n", "53 5 6 4.0 5 4.0 6 6 0 \n", "54 5 6 4.0 6 4.0 5 6 0 \n", "55 4 5 4.0 5 NaN 4 6 0 \n", "56 4 4 4.0 4 4.0 6 7 1 \n", "57 4 5 5.0 4 4.0 4 8 1 \n", "58 4 4 4.0 6 NaN 5 5 1 \n", "59 4 4 NaN 7 4.0 4 4 1 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Так как в нашем случае таблица не очень большая, Python вывел ее на экран полностью. Если строк или столбцов было бы слишком много, Python вывел бы несколько первых и последних, а в середине бы поставил многоточие." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Кроме того, можно вывести первые или последние строки таблицы, используя методы `.head()` и `.tail()`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idcatpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
0М141БПЛТЛ024798898108.07997.088.06101
1М141БПЛТЛ03181010101010109.0910109.088.09101
2М141БПЛТЛ0759991091098.091099.088.0791
3М141БПЛТЛ017998899106.09998.088.0890
4М141БПЛТЛ06910101010101098.081097.065.08101
\n", "
" ], "text/plain": [ " id catps mstat soc econ eng polth mstat2 phist law \\\n", "0 М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 \n", "1 М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 \n", "2 М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 \n", "3 М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 \n", "4 М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 \n", "\n", " phil polsoc ptheo preg compp game wpol male \n", "0 9 9 7.0 8 8.0 6 10 1 \n", "1 10 10 9.0 8 8.0 9 10 1 \n", "2 10 9 9.0 8 8.0 7 9 1 \n", "3 9 9 8.0 8 8.0 8 9 0 \n", "4 10 9 7.0 6 5.0 8 10 1 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idcatpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
55М141БПЛТЛ04355658565.06454.05NaN460
56М141БПЛТЛ0846784855NaN8444.044.0671
57М141БПЛТЛ00557557474.05455.044.0481
58М141БПЛТЛ04445746445.04444.06NaN551
591305103854449555.0544NaN74.0441
\n", "
" ], "text/plain": [ " id catps mstat soc econ eng polth mstat2 phist law \\\n", "55 М141БПЛТЛ043 5 5 6 5 8 5 6 5.0 6 \n", "56 М141БПЛТЛ084 6 7 8 4 8 5 5 NaN 8 \n", "57 М141БПЛТЛ005 5 7 5 5 7 4 7 4.0 5 \n", "58 М141БПЛТЛ044 4 5 7 4 6 4 4 5.0 4 \n", "59 13051038 5 4 4 4 9 5 5 5.0 5 \n", "\n", " phil polsoc ptheo preg compp game wpol male \n", "55 4 5 4.0 5 NaN 4 6 0 \n", "56 4 4 4.0 4 4.0 6 7 1 \n", "57 4 5 5.0 4 4.0 4 8 1 \n", "58 4 4 4.0 6 NaN 5 5 1 \n", "59 4 4 NaN 7 4.0 4 4 1 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Внимание:** это просто первые и последние строки таблицы «как есть». Никакой сортировки не происходит! \n", "\n", "По умолчанию эти методы выводят пять строк, но при желании это легко изменить. Достаточно в скобках указать желаемое число строк." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idcatpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
0М141БПЛТЛ024798898108.07997.088.06101
1М141БПЛТЛ03181010101010109.0910109.088.09101
2М141БПЛТЛ0759991091098.091099.088.0791
3М141БПЛТЛ017998899106.09998.088.0890
4М141БПЛТЛ06910101010101098.081097.065.08101
5М141БПЛТЛ0721098109898.081097.088.0990
6М141БПЛТЛ020877691088.07797.086.0891
7М141БПЛТЛ0267108710798.08888.087.0780
8М141БПЛТЛ07379889898.08997.076.01091
9М141БПЛТЛ078669561076.08696.088.0670
\n", "
" ], "text/plain": [ " id catps mstat soc econ eng polth mstat2 phist law \\\n", "0 М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 \n", "1 М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 \n", "2 М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 \n", "3 М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 \n", "4 М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 \n", "5 М141БПЛТЛ072 10 9 8 10 9 8 9 8.0 8 \n", "6 М141БПЛТЛ020 8 7 7 6 9 10 8 8.0 7 \n", "7 М141БПЛТЛ026 7 10 8 7 10 7 9 8.0 8 \n", "8 М141БПЛТЛ073 7 9 8 8 9 8 9 8.0 8 \n", "9 М141БПЛТЛ078 6 6 9 5 6 10 7 6.0 8 \n", "\n", " phil polsoc ptheo preg compp game wpol male \n", "0 9 9 7.0 8 8.0 6 10 1 \n", "1 10 10 9.0 8 8.0 9 10 1 \n", "2 10 9 9.0 8 8.0 7 9 1 \n", "3 9 9 8.0 8 8.0 8 9 0 \n", "4 10 9 7.0 6 5.0 8 10 1 \n", "5 10 9 7.0 8 8.0 9 9 0 \n", "6 7 9 7.0 8 6.0 8 9 1 \n", "7 8 8 8.0 8 7.0 7 8 0 \n", "8 9 9 7.0 7 6.0 10 9 1 \n", "9 6 9 6.0 8 8.0 6 7 0 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(10) # первые 10 строк" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Описание показателей (переменных):**\n", " \n", "* id ‒ номер студенческого билета\n", "* catps\t‒ оценка по курсу *Категории политической науки*\n", "* mstat\t‒ оценка по курсу *Математика и статистика*\n", "* soc ‒\tоценка по курсу *Социология*\n", "* econ\t‒ оценка по курсу *Экономика*\n", "* eng\t‒ оценка по курсу *Английский язык*\n", "* polth\t‒ оценка по курсу *История политических учений*\n", "* mstat2\t‒ оценка по курсу *Математика и статистика (часть 2)*\n", "* phist\t‒ оценка по курсу *Политическая история*\n", "* law\t‒ оценка по курсу *Право*\n", "* phil\t‒ оценка по курсу *Философия*\n", "* polsoc\t‒ оценка по курсу *Политическая социология*\n", "* ptheo\t‒ оценка по курсу *Политическая теория*\n", "* preg\t‒ оценка по курсу *Политическая регионалистика*\n", "* compp\t‒ оценка по курсу *Сравнительная политика*\n", "* game\t‒ оценка по курсу *Теория игр*\n", "* wpol\t‒ оценка по курсу *Мировая политика и международные отношения*\n", "* male ‒ пол (1 ‒ мужской, 0 ‒ женский)\n", "\n", "Давайте кое-что подкорректруем. Сделаем так, чтобы строки в таблице назывались в соответствии с `id`. Другими словами, сделаем так, чтобы первый столбец считался индексом строки:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"scores2.csv\", index_col = 0)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
catpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
id
М141БПЛТЛ024798898108.07997.088.06101
М141БПЛТЛ03181010101010109.0910109.088.09101
М141БПЛТЛ0759991091098.091099.088.0791
М141БПЛТЛ017998899106.09998.088.0890
М141БПЛТЛ06910101010101098.081097.065.08101
М141БПЛТЛ0721098109898.081097.088.0990
М141БПЛТЛ020877691088.07797.086.0891
М141БПЛТЛ0267108710798.08888.087.0780
М141БПЛТЛ07379889898.08997.076.01091
М141БПЛТЛ078669561076.08696.088.0670
М141БПЛТЛ06078779885.07585.078.0791
М141БПЛТЛ04069869786.09585.085.07100
М141БПЛТЛ06599848879.085109.088.0691
М141БПЛТЛ05367759878.08687.086.0990
М141БПЛТЛ01569769794.07776.077.01070
М141БПЛТЛ02189889887.07766.086.0780
М141БПЛТЛ01877979786.06787.077.0780
М141БПЛТЛ03998988868.07696.078.0491
М141БПЛТЛ036810788694.08876.076.0781
М141БПЛТЛ04967668684.08596.085.0680
061140438810588810.0779NaN78.0781
М141БПЛТЛ04886869644.06484.067.0780
М141БПЛТЛ03469769686.07665.085.0890
М141БПЛТЛ04558878676.07786.086.0580
М141БПЛТЛ03359879797.07887.085.0780
М141БПЛТЛ08355658765.07575.075.0470
М141БПЛТЛ0081088981098.091098.055.01041
М141БПЛТЛ001677410776.08684.066.0480
М141БПЛТЛ03879649676.07484.054.0971
М141БПЛТЛ05277778666.08675.086.0571
М141БПЛТЛ01176869665.06676.086.0580
М141БПЛТЛ00477668665.05565.075.0880
М141БПЛТЛ01066769776.07586.086.0581
М141БПЛТЛ07169779684.06776.05NaN570
М141БПЛТЛ03556768554.06675.087.0670
М141БПЛТЛ03076667664.08555.085.0791
М141БПЛТЛ07055648655.06456.085.0670
М141БПЛТЛ05189868767.06665.044.0551
М141БПЛТЛ04657747585.07575.084.0570
М141БПЛТЛ04758647595.06464.074.0880
М141БПЛТЛ06355648444.05454.075.0880
М141БПЛТЛ02968879567.06585.074.0570
М141БПЛТЛ06478676684.06444.065.0470
М141БПЛТЛ07677868666.08685.074.0460
М141БПЛТЛ06277769665.06564.055.0460
М141БПЛТЛ07456747656.06686.066.0881
13023203867658484.08455.064.0560
М141БПЛТЛ02379689694.07776.044.0751
М141БПЛТЛ05478648644.06484.044.0481
М141БПЛТЛ012667410654.07574.054.0481
М141БПЛТЛ00665658555.06475.075.0680
М141БПЛТЛ05565647748.05464.065.0451
М141БПЛТЛ00767767674.05565.045.0471
М141БПЛТЛ05086668454.05564.054.0660
М141БПЛТЛ066710779584.06564.064.0560
М141БПЛТЛ04355658565.06454.05NaN460
М141БПЛТЛ0846784855NaN8444.044.0671
М141БПЛТЛ00557557474.05455.044.0481
М141БПЛТЛ04445746445.04444.06NaN551
1305103854449555.0544NaN74.0441
\n", "
" ], "text/plain": [ " catps mstat soc econ eng polth mstat2 phist law phil \\\n", "id \n", "М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 9 \n", "М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 10 \n", "М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 10 \n", "М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 9 \n", "М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 10 \n", "М141БПЛТЛ072 10 9 8 10 9 8 9 8.0 8 10 \n", "М141БПЛТЛ020 8 7 7 6 9 10 8 8.0 7 7 \n", "М141БПЛТЛ026 7 10 8 7 10 7 9 8.0 8 8 \n", "М141БПЛТЛ073 7 9 8 8 9 8 9 8.0 8 9 \n", "М141БПЛТЛ078 6 6 9 5 6 10 7 6.0 8 6 \n", "М141БПЛТЛ060 7 8 7 7 9 8 8 5.0 7 5 \n", "М141БПЛТЛ040 6 9 8 6 9 7 8 6.0 9 5 \n", "М141БПЛТЛ065 9 9 8 4 8 8 7 9.0 8 5 \n", "М141БПЛТЛ053 6 7 7 5 9 8 7 8.0 8 6 \n", "М141БПЛТЛ015 6 9 7 6 9 7 9 4.0 7 7 \n", "М141БПЛТЛ021 8 9 8 8 9 8 8 7.0 7 7 \n", "М141БПЛТЛ018 7 7 9 7 9 7 8 6.0 6 7 \n", "М141БПЛТЛ039 9 8 9 8 8 8 6 8.0 7 6 \n", "М141БПЛТЛ036 8 10 7 8 8 6 9 4.0 8 8 \n", "М141БПЛТЛ049 6 7 6 6 8 6 8 4.0 8 5 \n", "06114043 8 8 10 5 8 8 8 10.0 7 7 \n", "М141БПЛТЛ048 8 6 8 6 9 6 4 4.0 6 4 \n", "М141БПЛТЛ034 6 9 7 6 9 6 8 6.0 7 6 \n", "М141БПЛТЛ045 5 8 8 7 8 6 7 6.0 7 7 \n", "М141БПЛТЛ033 5 9 8 7 9 7 9 7.0 7 8 \n", "М141БПЛТЛ083 5 5 6 5 8 7 6 5.0 7 5 \n", "М141БПЛТЛ008 10 8 8 9 8 10 9 8.0 9 10 \n", "М141БПЛТЛ001 6 7 7 4 10 7 7 6.0 8 6 \n", "М141БПЛТЛ038 7 9 6 4 9 6 7 6.0 7 4 \n", "М141БПЛТЛ052 7 7 7 7 8 6 6 6.0 8 6 \n", "М141БПЛТЛ011 7 6 8 6 9 6 6 5.0 6 6 \n", "М141БПЛТЛ004 7 7 6 6 8 6 6 5.0 5 5 \n", "М141БПЛТЛ010 6 6 7 6 9 7 7 6.0 7 5 \n", "М141БПЛТЛ071 6 9 7 7 9 6 8 4.0 6 7 \n", "М141БПЛТЛ035 5 6 7 6 8 5 5 4.0 6 6 \n", "М141БПЛТЛ030 7 6 6 6 7 6 6 4.0 8 5 \n", "М141БПЛТЛ070 5 5 6 4 8 6 5 5.0 6 4 \n", "М141БПЛТЛ051 8 9 8 6 8 7 6 7.0 6 6 \n", "М141БПЛТЛ046 5 7 7 4 7 5 8 5.0 7 5 \n", "М141БПЛТЛ047 5 8 6 4 7 5 9 5.0 6 4 \n", "М141БПЛТЛ063 5 5 6 4 8 4 4 4.0 5 4 \n", "М141БПЛТЛ029 6 8 8 7 9 5 6 7.0 6 5 \n", "М141БПЛТЛ064 7 8 6 7 6 6 8 4.0 6 4 \n", "М141БПЛТЛ076 7 7 8 6 8 6 6 6.0 8 6 \n", "М141БПЛТЛ062 7 7 7 6 9 6 6 5.0 6 5 \n", "М141БПЛТЛ074 5 6 7 4 7 6 5 6.0 6 6 \n", "130232038 6 7 6 5 8 4 8 4.0 8 4 \n", "М141БПЛТЛ023 7 9 6 8 9 6 9 4.0 7 7 \n", "М141БПЛТЛ054 7 8 6 4 8 6 4 4.0 6 4 \n", "М141БПЛТЛ012 6 6 7 4 10 6 5 4.0 7 5 \n", "М141БПЛТЛ006 6 5 6 5 8 5 5 5.0 6 4 \n", "М141БПЛТЛ055 6 5 6 4 7 7 4 8.0 5 4 \n", "М141БПЛТЛ007 6 7 7 6 7 6 7 4.0 5 5 \n", "М141БПЛТЛ050 8 6 6 6 8 4 5 4.0 5 5 \n", "М141БПЛТЛ066 7 10 7 7 9 5 8 4.0 6 5 \n", "М141БПЛТЛ043 5 5 6 5 8 5 6 5.0 6 4 \n", "М141БПЛТЛ084 6 7 8 4 8 5 5 NaN 8 4 \n", "М141БПЛТЛ005 5 7 5 5 7 4 7 4.0 5 4 \n", "М141БПЛТЛ044 4 5 7 4 6 4 4 5.0 4 4 \n", "13051038 5 4 4 4 9 5 5 5.0 5 4 \n", "\n", " polsoc ptheo preg compp game wpol male \n", "id \n", "М141БПЛТЛ024 9 7.0 8 8.0 6 10 1 \n", "М141БПЛТЛ031 10 9.0 8 8.0 9 10 1 \n", "М141БПЛТЛ075 9 9.0 8 8.0 7 9 1 \n", "М141БПЛТЛ017 9 8.0 8 8.0 8 9 0 \n", "М141БПЛТЛ069 9 7.0 6 5.0 8 10 1 \n", "М141БПЛТЛ072 9 7.0 8 8.0 9 9 0 \n", "М141БПЛТЛ020 9 7.0 8 6.0 8 9 1 \n", "М141БПЛТЛ026 8 8.0 8 7.0 7 8 0 \n", "М141БПЛТЛ073 9 7.0 7 6.0 10 9 1 \n", "М141БПЛТЛ078 9 6.0 8 8.0 6 7 0 \n", "М141БПЛТЛ060 8 5.0 7 8.0 7 9 1 \n", "М141БПЛТЛ040 8 5.0 8 5.0 7 10 0 \n", "М141БПЛТЛ065 10 9.0 8 8.0 6 9 1 \n", "М141БПЛТЛ053 8 7.0 8 6.0 9 9 0 \n", "М141БПЛТЛ015 7 6.0 7 7.0 10 7 0 \n", "М141БПЛТЛ021 6 6.0 8 6.0 7 8 0 \n", "М141БПЛТЛ018 8 7.0 7 7.0 7 8 0 \n", "М141БПЛТЛ039 9 6.0 7 8.0 4 9 1 \n", "М141БПЛТЛ036 7 6.0 7 6.0 7 8 1 \n", "М141БПЛТЛ049 9 6.0 8 5.0 6 8 0 \n", "06114043 9 NaN 7 8.0 7 8 1 \n", "М141БПЛТЛ048 8 4.0 6 7.0 7 8 0 \n", "М141БПЛТЛ034 6 5.0 8 5.0 8 9 0 \n", "М141БПЛТЛ045 8 6.0 8 6.0 5 8 0 \n", "М141БПЛТЛ033 8 7.0 8 5.0 7 8 0 \n", "М141БПЛТЛ083 7 5.0 7 5.0 4 7 0 \n", "М141БПЛТЛ008 9 8.0 5 5.0 10 4 1 \n", "М141БПЛТЛ001 8 4.0 6 6.0 4 8 0 \n", "М141БПЛТЛ038 8 4.0 5 4.0 9 7 1 \n", "М141БПЛТЛ052 7 5.0 8 6.0 5 7 1 \n", "М141БПЛТЛ011 7 6.0 8 6.0 5 8 0 \n", "М141БПЛТЛ004 6 5.0 7 5.0 8 8 0 \n", "М141БПЛТЛ010 8 6.0 8 6.0 5 8 1 \n", "М141БПЛТЛ071 7 6.0 5 NaN 5 7 0 \n", "М141БПЛТЛ035 7 5.0 8 7.0 6 7 0 \n", "М141БПЛТЛ030 5 5.0 8 5.0 7 9 1 \n", "М141БПЛТЛ070 5 6.0 8 5.0 6 7 0 \n", "М141БПЛТЛ051 6 5.0 4 4.0 5 5 1 \n", "М141БПЛТЛ046 7 5.0 8 4.0 5 7 0 \n", "М141БПЛТЛ047 6 4.0 7 4.0 8 8 0 \n", "М141БПЛТЛ063 5 4.0 7 5.0 8 8 0 \n", "М141БПЛТЛ029 8 5.0 7 4.0 5 7 0 \n", "М141БПЛТЛ064 4 4.0 6 5.0 4 7 0 \n", "М141БПЛТЛ076 8 5.0 7 4.0 4 6 0 \n", "М141БПЛТЛ062 6 4.0 5 5.0 4 6 0 \n", "М141БПЛТЛ074 8 6.0 6 6.0 8 8 1 \n", "130232038 5 5.0 6 4.0 5 6 0 \n", "М141БПЛТЛ023 7 6.0 4 4.0 7 5 1 \n", "М141БПЛТЛ054 8 4.0 4 4.0 4 8 1 \n", "М141БПЛТЛ012 7 4.0 5 4.0 4 8 1 \n", "М141БПЛТЛ006 7 5.0 7 5.0 6 8 0 \n", "М141БПЛТЛ055 6 4.0 6 5.0 4 5 1 \n", "М141БПЛТЛ007 6 5.0 4 5.0 4 7 1 \n", "М141БПЛТЛ050 6 4.0 5 4.0 6 6 0 \n", "М141БПЛТЛ066 6 4.0 6 4.0 5 6 0 \n", "М141БПЛТЛ043 5 4.0 5 NaN 4 6 0 \n", "М141БПЛТЛ084 4 4.0 4 4.0 6 7 1 \n", "М141БПЛТЛ005 5 5.0 4 4.0 4 8 1 \n", "М141БПЛТЛ044 4 4.0 6 NaN 5 5 1 \n", "13051038 4 NaN 7 4.0 4 4 1 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df # теперь так" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Иногда такой подход может быть полезен. Представьте, что все переменные в таблице, кроме *id*, измерены в количественной шкале, и мы планируем реализовать на них статистический метод, который работает исключительно с числовыми данными. Если мы просто выкинем столбец с *id*, мы потеряем информацию о наблюдении, если мы его оставим, нам придется собирать в отдельную таблицу показатели, к которым будем применять метод, так как сохраненный в исходной таблице текст будет мешать. Если же мы назовем строки в соответствии с *id*, мы убьем сразу двух зайцев: избавимся от столбца с текстом и не потеряем информацию о наблюдении (код, имя респондента, название страны и прочее)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Какую сводную информацию по таблице можно получить? Например, число переменных (столбцов) и наблюдений (строк), а также число заполненных значений. " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 60 entries, М141БПЛТЛ024 to 13051038\n", "Data columns (total 17 columns):\n", "catps 60 non-null int64\n", "mstat 60 non-null int64\n", "soc 60 non-null int64\n", "econ 60 non-null int64\n", "eng 60 non-null int64\n", "polth 60 non-null int64\n", "mstat2 60 non-null int64\n", "phist 59 non-null float64\n", "law 60 non-null int64\n", "phil 60 non-null int64\n", "polsoc 60 non-null int64\n", "ptheo 58 non-null float64\n", "preg 60 non-null int64\n", "compp 57 non-null float64\n", "game 60 non-null int64\n", "wpol 60 non-null int64\n", "male 60 non-null int64\n", "dtypes: float64(3), int64(14)\n", "memory usage: 8.4+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Какую информацию выдал метод `.info()`? Во-первых, он сообщил нам, что `df` является объектом *DataFrame*. Во-вторых, он вывел число строк (`60 entries`) и показал их индексы (`М141БПЛТЛ024 to 13051038`). В-третьих, он вывел число столбцов (`total 17 columns`). Наконец, он выдал информацию по каждому столбцу. Остановимся на этом поподробнее.\n", "\n", "В выдаче выше представлено, сколько непустых элементов содержится в каждом столбце. Непустые элементы `non-null` ‒ это всё, кроме пропущенных значений, которые кодируются особым образом (`NaN` ‒ от * **n**ot **a** **n**umber*). В нашей таблице почти все столбцы заполнены полностью: 60 ненулевых элементов из 60. Но есть столбцы с пропущенными значениями: *phist*, *ptheo*, *compp*.\n", "\n", "Далее указан тип каждого столбца, целочисленный `int64` и с плавающей точкой`float64`. Что означают числа в конце? Это объем памяти, который требуется для хранения." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сводную статистическую информацию можно получить с помощью метода `.describe()`." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
catpsmstatsoceconengpolthmstat2phistlawphilpolsocptheopregcomppgamewpolmale
count60.00000060.00000060.00000060.00000060.00000060.00000060.00000059.00000060.00000060.00000060.00000058.00000060.00000057.00000060.00000060.00000060.000000
mean6.7000007.4666677.2166676.1166678.3500006.6000007.0333335.8305086.8666675.9666677.1833335.6034486.7000005.6315796.2500007.5666670.450000
std1.4178041.5780991.2086081.7182140.9711951.6385191.7070811.6624921.2138561.8500271.5890691.4134651.3567161.4221661.7814961.4304990.501692
min4.0000004.0000004.0000004.0000006.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000004.0000000.000000
25%6.0000006.0000006.0000005.0000008.0000006.0000006.0000004.0000006.0000004.7500006.0000004.2500006.0000004.0000005.0000007.0000000.000000
50%7.0000007.0000007.0000006.0000008.0000006.0000007.0000006.0000007.0000005.5000007.0000005.0000007.0000005.0000006.0000008.0000000.000000
75%7.2500009.0000008.0000007.0000009.0000008.0000008.0000007.0000008.0000007.0000008.0000006.0000008.0000007.0000007.2500008.2500001.000000
max10.00000010.00000010.00000010.00000010.00000010.00000010.00000010.0000009.00000010.00000010.0000009.0000008.0000008.00000010.00000010.0000001.000000
\n", "
" ], "text/plain": [ " catps mstat soc econ eng polth \\\n", "count 60.000000 60.000000 60.000000 60.000000 60.000000 60.000000 \n", "mean 6.700000 7.466667 7.216667 6.116667 8.350000 6.600000 \n", "std 1.417804 1.578099 1.208608 1.718214 0.971195 1.638519 \n", "min 4.000000 4.000000 4.000000 4.000000 6.000000 4.000000 \n", "25% 6.000000 6.000000 6.000000 5.000000 8.000000 6.000000 \n", "50% 7.000000 7.000000 7.000000 6.000000 8.000000 6.000000 \n", "75% 7.250000 9.000000 8.000000 7.000000 9.000000 8.000000 \n", "max 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 \n", "\n", " mstat2 phist law phil polsoc ptheo \\\n", "count 60.000000 59.000000 60.000000 60.000000 60.000000 58.000000 \n", "mean 7.033333 5.830508 6.866667 5.966667 7.183333 5.603448 \n", "std 1.707081 1.662492 1.213856 1.850027 1.589069 1.413465 \n", "min 4.000000 4.000000 4.000000 4.000000 4.000000 4.000000 \n", "25% 6.000000 4.000000 6.000000 4.750000 6.000000 4.250000 \n", "50% 7.000000 6.000000 7.000000 5.500000 7.000000 5.000000 \n", "75% 8.000000 7.000000 8.000000 7.000000 8.000000 6.000000 \n", "max 10.000000 10.000000 9.000000 10.000000 10.000000 9.000000 \n", "\n", " preg compp game wpol male \n", "count 60.000000 57.000000 60.000000 60.000000 60.000000 \n", "mean 6.700000 5.631579 6.250000 7.566667 0.450000 \n", "std 1.356716 1.422166 1.781496 1.430499 0.501692 \n", "min 4.000000 4.000000 4.000000 4.000000 0.000000 \n", "25% 6.000000 4.000000 5.000000 7.000000 0.000000 \n", "50% 7.000000 5.000000 6.000000 8.000000 0.000000 \n", "75% 8.000000 7.000000 7.250000 8.250000 1.000000 \n", "max 8.000000 8.000000 10.000000 10.000000 1.000000 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В случае количественных показателей этот метод возвращает таблицу с основными описательными статистиками: \n", "\n", "* count ‒ число непустых (заполненных) значений\n", "* mean ‒ среднее арифметическое\n", "* std ‒ стандартное отклонение (показатель разброса данных относительно среднего значения)\n", "* min ‒ миниммальное значение\n", "* max ‒ максимальное значение\n", "* 25% ‒ нижний квартиль (значение, которое 25% значений не превышают)\n", "* 50% ‒ медиана (значение, которое 50% значений не превышают)\n", "* 75% ‒ верхний квартиль (значение, которое 75% значений не превышают)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Когда таблица большая, увидеть все столбцы разом не получится. Поэтому полезно знать, как получить список названий столбцов." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['catps', 'mstat', 'soc', 'econ', 'eng', 'polth', 'mstat2', 'phist',\n", " 'law', 'phil', 'polsoc', 'ptheo', 'preg', 'compp', 'game', 'wpol',\n", " 'male'],\n", " dtype='object')" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Обратите внимание: полученный объект не является обычным списком:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.indexes.base.Index" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(df.columns) # это Index из pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Чтобы получить список названий, достаточно сконвертировать тип с помощью привычного `list()`: " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['catps', 'mstat', 'soc', 'econ', 'eng', 'polth', 'mstat2', 'phist', 'law', 'phil', 'polsoc', 'ptheo', 'preg', 'compp', 'game', 'wpol', 'male']\n" ] } ], "source": [ "l = list(df.columns)\n", "print(l)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Аналогичная история со строками: " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['М141БПЛТЛ024', 'М141БПЛТЛ031', 'М141БПЛТЛ075', 'М141БПЛТЛ017',\n", " 'М141БПЛТЛ069', 'М141БПЛТЛ072', 'М141БПЛТЛ020', 'М141БПЛТЛ026',\n", " 'М141БПЛТЛ073', 'М141БПЛТЛ078', 'М141БПЛТЛ060', 'М141БПЛТЛ040',\n", " 'М141БПЛТЛ065', 'М141БПЛТЛ053', 'М141БПЛТЛ015', 'М141БПЛТЛ021',\n", " 'М141БПЛТЛ018', 'М141БПЛТЛ039', 'М141БПЛТЛ036', 'М141БПЛТЛ049',\n", " '06114043', 'М141БПЛТЛ048', 'М141БПЛТЛ034', 'М141БПЛТЛ045',\n", " 'М141БПЛТЛ033', 'М141БПЛТЛ083', 'М141БПЛТЛ008', 'М141БПЛТЛ001',\n", " 'М141БПЛТЛ038', 'М141БПЛТЛ052', 'М141БПЛТЛ011', 'М141БПЛТЛ004',\n", " 'М141БПЛТЛ010', 'М141БПЛТЛ071', 'М141БПЛТЛ035', 'М141БПЛТЛ030',\n", " 'М141БПЛТЛ070', 'М141БПЛТЛ051', 'М141БПЛТЛ046', 'М141БПЛТЛ047',\n", " 'М141БПЛТЛ063', 'М141БПЛТЛ029', 'М141БПЛТЛ064', 'М141БПЛТЛ076',\n", " 'М141БПЛТЛ062', 'М141БПЛТЛ074', '130232038', 'М141БПЛТЛ023',\n", " 'М141БПЛТЛ054', 'М141БПЛТЛ012', 'М141БПЛТЛ006', 'М141БПЛТЛ055',\n", " 'М141БПЛТЛ007', 'М141БПЛТЛ050', 'М141БПЛТЛ066', 'М141БПЛТЛ043',\n", " 'М141БПЛТЛ084', 'М141БПЛТЛ005', 'М141БПЛТЛ044', '13051038'],\n", " dtype='object', name='id')" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Переименование столбцов и строк" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Раз названия столбцов можно вывести в виде некоторого перечня, то этот перечень можно редактировать. Посмотрим на названия столбцов еще раз." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['catps', 'mstat', 'soc', 'econ', 'eng', 'polth', 'mstat2', 'phist',\n", " 'law', 'phil', 'polsoc', 'ptheo', 'preg', 'compp', 'game', 'wpol',\n", " 'male'],\n", " dtype='object')" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Давайте переименуем переменную `catps` в `cps`, чтобы думать о политической науке, а не о котах :) Для этого сохраним названия в список `my_cols` и изменим в списке первый элемент:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "my_cols = list(df.columns)\n", "my_cols[0] = \"cps\"" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['cps', 'mstat', 'soc', 'econ', 'eng', 'polth', 'mstat2', 'phist', 'law',\n", " 'phil', 'polsoc', 'ptheo', 'preg', 'compp', 'game', 'wpol', 'male'],\n", " dtype='object')" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns = my_cols # сохраним изменения в самой базе df\n", "df.columns # все обновилось!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Обратите внимание: для того, чтобы изменить одно или несколько названий, совсем необязательно создавать новый список «с нуля». Достаточно определить индексы нужных элементов и поправить только необходимые названия. \n", "\n", "Точно так же можно было поступить со строками. Но давайте лучше напишем функцию, которая будет делать все начальные буквы в названиях столбцов заглавными." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "def rename_cols(df):\n", " oldnames = list(df.columns) # список старых названий \n", " newnames = [i.capitalize() for i in oldnames] # список новых названий\n", " df.columns = newnames # сохранение изменений\n", " return df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь применим нашу функцию `rename_cols()` к базе `df`:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CpsMstatSocEconEngPolthMstat2PhistLawPhilPolsocPtheoPregComppGameWpolMale
id
М141БПЛТЛ024798898108.07997.088.06101
М141БПЛТЛ03181010101010109.0910109.088.09101
М141БПЛТЛ0759991091098.091099.088.0791
М141БПЛТЛ017998899106.09998.088.0890
М141БПЛТЛ06910101010101098.081097.065.08101
\n", "
" ], "text/plain": [ " Cps Mstat Soc Econ Eng Polth Mstat2 Phist Law Phil \\\n", "id \n", "М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 9 \n", "М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 10 \n", "М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 10 \n", "М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 9 \n", "М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 10 \n", "\n", " Polsoc Ptheo Preg Compp Game Wpol Male \n", "id \n", "М141БПЛТЛ024 9 7.0 8 8.0 6 10 1 \n", "М141БПЛТЛ031 10 9.0 8 8.0 9 10 1 \n", "М141БПЛТЛ075 9 9.0 8 8.0 7 9 1 \n", "М141БПЛТЛ017 9 8.0 8 8.0 8 9 0 \n", "М141БПЛТЛ069 9 7.0 6 5.0 8 10 1 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = rename_cols(df)\n", "df2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Кажется, что таким способом мы сохранили изменения в новой базе `df2`, а старую базу `df` не тронули. Однако, если мы посмотрим на базу `df`, мы увидим, что она тоже изменилась!" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CpsMstatSocEconEngPolthMstat2PhistLawPhilPolsocPtheoPregComppGameWpolMale
id
М141БПЛТЛ024798898108.07997.088.06101
М141БПЛТЛ03181010101010109.0910109.088.09101
М141БПЛТЛ0759991091098.091099.088.0791
М141БПЛТЛ017998899106.09998.088.0890
М141БПЛТЛ06910101010101098.081097.065.08101
\n", "
" ], "text/plain": [ " Cps Mstat Soc Econ Eng Polth Mstat2 Phist Law Phil \\\n", "id \n", "М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 9 \n", "М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 10 \n", "М141БПЛТЛ075 9 9 9 10 9 10 9 8.0 9 10 \n", "М141БПЛТЛ017 9 9 8 8 9 9 10 6.0 9 9 \n", "М141БПЛТЛ069 10 10 10 10 10 10 9 8.0 8 10 \n", "\n", " Polsoc Ptheo Preg Compp Game Wpol Male \n", "id \n", "М141БПЛТЛ024 9 7.0 8 8.0 6 10 1 \n", "М141БПЛТЛ031 10 9.0 8 8.0 9 10 1 \n", "М141БПЛТЛ075 9 9.0 8 8.0 7 9 1 \n", "М141БПЛТЛ017 9 8.0 8 8.0 8 9 0 \n", "М141БПЛТЛ069 9 7.0 6 5.0 8 10 1 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Почему это произошло? Потому что датафреймы являются изменяемой структурой данных (да-да, как списки). Поэтому, применяя методы к объекту типа `DataFrame`, мы меняем исходный датафрейм, и к этому надо быть готовым. Если вы не планируете вносить изменения в исходную базу, имеет смысл сделать ее копию и работать с ней. Например, вот так:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# метод copy\n", "df_new = df.copy()\n", "\n", "# вносим изменения в df_new - переименовываем один столбец\n", "new_cols = list(df_new.columns)\n", "new_cols[1] = \"Matstat\"\n", "df_new.columns = new_cols" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Cps Mstat Soc Econ Eng Polth Mstat2 Phist Law Phil \\\n", "id \n", "М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 9 \n", "М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 10 \n", "\n", " Polsoc Ptheo Preg Compp Game Wpol Male \n", "id \n", "М141БПЛТЛ024 9 7.0 8 8.0 6 10 1 \n", "М141БПЛТЛ031 10 9.0 8 8.0 9 10 1 \n", "\n", "\n", " Cps Matstat Soc Econ Eng Polth Mstat2 Phist Law Phil \\\n", "id \n", "М141БПЛТЛ024 7 9 8 8 9 8 10 8.0 7 9 \n", "М141БПЛТЛ031 8 10 10 10 10 10 10 9.0 9 10 \n", "\n", " Polsoc Ptheo Preg Compp Game Wpol Male \n", "id \n", "М141БПЛТЛ024 9 7.0 8 8.0 6 10 1 \n", "М141БПЛТЛ031 10 9.0 8 8.0 9 10 1 \n" ] } ], "source": [ "# сравниваем\n", "\n", "print(df.head(2))\n", "print(\"\\n\") # для пустой строчки между df и df_new\n", "print(df_new.head(2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Обратите внимание:** создать копию обычным присваиванием не получится, код вида `df_new = df`создаст новую ссылку на датафрейм, но не новый датафрейм. Поэтому при изменении `df_new` база `df` также изменится (вспомните историю о коварстве списков)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.4" } }, "nbformat": 4, "nbformat_minor": 4 }