Що приніс нам Pandas 1.0

Що приніс нам Pandas 1.0

9 січня відбувся випуск Pandas 1.0.0rc. Попередня версія бібліотеки – 0.25.

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

Всі зміни можна переглянути тутУ статті ж ми обмежимося невеликим, менш технічним оглядом найголовнішого.

Встановити бібліотеку можна як завжди за допомогою типун, але оскільки на момент написання статті Pandas 1.0 все ще Реліз-кандидат, потрібно явно вказати версію:

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

Нові типи для рядків та логічних значень

У реліз 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 відображає нові типи рядок и бул.

Найбільш корисною особливістю нового рядкового типу є вибір тільки колонок рядків із датафреймів. Це може спростити аналіз текстових даних:

df.select_dtypes("string")

Раніше стовпчики рядків не можна було вибирати без явної вказівки імен.

Більше про нові типи можна почитати тут.

Дякую, що дочитали! Повний список змін, як уже згадувалося, можна переглянути тут.

Джерело: habr.com

Додати коментар або відгук