Основы Pandas — чтение файлов, DataFrame, отбор данных (часть 1)

Data Science – популярное направление разработки приложений, в котором можно неплохо зарабатывать. И чтобы работать с данными, необходимо использовать специальную библиотеку, предназначенную для этого. Одной из самых популярных из них является Pandas. Некоторые ее сравнивают с SQL для Python. Все потому, что Pandas работает на основе двухмерных таблиц данных. Есть также ряд других особенностей. Сегодня вы узнаете основы аналитики данных с использованием этой библиотеке.

Настоятельно рекомендуется самостоятельно писать весь код, который будет указан ниже в качестве примера. Все потому, что это практическое руководство. Надо не копировать, а именно переписывать самостоятельно. 

Что нужно?

Изначально надо иметь версию Python хотя бы 3,7. Можно более новую. Помимо этого, должны быть установлены numpy, Pandas.

Далее надо подключиться к серверу. Если его нет, то можно создать локальный сервер, после чего запустить Jupyter. После этого открыть браузер, который подходит вам больше всего и открыть Jupyter Notebook. Далее создается ноутбук с названием pandas_tutorial_1.

Далее надо импортировать numpy, pandas в Jupyter Notebook с использованием двух строчек кода. 

import numpy as np

import pandas as pd

Внимание! Чтобы обратиться к библиотеке, можно также воспользоваться аббревиатурой pd. Если в конце инструкции с import имеются as pd, Jupyter Notebook понимает, что в будущем, при вводе этих двух букв необходимо обратиться именно к библиотеке Pandas.

Теперь все настроено. Поэтому переходим к руководству по этой библиотеке. Начнем с вопроса, как правильно осуществлять открытие файлов с информацией с помощью этой библиотеки.

Открытие файла данных в Pandas

Хранение данных возможно в таблицах SQL либо в CSV-таблицах. Также есть вариант использования других форматов, в том числе, и Excel. Тем не менее, цель одинаковая. необходимо иметь структуру данных, которая будет совместимой с pandas.

Структуры данных в Python

Таких структур данных в Pandas есть две: Series и DataFrame.

Под первой подразумевается одномерная структура данных. В этом случае каждое значение имеет свой уникальный индекс. Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

А DataFrame уже считается двухмерной структурой. Это означает, что она состоит из колонок и строк. Каждый столбец имеет свое имя, а строка – индекс.

Выглядит такая структура данных следующим образом.Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

Сегодня мы более подробно будем рассматривать второй вариант. Почему? Дело в том, что обработку большей части информации значительно проще осуществлять в двухмерной структуре.

Как загрузить .csv-файл в DataFrame?

Чтобы это сделать, необходимо использовать функцию read_csv(). Давайте начнем с образца, называющегося zoo. В этом случае вам надо создать этот файл самостоятельно. Сырые данные следующие. 

animal,uniq_id,water_need

elephant,1001,500

elephant,1002,600

elephant,1003,550

tiger,1004,300

tiger,1005,320

tiger,1006,330

tiger,1007,290

tiger,1008,310

zebra,1009,200

zebra,1010,220

zebra,1011,240

zebra,1012,230

zebra,1013,220

zebra,1014,100

zebra,1015,80

lion,1016,420

lion,1017,600

lion,1018,500

lion,1019,390

kangaroo,1020,410

kangaroo,1021,430

kangaroo,1022,410

 Теперь вернем ко вкладке Home Jupyter, чтобы сгенерировать новый текстовый файл. Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

После этого выполняем копирование информации выше, чтобы вставить данные в этот файл.Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

И в конечном итоге, называем его zoo.csv.

Это и будет первый csv-файл. 

Теперь давайте вернемся в Jupyter Notebook с именем pandas_tutorial_1, чтобы открыть в нем этот файл. Чтобы это сделать, необходимо воспользоваться функцией read_csv().

Для этого вводим такую инструкцию. 

pd.read_csv('zoo.csv', delimiter=',')

Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

Все, теперь файл zoo.csv был перенесен в pandas и стал двухмерной таблицей DataFrame. Слева расположены индексы, а источником для названий столбцов вверху служит первая строка файла zoo.csv.

На самом деле, вам вряд ли придется создавать этот файл для себя, поскольку будут уже готовые файлы с данными, которые надо будет обрабатывать. Просто необходимо понимать, как осуществлять их загрузку на сервер. Если нажать по ссылке, файл с данными загрузится на ПК. Но он ведь не нужен там. Ведь его надо сначала выгрузить на сервер, а потом и в Jupyter Notebook. Для этого потребуется два действия:

  1. Вернуться в Jupyter Notebook и указать следующую команду.
    !wget https://pythonru.com/downloads/pandas_tutorial_read.csv
    Таким образом будет загружен файл pandas_tutorial_read.csv на сервер. При клике по нем появляется возможность получить все данные из файла.
  2. Вернуться в Jupyter Notebook и применять ту же функцию read_csv (не забыв сменить название файла и разделитель).
    pd.read_csv(‘pandas_tutorial_read.csv’, delimete=’;’)
    После этого загрузка данных в pandas считается окончательно завершенной.

