Π§Ρ‚ΠΎ принёс Π½Π°ΠΌ Pandas 1.0

Π§Ρ‚ΠΎ принёс Π½Π°ΠΌ Pandas 1.0

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

НовыС Ρ‚ΠΈΠΏΡ‹ для строк ΠΈ логичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π’ Ρ€Π΅Π»ΠΈΠ· 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")

Π Π°Π½Π΅Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ строк нСльзя Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π±Π΅Π· явного указания ΠΈΠΌΡ‘Π½.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

Бпасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ! ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

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