pandas
¶Таблицы можно получить из стандартных структур данных в Python. Например, мы можем создать таблицу в таком виде:
table = [[1, 2, 3], [4, 5, 6]]
table
[[1, 2, 3], [4, 5, 6]]
Пока table
– обычный список списков. Можно считать, что списки внутри table образуют строки таблицы. Обратимся к первой строке – списку с индексом 0:
table[0]
[1, 2, 3]
А теперь запросим первый элемент первого списка:
table[0][0] # двойной индекс
1
Работать с таблицей в таком виде неудобно. Приходится использовать какие-то двойные индексы, да выбор столбца ‒ не совсем тривиальная задача. Чтобы не мучиться, давайте превратим table
в датафрейм из библиотеки pandas
. Эта библиотека используется для удобной и более эффективной работы с таблицами. Ее функционал достаточно разнообразен, но давайте начнем с каких-то базовых функций и методов.
Для начала импортируем саму библиотеку.
import pandas as pd # сократим название до удобства
Здесь мы использовали такой прием: импортировали библиотеку и присвоили ей сокращенное имя, которое будет использоваться в пределах данного ноутбука. Чтобы не писать перед каждой библиотечной функцией длинное pandas
и не импортировать сразу все функции из этой библиотеки, мы сократим название до pd
и в дальнейшем Python будет понимать, что мы имеем в виду. Можно было бы сократить и до p
, но тогда есть риск забыть про это и создать переменную с таким же именем, что плохо. К тому же pd
– распространенное и устоявшееся сокращение.
(И да, таким образом можно сокращать названия любых библиотек и модулей. Ничто бы не помешало нам на предыдущих занятиях писать, например, import math as ma
, просто в этом не было необходимости).
А теперь вернемся к таблице – превратим список списков в объект DataFrame
:
pd.DataFrame(table) # выглядит посимпатичнее
0 | 1 | 2 | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 |
Сохраним результат в переменную df
:
df = pd.DataFrame(table)
df
0 | 1 | 2 | |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 4 | 5 | 6 |
Как можно заметить, по умолчанию Python создает датафрейм по строкам, то есть в качестве первой строки берет первый список, затем – второй, и так далее. При желании это можно исправить – транспонировать таблицу, то есть поменять местами строки и столбцы. Для этого существует метод .transpose()
:
df.transpose()
0 | 1 | |
---|---|---|
0 | 1 | 4 |
1 | 2 | 5 |
2 | 3 | 6 |
Выгрузим таблицу df
в файл Excel:
df.to_excel("MY_table.xlsx")
По умолчанию файл будет сохранен в той же папке, что и текущий файл Jupyter Notebook. Как найти, где это:
import os
os.getcwd() # выдаст путь к папке с файлом
'/Users/allat'
На этом пока все. С датафреймами pandas
мы еще будем внимательно работать, но позже. Keep waiting!