Вы находитесь на странице: 1из 10

1.

Создаём датафреймы с нуля


Для начала загрузим библиотеку pandas, сокращенно будем обращаться к ней pd. 

Если вы работаете не через Анаконду, загружайте Pandas командой pip3 install pandas.

В Pandas данные представлены в виде датафрейма, или таблицы с данными. Её можно


создать с нуля, например, из словарей, списков или кортежей. 

Создадим свой первый датафрейм для трех крупнейших городов России. Перед нами
словарь, в котором ключами являются city и population, а значениями — списки с
названиями этих городов и численностью населения, которая им соответствует.

В первом столбце указан индекс (порядковый номер), а остальное выглядит, как


привычная таблица.

Также можно создать датафрейм из списка списков.

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

Теперь мы знаем, как создать датафрейм с нуля. Но на практике его обычно приходится
загружать из файла в форматах excel, csv или json.

2. Создаем датафрейм из файла


Сегодня мы будем работать с данными по смертности людей от разных причин. Перейдем
на сайт Института оценки показателей здоровья США и выберем нужные показатели
смертности по странам. 

Выберем такие показатели:

 Location: Countries and territories (Страны и территории)


 Year: 2000-2019
 Content: Cause (причина смерти)
 Age: All ages
 Metric: Rate (число смертей от определенной причины на 100 тысяч жителей)
 Measure: Deaths (смерти)
 Sex: Male, Female, Both
 Cause: level 2 causes (2 уровень детализации причин смерти)

Дальше кликнем Download csv (скачать в формате csv).


Нужно поставить галочки, соглашаясь не использовать данные в коммерческих целях,
выбрать Names и ввести почту.

Данные могут прийти не сразу, поэтому тот же самый датасет можно скачать по ссылке.
Это большой датасет на 260 тысяч строк, с которым было бы непросто работать в Excel. 

Скопируем путь к файлу на компьютере и загрузим его сразу в датафрейм с помощью


метода pd.read_csv().

Выведем первые 5 строк датафрейма методом .head().

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

Последние строки выводятся методом .tail().

Метод df.info() дает описание датафрейма: сколько в нем строк и столбцов, какие типы
данных содержатся, сколько не пустых значений (non-null), сколько памяти занимает.
Если мы хотим только узнать, сколько в нем строк и столбцов, используем атрибут shape. 

Метод describe дает статистику по числовым столбцам: среднее, максимум и минимум,


квартили, стандартное отклонение.

Если нам для статистики нужны не только числовые столбцы, но и все остальные,
добавим аргумент all. 

Тогда к таблице добавятся поля unique (сколько в столбце уникальных значений), top
(какое значение встречается чаще всего) и freq (сколько раз встречается самое частое
значение).
У нас в датафрейме нет пустых значений (missing values, NA), но часто они бывают в
реальных данных, «загрязняют» их и мешают с ними работать. От пустых значений
можно избавиться методом dropna.

3. Фильтруем датафрейм по названию столбца и


индексам
Выбрать определенный столбец можно двумя способами:

Также можно вывести на экран сразу несколько столбцов, обернув их в двойные


квадратные скобки.

Ещё для выбора столбцов и строк существует методы loc и iloc. Loc — для выбора по
названию, iloc — по индексу (порядковому номеру).
Если нам нужны только строки с 100 по 110, пропишем это условие слева.

Если мы хотим выбрать столбцы и строки не по названию, а по номеру, задействуем


метод iloc. Это бывает полезно, например, когда названия столбцов слишком длинные.

Важно: в методе loc включаются все указанные в условии числа, поэтому мы видим
строку 110, а в iloc правый конец исключается (как в стандартных срезах в Python),
поэтому последняя строка, которую мы видим — 109. Чтобы вывести на экран строки
100:110, нужно было бы указать df.iloc[100:111, 0:3].

4. Фильтруем датафрейм по условиям


В Pandas очень удобно выбирать данные по условию. Например, нам нужны показатели
смертности только для Both sexes, обоих полов.

Или по трем условиям: оба пола, только 2019 год, только сердечно-сосудистые
заболевания.

Или по четырем: оба пола, только 2019 год, только сердечно-сосудистые заболевания,
только больше 600 смертей на 100 тысяч жителей.

Мы видим страны с самой высокой смертностью от сердечно-сосудистых болезней.


Cохраним результат в отдельный датафрейм и назовем его cardio.
И отсортируем его по показателю смертности от сердечно-сосудистых болезней.
Оказывается, чаще всего от проблем с сердцем умирают в Болгарии.

Можно задать и так, чтобы соблюдалось или одно условие, или другое с помощью
оператора «или»:

Если мы не знаем точно, как называется причина смерти, либо название слишком
длинное, удобно использовать метод contains (содержит). Метод str.contains("HIV") выдаст
нам строки, в которых упоминается HIV (ВИЧ).
Если нам, наоборот, нужны строки, в которых НЕ упоминается ВИЧ, то можно добавить
либо условие False в конце, либо знак ~ в начале.

5. Удаляем, добавляем столбцы, меняем названия


Видно, что значения в столбцах measure, metric, age одинаковые. Также мы не будем
работать с столбцами lower и upper (нижняя оценка показателя смертности и высокая),
поэтому их можно удалить. Для этого используем метод drop.

Чтобы удалить несколько столбцов, обернем их в квадратные скобки.

Аргумент axis =1 показывает, что удалить нужно именно столбец (1 — столбцы, 0 —


строки). 

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


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

6. Сохраняем датафрейм 
Датафрейм можно сохранить в csv или xlsx и работать с ним дальше в любой программе.
Название файла должно быть уникальным, иначе если у вас на компьютере уже есть файл
с таким названием, то он перезапишется.