9 січня відбувся випуск Pandas 1.0.0rc. Попередня версія бібліотеки – 0.25.
Перший мажорний реліз містить багато чудових нововведень, у тому числі покращене автоматичне підсумовування датафреймів, більше форматів виведення, нові типи даних і навіть новий сайт документації.
Всі зміни можна переглянути
Встановити бібліотеку можна як завжди за допомогою типун, але оскільки на момент написання статті Pandas 1.0 все ще Реліз-кандидат, потрібно явно вказати версію:
pip install --upgrade pandas==1.0.0rc0
Будьте обережні: оскільки реліз мажорний, оновлення може зламати старий код!
До речі, з цієї версії повністю припинено підтримку Python 2 (що може стати гарним приводом
$ 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 відображає нові типи рядок и бул.
Найбільш корисною особливістю нового рядкового типу є вибір тільки колонок рядків із датафреймів. Це може спростити аналіз текстових даних:
df.select_dtypes("string")
Раніше стовпчики рядків не можна було вибирати без явної вказівки імен.
Більше про нові типи можна почитати
Дякую, що дочитали! Повний список змін, як уже згадувалося, можна переглянути
Джерело: habr.com