Какво ни донСсС Pandas 1.0

Какво ни донСсС Pandas 1.0

На 9 януари бСшС пусната Pandas 1.0.0rc. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ 0.25.

ΠŸΡŠΡ€Π²Π°Ρ‚Π° голяма вСрсия ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ страхотни Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°Π΄Ρ€ΠΈ с Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ, Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄ΠΎΡ€ΠΈ Π½ΠΎΠ² сайт Π·Π° докумСнтация.

Всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС видят Ρ‚ΡƒΠΊ, Π² статията Ρ‰Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Π΄ΠΎ малък, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ тСхничСски ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ Π½Π΅Ρ‰Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΈΡƒΠΊΠ°ΠΌ, Π½ΠΎ Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанС 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

Нови Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈ Π±ΡƒΠ»Π΅Π²ΠΈ стойности

Π˜Π·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ 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")

ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡ‚Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Π±Π΅Π· ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²ΠΈΠ΄ΠΎΠ²Π΅ Ρ‚ΡƒΠΊ.

Благодаря Π²ΠΈ, Ρ‡Π΅ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ…Ρ‚Π΅! ΠŸΡŠΠ»Π½ΠΈΡΡ‚ списък с ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС спомСнато, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ Ρ‚ΡƒΠΊ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€