Таблицы в Python: датафреймы pandas

Таблицы можно получить из стандартных структур данных в Python. Например, мы можем создать таблицу в таком виде:

In [1]:
table = [[1, 2, 3], [4, 5, 6]]
In [2]:
table
Out[2]:
[[1, 2, 3], [4, 5, 6]]

Пока table – обычный список списков. Можно считать, что списки внутри table образуют строки таблицы. Обратимся к первой строке – списку с индексом 0:

In [3]:
table[0]
Out[3]:
[1, 2, 3]

А теперь запросим первый элемент первого списка:

In [4]:
table[0][0] # двойной индекс
Out[4]:
1

Работать с таблицей в таком виде неудобно. Приходится использовать какие-то двойные индексы, да выбор столбца ‒ не совсем тривиальная задача. Чтобы не мучиться, давайте превратим table в датафрейм из библиотеки pandas. Эта библиотека используется для удобной и более эффективной работы с таблицами. Ее функционал достаточно разнообразен, но давайте начнем с каких-то базовых функций и методов.

Для начала импортируем саму библиотеку.

In [5]:
import pandas as pd # сократим название до удобства

Здесь мы использовали такой прием: импортировали библиотеку и присвоили ей сокращенное имя, которое будет использоваться в пределах данного ноутбука. Чтобы не писать перед каждой библиотечной функцией длинное pandas и не импортировать сразу все функции из этой библиотеки, мы сократим название до pd и в дальнейшем Python будет понимать, что мы имеем в виду. Можно было бы сократить и до p, но тогда есть риск забыть про это и создать переменную с таким же именем, что плохо. К тому же pd – распространенное и устоявшееся сокращение.

(И да, таким образом можно сокращать названия любых библиотек и модулей. Ничто бы не помешало нам на предыдущих занятиях писать, например, import math as ma, просто в этом не было необходимости).

А теперь вернемся к таблице – превратим список списков в объект DataFrame:

In [6]:
pd.DataFrame(table) # выглядит посимпатичнее
Out[6]:
0 1 2
0 1 2 3
1 4 5 6

Сохраним результат в переменную df:

In [7]:
df = pd.DataFrame(table)
In [8]:
df
Out[8]:
0 1 2
0 1 2 3
1 4 5 6

Как можно заметить, по умолчанию Python создает датафрейм по строкам, то есть в качестве первой строки берет первый список, затем – второй, и так далее. При желании это можно исправить – транспонировать таблицу, то есть поменять местами строки и столбцы. Для этого существует метод .transpose():

In [9]:
df.transpose()
Out[9]:
0 1
0 1 4
1 2 5
2 3 6

Выгрузим таблицу df в файл Excel:

In [10]:
df.to_excel("MY_table.xlsx")

По умолчанию файл будет сохранен в той же папке, что и текущий файл Jupyter Notebook. Как найти, где это:

In [11]:
import os
os.getcwd() # выдаст путь к папке с файлом
Out[11]:
'/Users/allat'

На этом пока все. С датафреймами pandas мы еще будем внимательно работать, но позже. Keep waiting!