9 января состоялся релиз Pandas 1.0.0rc. Предыдущая версия библиотеки — 0.25.
Первый мажорный релиз содержит множество замечательных нововведений, в том числе улучшенное автоматическое суммирование датафреймов, больше форматов вывода, новые типы данных и даже новый сайт документации.
Все изменения можно посмотреть здесь, в статье же мы ограничимся небольшим, менее техническим обзором самого главного.
Установить библиотеку можно как обычно с помощью pip, но так как на момент написания статьи Pandas 1.0 всё ещё release candidate, потребуется явно указать версию:
pip install --upgrade pandas==1.0.0rc0
Будьте осторожны: так как релиз мажорный, обновление может сломать старый код!
Кстати, с этой версии полностью прекращена поддержка Python 2 (что может стать хорошим поводом обновиться — прим. перев.). Pandas 1.0 требует как минимум Python 3.6+, так что если не уверены, уточните какой именно установлен у вас:
$ pip --version
pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
$ python --version
Python 3.7.5
Проверить версию Pandas проще всего так:
>>> import pandas as pd
>>> pd.__version__
1.0.0rc0
Улучшенное автосуммирование с DataFrame.info
Моим любимым нововведением стало обновление метода DataFrame.info. Функция стала гораздо более читаемой, что делает процесс исследования данных ещё проще:
>>> df = pd.DataFrame({
...: 'A': [1,2,3],
...: 'B': ["goodbye", "cruel", "world"],
...: 'C': [False, True, False]
...:})
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 3 non-null int64
1 B 3 non-null object
2 C 3 non-null object
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes
Вывод таблиц в формате Markdown
Не менее приятным нововведением стала возможность экспортировать датафреймы в таблицы Markdown с помощью DataFrame.to_markdown.
>>> df.to_markdown()
| | A | B | C |
|---:|----:|:--------|:------|
| 0 | 1 | goodbye | False |
| 1 | 2 | cruel | True |
| 2 | 3 | world | False |
Это сильно упрощает публикацию таблиц на сайтах типа Medium с использованием github gists.
Новые типы для строк и логических значений
В релиз Pandas 1.0 так же добавили новые экспериментальные типы. Их API ещё может измениться, так что используйте его с осторожностью. Но вообще Pandas рекомендует использовать новые типы везде, где это имеет смысл.
Пока что приведение нужно выполнять явно:
>>> B = pd.Series(["goodbye", "cruel", "world"], dtype="string")
>>> C = pd.Series([False, True, False], dtype="bool")
>>> df.B = B, df.C = C
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 3 non-null int64
1 B 3 non-null string
2 C 3 non-null bool
dtypes: int64(1), object(1), string(1)
memory usage: 200.0+ bytes
Обратите внимание, как колонка Dtype отображает новые типы — string и bool.
Наиболее полезной особенностью нового строкового типа является возможно выбора только колонок строк из датафреймов. Это может значительно упростить анализ текстовых данных:
df.select_dtypes("string")
Ранее колонки строк нельзя было выбирать без явного указания имён.
Больше о новых типах можно почитать здесь.
Спасибо, что дочитали! Полный список изменений, как уже упоминалось, можно посмотреть здесь.
Автор: germn