ื•ื•ืึธืก ืคึผืึทื ื“ืึทืก 1.0 ื’ืขื‘ืจืื›ื˜ ืื•ื ื“ื–

ื•ื•ืึธืก ืคึผืึทื ื“ืึทืก 1.0 ื’ืขื‘ืจืื›ื˜ ืื•ื ื“ื–

ืื•ื™ืฃ 9 ื™ืื ื•ืืจ, Pandas 1.0.0rc ืื™ื– ื‘ืืคืจื™ื™ื˜. ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– 0.25.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื”ื•ื™ืคึผื˜ ืžืขืœื“ื•ื ื’ ื›ึผื•ืœืœ ืคื™ืœืข ื’ืจื•ื™ืก ื ื™ื™ึท ืคึฟืขื™ึดืงื™ื™ื˜ืŸ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื™ืžืคึผืจื•ื•ื•ื“ ืึธื˜ืึทืžืึทื˜ื™ืง ื“ืึทื˜ืึทืคืจืึทืžืข ืกืึทืžืขืจื™ื–ื™ื™ืฉืึทืŸ, ืžืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ, ื ื™ื™ึท ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก ืื•ืŸ ืืคื™ืœื• ืึท ื ื™ื™ึทืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึผืœืึทืฅ.

ืึทืœืข ืขื ื“ืขืจื•ื ื’ืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ื“ืึธ, ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืžื™ืจ ื‘ืึทื’ืจืขื ืขืฆืŸ ื–ื™ืš ืฆื• ืึท ืงืœื™ื™ืŸ, ื•ื•ื™ื™ื ื™ืงืขืจ ื˜ืขื›ื ื™ืฉ ืจืขืฆืขื ื–ื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ื–ืื›ืŸ.

ืื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื•ื•ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ื ื™ืฆืŸ ืคึผื™ืคึผ, ืึธื‘ืขืจ ื–ื™ื ื˜ ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ ืคึผืึทื ื“ืึทืก 1.0 ืื™ื– ื ืึธืš ืžืขืœื“ื•ื ื’ ืงืึทื ื“ื™ื“ืึทื˜, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื•ื•ืขืจืกื™ืข:

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

ืึทืจื•ื™ืกืคื™ืจืŸ ื˜ื™ืฉืŸ ืื™ืŸ ืžืึทืจืงื“ืึธื•ื•ืŸ ืคึฟืึธืจืžืึทื˜

ืึทืŸ ื’ืœื™ื™ืš ื›ื™ื“ืขืฉ ืื™ื– ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืึทืจื•ื™ืกืคื™ืจืŸ ื“ืึทื˜ืึทืคืจืึทืžืขืก ืฆื• ืžืึทืจืงื“ืึทื•ืŸ ื˜ื™ืฉืŸ ื ื™ืฆืŸ DataFrame.to_markdown.

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

ื“ืึธืก ืžืื›ื˜ ืขืก ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืฆื• ืึทืจื•ื™ืกื’ืขื‘ืŸ ื˜ื™ืฉืŸ ืื•ื™ืฃ ื–ื™ื™ื˜ืœืขืš ื•ื•ื™ ืžืขื“ื™ื•ื ื ื™ืฆืŸ ื’ื™ื˜ื”ื•ื‘ ื’ื™ืกืฅ.

ื•ื•ืึธืก ืคึผืึทื ื“ืึทืก 1.0 ื’ืขื‘ืจืื›ื˜ ืื•ื ื“ื–

ื ื™ื• ื˜ื™ื™ืคึผืก ืคึฟืึทืจ ืกื˜ืจื™ื ื’ืก ืื•ืŸ ื‘ื•ืœืึทื ื–

ื“ื™ Pandas 1.0 ืžืขืœื“ื•ื ื’ ืื•ื™ืš ืฆื•ื’ืขื’ืขื‘ืŸ ื ื™ื™ึท ื™ืงืกืคึผืขืจืžืขื ืึทืœ ื˜ื™ื™ืคึผืก. ื–ื™ื™ืขืจ ืึทืคึผื™ ืงืขืŸ ื ืึธืš ื˜ื•ื™ืฉืŸ, ืึทื–ื•ื™ ื ื•ืฆืŸ ืขืก ืžื™ื˜ ื•ื•ืึธืจืขื ืขืŸ. ืึธื‘ืขืจ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืคึผืึทื ื“ืึทืก ืจืขืงืึทืžืขื ื“ื– ื ื™ืฆืŸ ื ื™ื™ึทืข ื˜ื™ื™ืคึผืก ื•ื•ื• ื ืึธืจ ืขืก ืžืื›ื˜ ื–ื™ื ืขืŸ.

ืคึฟืึทืจ ืื™ืฆื˜, ื“ื™ ื’ืขืฉื˜ืึทืœื˜ ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ื‘ืคื™ืจื•ืฉ:

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

ื‘ืึทืžืขืจืงืŸ ื•ื•ื™ ื“ื™ ื–ื™ื™ึทืœ ื“ื˜ื™ืคึผืข ื“ื™ืกืคึผืœื™ื™ื– ื ื™ื™ึทืข ื˜ื™ื™ืคึผืก - ืฉื˜ืจื™ืงืœ ะธ bool.

ื“ื™ ืžืขืจืกื˜ ื ื•ืฆื™ืง ืฉื˜ืจื™ืš ืคื•ืŸ ื“ื™ ื ื™ื™ึท ืฉื˜ืจื™ืงืœ ื˜ื™ืคึผ ืื™ื– ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื‘ืœื•ื™ื– ืจื•ื“ืขืจืŸ ืฉืคืืœื˜ืŸ ืคื•ืŸ ื“ืึทื˜ืึทืคืจืึทืžืขืก. ื“ืึธืก ืงืขืŸ ืžืึทื›ืŸ ื“ื™ ืคึผืึทืจืกื™ื ื’ ื˜ืขืงืกื˜ ื“ืึทื˜ืŸ ืคื™ืœ ื’ืจื™ื ื’ืขืจ:

df.select_dtypes("string")

ื‘ื™ื– ืึทื”ืขืจ, ืจื•ื“ืขืจืŸ ืฉืคืืœื˜ืŸ ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืึธืŸ ื‘ืคื™ืจื•ืฉ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื ืขืžืขืŸ.

ืื™ืจ ืงืขื ื˜ ืœื™ื™ืขื ืขืŸ ืžืขืจ ื•ื•ืขื’ืŸ ื ื™ื™ึทืข ื˜ื™ื™ืคึผืก ื“ืึธ.

ื“ืื ืง ืื™ืจ ืคึฟืึทืจ ืœื™ื™ืขื ืขืŸ! ื“ื™ ืคื•ืœ ืจืฉื™ืžื” ืคื•ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ, ื•ื•ื™ ืฉื•ื™ืŸ ื“ืขืจืžืื ื˜, ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ื“ืึธ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’