рдкрд╛рдВрдбрд╛ 1.0 рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдЖрдгрд▓реЗ

рдкрд╛рдВрдбрд╛ 1.0 рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдЖрдгрд▓реЗ

9 рдЬрд╛рдиреЗрд╡рд╛рд░реА рд░реЛрдЬреА, Pandas 1.0.0rc рд░рд┐рд▓реАрдЬ рдЭрд╛рд▓рд╛. рд▓рд╛рдпрдмреНрд░рд░реАрдЪреА рдорд╛рдЧреАрд▓ рдЖрд╡реГрддреНрддреА 0.25 рдЖрд╣реЗ.

рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЭрдордзреНрдпреЗ рд╕реБрдзрд╛рд░рд┐рдд рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдбреЗрдЯрд╛рдлреНрд░реЗрдо рд╕рд╛рд░рд╛рдВрд╢, рдЕрдзрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк, рдирд╡реАрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдЕрдЧрджреА рдирд╡реАрди рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╕рд╛рдЗрдЯрд╕рд╣ рдЕрдиреЗрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрд╣реЗрдд.

рд╕рд░реНрд╡ рдмрджрд▓ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдпреЗрдереЗ, рд▓реЗрдЦрд╛рдд рдЖрдореНрд╣реА рд╕реНрд╡рддрдГрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрдЪреНрдпрд╛ рдЫреЛрдЯреНрдпрд╛, рдХрдореА рддрд╛рдВрддреНрд░рд┐рдХ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рдкреБрд░рддреЗ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░реВ.

рддреБрдореНрд╣реА рдиреЗрд╣рдореАрдкреНрд░рдорд╛рдгреЗ рд▓рд╛рдпрдмреНрд░рд░реА рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛ рд╡рд╛рд│реАрдд рдЯрд╛рдХрдгреЗ, рдкрд░рдВрддреБ рдкрд╛рдВрдбрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА 1.0 рдЕрдЬреВрдирд╣реА рдЖрд╣реЗ рдЙрдореЗрджрд╡рд╛рд░ рд╕реЛрдбрд╛, рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡реГрддреНрддреА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓:

pip install --upgrade pandas==1.0.0rc0

рд╕рд╛рд╡рдзрдЧрд┐рд░реА рдмрд╛рд│рдЧрд╛: рд╣реЗ рдПрдХ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд╢рди рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЕрджреНрдпрддрди рдЬреБрдирд╛ рдХреЛрдб рдЦрдВрдбрд┐рдд рдХрд░реВ рд╢рдХрддреЛ!

рддрд╕реЗ, рдпрд╛ рдЖрд╡реГрддреНрддреАрдкрд╛рд╕реВрди рдкрд╛рдпрдерди 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

рдкрд╛рдВрдбрд╛ рдЖрд╡реГрддреНрддреА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ:

>>> 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

рдорд╛рд░реНрдХрдбрд╛рдЙрди рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдмрд▓

рдорд╛рд░реНрдХрдбрд╛рдЙрди рдЯреЗрдмрд▓реНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдирд┐рд░реНрдпрд╛рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рд╣реА рддрд┐рддрдХреАрдЪ рдЖрдирдВрджрджрд╛рдпреА рдирд╡рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ DataFrame.to_markdown.

>>> df.to_markdown()
|    |   A | B       | C     |
|---:|----:|:--------|:------|
|  0 |   1 | goodbye | False |
|  1 |   2 | cruel   | True  |
|  2 |   3 | world   | False |

рд╣реЗ github gists рд╡рд╛рдкрд░реВрди рдордзреНрдпрдо рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рдЗрдЯрд╡рд░ рд╕рд╛рд░рдгреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдХрд░рддреЗ.

рдкрд╛рдВрдбрд╛ 1.0 рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдЖрдгрд▓реЗ

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдгрд┐ рдмреБрд▓рд┐рдпрдирд╕рд╛рдареА рдирд╡реАрди рдкреНрд░рдХрд╛рд░

рдкрд╛рдВрдбрд╛ 1.0 рд░рд┐рд▓реАрдЭрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдирд╡реАрди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреНрд░рдХрд╛рд░ рддреНрдпрд╛рдВрдЪреЗ API рдЕрдЬреВрдирд╣реА рдмрджрд▓реВ рд╢рдХрддрд╛рдд, рдореНрд╣рдгреВрди рддреЗ рд╕рд╛рд╡рдзрдЧрд┐рд░реАрдиреЗ рд╡рд╛рдкрд░рд╛. рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдкрд╛рдВрдбрд╕ рдЬреЗрдереЗ рдЕрд░реНрде рдЕрд╕реЗрд▓ рддреЗрдереЗ рдирд╡реАрди рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддрд╛рдд.

рдЖрддреНрддрд╛рд╕рд╛рдареА, рдХрд╛рд╕реНрдЯ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

>>> 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