- Как вывести всю таблицу в Pandas?
- Как вывести всю таблицу в Pandas (со всеми рядами и строками, без сокращения данных).
- Как выглядит таблица в сокращенном варианте?
- Корректируем вывод табличных данных с помощью функции set_option() в Pandas
- Для начала небольшой спойлер:
- А теперь подробности!
- Результат сброса ограничений на вывод табличных данных
- Основы Pandas №1 // Чтение файлов, DataFrame, отбор данных
- Чтобы разобраться со всем, необходимо…
- Как открывать файлы с данными в pandas
- Структуры данных Python
- Загрузка файла .csv в pandas DataFrame
- Отбор данных из dataframe в pandas
- Вывод всего dataframe
- Вывод части dataframe
- Вывод определенных колонок из dataframe
- Фильтрация определенных значений в dataframe
- Функции могут использоваться одна за другой
- Проверьте себя!
- Итого
Как вывести всю таблицу в Pandas?
Как вывести всю таблицу в Pandas (со всеми рядами и строками, без сокращения данных).
Многоточие в таблице для программиста, как закрытые двери в квартире для кота: может быть скрытая информация и не пригодится, но взглянуть-то хочется! Очень часто такой подход позволяет достичь хороших результатов: коту найти сосиску, ну а нам, любителям табличных данных — выявить возможную закономерность, найти новый признак или возможный баг в данных. Давайте же разберемся, что мешает нам взглянуть на данные без ограничений и вывести всю таблицу в Pandas целиком.
Как выглядит таблица в сокращенном варианте?
Для начала смоделируем эту неприятную ситуацию: загрузим таблицу с данными в переменную data и попробуем вывести ее на экран. В качестве демонстративной таблицы, я загружу данные о ТОП-550 литературных бестселлерах за 2009-2019 годы, набравших наибольшее число продаж на сайте Amazon. Данные выложены на сайте Kaggle, скачать их можно на странице: https://www.kaggle.com/sootersaalu/amazon-top-50-bestselling-books-2009-2019, либо с моего сайта по ссылке «Топ-550 литературных бестселлеров».
Итак, загружаю данные и вывожу таблицу на экран:
Согласитесь, не очень удобный для восприятия формат вывода: не смотря на то, что под таблицей гордо располагается информация о том, что таблица содержит 550 рядов и 7 столбцов, нам для обзора доступна лишь небольшая часть из них. Остальное содержимое скрыто за многоточием. Кроме этого, некоторые данные в столбце «Name», похоже, усечены. Давайте исправим это!
Корректируем вывод табличных данных с помощью функции set_option() в Pandas
Для начала небольшой спойлер:
При установке значений опций ‘display.max_rows’, ‘display.max_columns’, ‘display.max_colwidth’ как None, можно сбросить ограничения на число выводимых рядов, столбцов таблицы, а также на длину записи в таблице:
А теперь подробности!
В Pandas существует служебная функция set_option(), позволяющая настроить формат вывода таблицы по своему желанию. Рассмотрим наиболее полезные для работы с таблицами параметры функции set_option():
1. display.max_rows
При установке значения для параметра ‘display.max_rows’ Вы можете ограничить количество выведенных строк с данными значением типа int. Рассмотрим пример:
В данном случае на экран будут выведены 7 строк: 3 первых и 3 последних записи таблицы, разделенные строкой с многоточием.
Для того, чтобы сбросить ограничения на число строк, нужно определить значение опции ‘display.max_rows’ как None:
2. display.max_columns
Настройка этой опции позволяет регулировать число выводимых столбцов. Если параметр ‘display.max_columns’ определен значением типа int, меньшим, чем действительное число столбцов в таблице, то при выводе таблицы, мы увидим столбец из многоточий, как на приведенном в начале статьи «Рис.1».
Чтобы снять ограничения на количество столбцов, нужно для опции ‘display.max_columns’ установить значение None:
3. display.max_colwidth
Эта опция может быть задана числовым значением типа int или определена, как None. Числовое значение позволяет ограничить количество символов в столбце таблицы. Рассмотрим пример:
Приведенная выше в качестве примера строка, ограничит все записи в таблице 10-ю символами.
Для вывода всех символов в записях, нужно определить значение опции ‘display.max_colwidth’ как None:
Результат сброса ограничений на вывод табличных данных
Протестируем работу функции set_option() на рассмотренном в начале статьи примере. Сбросим ограничения на количество отображаемых данных перед выводом таблицы на экран:
Ограничения сняты! На изображении выше видно, что многоточия пропали, появилась полоса прокрутки, количество записей увеличилось, а в столбце Name выводится полная информация.
Мы достигли желаемой цели благодаря верным значениям опций в функции set_option()!
Источник
Основы Pandas №1 // Чтение файлов, DataFrame, отбор данных
Pandas — одна из самых популярных библиотек Python для аналитики и работы с Data Science. Это как SQL для Python. Все потому, что pandas позволяет работать с двухмерными таблицами данных в Python. У нее есть и масса других особенностей. В этой серии руководств по pandas вы узнаете самое важное (и часто используемое), что необходимо знать аналитику или специалисту по Data Science. Это первая часть, в которой речь пойдет об основах.
Примечание: это практическое руководство, поэтому рекомендуется самостоятельно писать код, повторяя инструкции!
Чтобы разобраться со всем, необходимо…
- Установить Python3.7+, numpy и Pandas.
- Следующий шаг: подключиться к серверу (или локально) и запустить Jupyter. Затем открыть Jupyter Notebook в любимом браузере. Создайте новый ноутбук с именем «pandas_tutorial_1».
- Импортировать numpy и pandas в Jupyter Notebook с помощью двух строк кода:
Примечание: к «pandas» можно обращаться с помощью аббревиатуры «pd». Если в конце инструкции с import есть as pd , Jupyter Notebook понимает, что в будущем, при вводе pd подразумевается именно библиотека pandas.
Теперь все настроено! Переходим к руководству по pandas! Первый вопрос:
Как открывать файлы с данными в pandas
Информация может храниться в файлах .csv или таблицах SQL. Возможно, в файлах Excel. Или даже файлах .tsv. Или еще в каком-то другом формате. Но цель всегда одна и та же. Если необходимо анализировать данные с помощью pandas, нужна структура данных, совместимая с pandas.
Структуры данных Python
В pandas есть два вида структур данных: Series и DataFrame.
Series в pandas — это одномерная структура данных («одномерная ndarray»), которая хранит данные. Для каждого значения в ней есть уникальный индекс.
DataFrame — двухмерная структура, состоящая из колонок и строк. У колонок есть имена, а у строк — индексы.
В руководстве по pandas основной акцент будет сделан на DataFrames. Причина проста: с большей частью аналитических методов логичнее работать в двухмерной структуре.
Загрузка файла .csv в pandas DataFrame
Для загрузки .csv файла с данными в pandas используется функция read_csv() .
Начнем с простого образца под названием zoo. В этот раз для практики вам предстоит создать файл .csv самостоятельно. Вот сырые данные:
Вернемся во вкладку “Home” https://you_ip:you_port/tree Jupyter для создания нового текстового файла…
затем скопируем данные выше, чтобы вставить информацию в этот текстовый файл…
…и назовем его zoo.csv!
Это ваш первый .csv файл.
Вернемся в Jupyter Notebook (который называется «pandas_tutorial_1») и откроем в нем этот .csv файл!
Для этого нужна функция read_csv()
Введем следующее в новую строку:
Готово! Это файл zoo.csv , перенесенный в pandas. Это двухмерная таблица — DataFrame. Числа слева — это индексы. А названия колонок вверху взяты из первой строки файла zoo.csv.
На самом деле, вам вряд ли придется когда-нибудь создавать .csv файл для себя, как это было сделано в примере. Вы будете использовать готовые файлы с данными. Поэтому нужно знать, как загружать их на сервер!
Если кликнуть на ссылку, файл с данными загрузится на компьютер. Но он ведь не нужен вам на ПК. Его нужно загрузить на сервер и потом в Jupyter Notebook. Для этого нужно всего два шага.
Шаг 1) Вернуться в Jupyter Notebook и ввести эту команду:
Это загрузит файл pandas_tutorial_read.csv на сервер. Проверьте:
Если кликнуть на него…
…можно получить всю информацию из файла.
Шаг 2) Вернуться в Jupyter Notebook и использовать ту же функцию read_csv (не забыв поменять имя файла и значение разделителя):
Данные загружены в pandas!
Что-то не так? В этот раз не было заголовка, поэтому его нужно настроить самостоятельно. Для этого необходимо добавить параметры имен в функцию!
Так лучше!
Теперь файл .csv окончательно загружен в pandas DataFrame .
Примечание: есть альтернативный способ. Вы можете загрузить файл .csv через URL напрямую. В этом случае данные не загрузятся на сервер данных.
Примечание: если вам интересно, что в этом наборе, то это лог данных из блога о путешествиях. Ну а названия колонок говорят сами за себя.
Отбор данных из dataframe в pandas
Это первая часть руководства, поэтому начнем с самых простых методов отбора данных, а уже в следующих углубимся и разберем более сложные.
Вывод всего dataframe
Базовый метод — вывести все данные из dataframe на экран. Для этого не придется запускать функцию pd.read_csv() снова и снова. Просто сохраните денные в переменную при чтении!
После этого можно будет вызывать значение article_read каждый раз для вывода DataFrame!
Вывод части dataframe
Иногда удобно вывести не целый dataframe, заполнив экран данными, а выбрать несколько строк. Например, первые 5 строк можно вывести, набрав:
Или последние 5 строк:
Или 5 случайных строк:
Вывод определенных колонок из dataframe
А это уже посложнее! Предположим, что вы хотите вывести только колонки «country» и «user_id».
Для этого нужно использовать команду в следующем формате:
Есть предположения, почему здесь понадобились двойные квадратные скобки? Это может показаться сложным, но, возможно, так удастся запомнить: внешние скобки сообщают pandas, что вы хотите выбрать колонки, а внутренние — список (помните? Списки в Python указываются в квадратных скобках) имен колонок.
Поменяв порядок имен колонов, изменится и результат вывода.
Это DataFrame выбранных колонок.
Примечание: иногда (особенно в проектах аналитического прогнозирования) нужно получить объекты Series вместе DataFrames. Это можно сделать с помощью одного из способов:
- article_read.user_id
- article_read[‘user_id’]
Фильтрация определенных значений в dataframe
Если прошлый шаг показался сложным, то этот будет еще сложнее!
Предположим, что вы хотите сохранить только тех пользователей, которые представлены в источнике «SEO». Для этого нужно отфильтровать по значению «SEO» в колонке «source»:
Важно понимать, как pandas работает с фильтрацией данных:
Шаг 1) В первую очередь он оценивает каждую строчку в квадратных скобках: является ли ‘SEO’ значением колонки article_read.source ? Результат всегда будет булевым значением ( True или False ).
Шаг 2) Затем он выводит каждую строку со значением True из таблицы article_read .
Выглядит сложно? Возможно. Но именно так это и работает, поэтому просто выучите, потому что пользоваться этим придется часто!
Функции могут использоваться одна за другой
Важно понимать, что логика pandas очень линейна (как в SQL, например). Поэтому если вы применяете функцию, то можете применить другую к ней же. В таком случае входящие данные последней функции будут выводом предыдущей.
Например, объединим эти два метода перебора:
Первая строчка выбирает первые 5 строк из набора данных. Потом она выбирает колонки «country» и «user_id».
Можно ли получить тот же результат с иной цепочкой функций? Конечно:
В этом случае сначала выбираются колонки, а потом берутся первые 5 строк. Результат такой же — порядок функций (и их исполнение) отличается.
А что будет, если заменить значение «article_read» на оригинальную функцию read_csv():
Так тоже можно, но это некрасиво и неэффективно. Важно понять, что работа с pandas — это применение функций и методов один за одним, и ничего больше.
Проверьте себя!
Как обычно, небольшой тест для проверки! Выполните его, чтобы лучше запомнить материал!
Выберите used_id , country и topic для пользователей из country_2 . Выведите первые 5 строк!
А вот и решение!
Его можно преподнести одной строкой:
Или, чтобы было понятнее, можно разбить на несколько строк:
В любом случае, логика не отличается. Сначала берется оригинальный dataframe ( article_read ), затем отфильтровываются строки со значением для колонки country — country_2 ( [article_read.country == ‘country_2’] ). Потому берутся три нужные колонки ( [[‘user_id’, ‘topic’, ‘country’]] ) и в конечном итоге выбираются только первые пять строк ( .head() ).
Итого
Вот и все. В следующей статье вы узнаете больше о разных методах агрегации (например, sum, mean, max, min) и группировки.
Источник