В итоге, у нас получится такая таблица.Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

Здесь видим определенную проблему. На этот раз отсутствует заголовок, поэтому его настройку нужно выполнить самостоятельно. Для этого надо добавить в функцию параметры имен. 

pd.read_csv('pandas_tutorial_read.csv', delimiter=';', 

    names=['my_datetime', 'event', 'country', 'user_id', 'source', 'topic'])

Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

Видим, что такой вариант лучше. Теперь файл .csv загружен в pandas DataFrame уже окончательно.

При этом есть и альтернативный метод. Загрузка файла с данными возможна и напрямую через адрес URL. В этом случае загрузки информации на сервер не будет.

А на практике это выполняется следующим образом. Напишите такой код. 

pd.read_csv(

    'https://pythonru.com/downloads/pandas_tutorial_read.csv',

    delimiter=';', 

    names=['my_datetime', 'event', 'country', 

           'user_id', 'source', 'topic']

)

Если вам интересно, что в этом наборе, то это набор информации о путешествиях из специализированного блога. Ну а о том, какие сведения хранятся в колонках, очевидно из самой таблицы.

Как осуществлять отбор данных из базы в Pandas?

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

Вывод всего Dataframe

Стандартный метод – осуществлять вывод всех данных из Dataframe на экран. Для этого нет необходимости в том, чтобы запускать функцию pd.read_csv() каждый раз. Достаточно просто сохранить сведения в переменную при чтении. 

article_read = pd.read_csv(

    'pandas_tutorial_read.csv', 

    delimiter=';', 

    names = ['my_datetime', 'event', 'country', 

    'user_id', 'source', 'topic']

)

Затем можно вызывать значение article_read для вывода данных таблицы уже каждый раз.

Как осуществлять вывод части Dataframe?

В некоторых случаях может понадобиться не выводить Dataframe целиком, заполнив экран данными, которые и не нужны в конкретной ситуации, а выбрать несколько строк, которые и будут выводиться. Например, первые 5 из них можно вывести следующим образом. 

article_read.head()

Если же нужно вывести последние 5 строк, то это делается так. 

article_read.tail()

Как вывести конкретные колонки из таблицы?

А это уже более сложная задача. Допустим, необходимо поставить на вывод исключительно колонки country и user_id. Что в этом случае нужно делать? Использовать такую команду. 

article_read[['country', 'user_id']]

Основы Pandas - чтение файлов, DataFrame, отбор данных (часть 1)

А теперь вопрос: зачем здесь используются двойные квадратные скобки? На первый взгляд, ответ может быть довольно сложным, но логика, на самом деле, проста. Внешние скобки уведомляют pandas, что вы хотите выбрать колонки, а внутренние являют собой список. Да, самый обычный стандартный список Python, который всегда указывается в квадратных скобках.

Если мы заменим порядок имен колонок, результат вывода также будет другим. Это DataFrame выбранных колонок. 

Внимание! В некоторых случаях необходимо получить доступ к объектам Series. Чтобы это сделать, есть один из следующих методов.

article_read.user_id

article_read[‘user_id’]

Как осуществить фильтрацию значений в таблице?

Этот шаг более сложный. Допустим, необходимо сохранить исключительно пользователей, представленных в источнике «SEO». Чтобы это сделать, надо выполнить фильтрацию по соответствующему значению. Для этого используется такая инструкция. 

article_read[article_read.source == 'SEO']

Использование функций одна за другой

Необходимо учитывать и то, что у Pandas логика линейная (точно такая же, как и в SQL). Следовательно, если вы применяете функцию, то возможно к ней применение другой же. В этом случае входящие данные последней функции будут выводом предыдущей. Например, давайте попробуем соединить эти два метода перебора. 

article_read.head()[['country', 'user_id']]

С помощью первой строчки мы выбираем первые 5 строк из набора данных. Затем она выбирает колонки «country» и «user_id». 

Есть ли возможность получения такого же результата, но используя другую цепочку функций? Конечно же! 

article_read[['country', 'user_id']].head()

Здесь сначала осуществляется выбор колонок, а затем берутся первые 5 строк. В результате, будет то же самое, просто будет отличаться порядок функций и особенности их выполнения.

А что будет, если заменить значение «article_read» на оригинальную функцию read_csv()? 

pd.read_csv(

    'pandas_tutorial_read.csv', 

    delimiter=';', 

    names = ['my_datetime', 'event', 'country', 'user_id', 'source', 'topic']

)[['country', 'user_id']].head()

Поэтому важно учитывать, что использование этой библиотеки подразумевает применение функций и методов последовательно, и ничего более. 

Выводы

Таким образом, работать с Pandas не так сложно. Для начинающего data-scientist-а это очень простой инструмент, который при этом достаточно функциональный.

ОфисГуру
Adblock
detector