ΠΠ° 9 ΡΠ½ΡΠ°ΡΠΈ Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Pandas 1.0.0rc. ΠΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ 0.25.
ΠΡΡΠ²Π°ΡΠ° Π³ΠΎΠ»ΡΠΌΠ° Π²Π΅ΡΡΠΈΡ ΡΡΠ΄ΡΡΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°Π΄ΡΠΈ Ρ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ, Π½ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄ΠΎΡΠΈ Π½ΠΎΠ² ΡΠ°ΠΉΡ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΈΡΠΊΠ°ΠΌ, Π½ΠΎ ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΈΡΠ°Π½Π΅ Pandas 1.0 Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Release Candidate, ΡΠ΅ ΡΡΡΠ±Π²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΡΡΠ°:
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")
ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π±ΡΠ°Π½ΠΈ Π±Π΅Π· ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π²ΠΈΠ΄ΠΎΠ²Π΅
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΠΈ, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ
ΡΠ΅! ΠΡΠ»Π½ΠΈΡΡ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com