28 фСвраля 2022

🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ПО (систСмы PDM/PLM) с 1993 Π³ΠΎΠ΄Π°, компания "Π˜ΠΠ’Π•Π ΠœΠ•Π₯" (www.intermech.ru). Π’ 2020-ΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» курсы "ΠžΡΠ½ΠΎΠ²Ρ‹ Data Science" (минская IT Academy) Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚-ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ тСхничСской Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ с английского языка.
НовыС ΠΈ малоизвСстныС возмоТности Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ спСциалисту ΠΏΠΎ Data Science.
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Бколько Ρ€Π°Π· Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ: Β«Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ я ΠΌΠΎΠ³ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² PandasΒ»?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ это ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅! Pandas Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ практичСски Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. Однако подобная Π³Π»ΡƒΠ±ΠΈΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ†Π΅Π½Ρƒ. МногиС элСгантныС возмоТности, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ сцСнарии, Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ Π² Π³Π»ΡƒΠ±ΠΈΠ½Π°Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π·Π°Ρ‚Π΅Ρ€Ρ‚Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ функциями.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ попытаСтся Π·Π°Π½ΠΎΠ²ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ для вас ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности Pandas ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ Π²Π°ΠΌ казалось.

Автор <a href="https://www.pexels.com/@introspectivedsgn" target="_blank" rel="noopener noreferrer nofollow">Erik Mclean</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://www.pexels.com/photo/unrecognizable-man-in-panda-head-sitting-near-car-5199661" target="_blank" rel="noopener noreferrer nofollow">Pexels</a>
Автор Erik Mclean. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels

1. ExcelWriter

ExcelWriter – это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ класс для создания Ρ„Π°ΠΉΠ»ΠΎΠ² Excel (с листами!) ΠΈ записи Π² Π½ΠΈΡ… DataFrame. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…:

        # Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…
diamonds = sns.load_dataset("diamonds")
tips = sns.load_dataset("tips")

# ПишСм ΠΎΠ±Π° Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ» Excel
with pd.ExcelWriter("data/data.xlsx") as writer:
    diamonds.to_excel(writer, sheet_name="diamonds")
    tips.to_excel(writer, sheet_name="tips")
    

Π£ класса Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для опрСдСлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° DateTime: Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Excel ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли лист сущСствуСт ΠΈ Ρ‚. ΠΏ. Π”Π΅Ρ‚Π°Π»ΠΈ см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

2. pipe

Автор <a href="https://www.pexels.com/@leah-kelley-50725" target="_blank" rel="noopener noreferrer nofollow">Leah Kelley</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://www.pexels.com/photo/grayscale-photo-of-man-holding-tobacco-pipe-192473/" target="_blank" rel="noopener noreferrer nofollow">Pexels</a>
Автор Leah Kelley. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels

pipe – ΠΎΠ΄Π½Π° ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для провСдСния очистки Π΄Π°Π½Π½Ρ‹Ρ… Π² Pandas ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Она позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° допустим, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² (remove_duplicates), удалСния выбросов (remove_outliers) ΠΈ кодирования ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² (encode_categoricals), каТдая со своими Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ:

        df_preped = (diamonds.pipe(drop_duplicates).
                      pipe(remove_outliers, ['price', 'carat', 'depth']).
                      pipe(encode_categoricals, ['cut', 'color', 'clarity'])
            )
    

МнС нравится, Ρ‡Ρ‚ΠΎ эта функция ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ Sklearn. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС – Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ эту ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° data scientist’а»

3. factorize

Π­Ρ‚Π° функция – Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° LabelEncoder ΠΈΠ· Sklearn Π² Pandas:

        # ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° [0] Π² ΠΊΠΎΠ½Ρ†Π΅
diamonds["cut_enc"] = pd.factorize(diamonds["cut"])[0]

>>> diamonds["cut_enc"].sample(5)

52103    2
39813    0
31843    0
10675    0
6634     0
Name: cut_enc, dtype: int64
    

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ LabelEncoder'Π°, factorize Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ столбСц ΠΈ список ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ.

        codes, unique = pd.factorize(diamonds["cut"], sort=True)

>>> codes[:10]
array([0, 1, 3, 1, 3, 2, 2, 2, 4, 2], dtype=int64)

>>> unique
['Ideal', 'Premium', 'Very Good', 'Good', 'Fair']
    

4. explode – Π‘Π°Π±Π°Ρ…!

 Автор <a href="https://unsplash.com/@joshuas" target="_blank" rel="noopener noreferrer nofollow">Joshua Sukoff</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://unsplash.com/s/photos/explode" target="_blank" rel="noopener noreferrer nofollow">Unsplash</a>
Автор Joshua Sukoff. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Unsplash

explode – это функция с интСрСсным ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π²Π·Ρ€Ρ‹Π²). Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π° ΠΏΠΎΡ‚ΠΎΠΌ объясним:

        data = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("dirty")

>>> data
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π’ столбцС dirty Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранятся Π½Π΅ СдинствСнныС значСния, Π° списки. Π’Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² опросах, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вопросы Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ нСсколько ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

        >>> data.explode("dirty", ignore_index=True)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

explode распространяСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ячСйки с массивоподобным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π° нСсколько строк. УстановитС ignore_index Π² True, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ числовой индСкс ΠΏΠΎ порядку.

5. squeeze

 Автор <a href="https://www.pexels.com/@cottonbro?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" target="_blank" rel="noopener noreferrer nofollow">cottonbro</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://www.pexels.com/photo/close-up-photo-of-sausage-5875701/" target="_blank" rel="noopener noreferrer nofollow">Pexels</a>
Автор cottonbro. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° функция с Π·Π°Π±Π°Π²Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ – это squeeze (сТатиС), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΈΡ…, Π½ΠΎ Π½Π°Π΄ΠΎΠ΅Π΄Π»ΠΈΠ²Ρ‹Ρ… случаях. Один ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… случаСв – ΠΊΠΎΠ³Π΄Π° запрос подмноТСства ΠΈΠ· DataFrame Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

        subset = diamonds.loc[diamonds.index < 1, ["price"]]

>>> subset
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π₯отя Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ – всСго ΠΎΠ΄Π½Π° ячСйка, ΠΎΠ½ возвращаСтся ΠΊΠ°ΠΊ DataFrame. Π­Ρ‚ΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π°ΠΌ придСтся Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ .loc ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ имя столбца, Ρ‚Π°ΠΊ ΠΈ индСкс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ.

Но Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎ squeeze, Π½Π°ΠΌ Π½Π΅ придСтся этого Π΄Π΅Π»Π°Ρ‚ΡŒ. Π­Ρ‚Π° функция позволяСт ΡƒΠ±Ρ€Π°Ρ‚ΡŒ оси ΠΈΠ· DataFrame ΠΈΠ»ΠΈ Series, содСрТащих Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ячСйку. НапримСр:

        >>> subset.squeeze()
326
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ скалярноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ось Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ:

        >>> subset.squeeze("columns")  # ΠΈΠ»ΠΈ "rows"

0    326
Name: price, dtype: int64
    

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ squeeze Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с DataFrame ΠΈ Series, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

6. between

 Автор <a href="https://unsplash.com/@jujudreaminx" target="_blank" rel="noopener noreferrer nofollow">Justin Dream</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://unsplash.com/photos/BxNyZdCbdz0" target="_blank" rel="noopener noreferrer nofollow">Pexels</a>
Автор Justin Dream. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels

Π­Ρ‚ΠΎ довольно изящная функция для Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ индСксирования числовых ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΏΠΎ принадлСТности Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ:

        # Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚Ρ‹ с Ρ†Π΅Π½ΠΎΠΉ ΠΎΡ‚ 3500 Π΄ΠΎ 3700 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ²
diamonds[diamonds["price"]\
      .between(3500, 3700, inclusive="neither")].sample(5)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

7. T

Π£ всСх DataFrame Π΅ΡΡ‚ΡŒ простой Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ T, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ «транспонированиС». Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ часто Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ Π΅Π³ΠΎ довольно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ DataFrame'ΠΎΠ² послС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° describe():

        >>> boston.describe().T.head(10)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Набор Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ нСдвиТимости Бостона содСрТит 30 числовых столбцов. Если просто Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ describe, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ DataFrame Π±ΡƒΠ΄Π΅Ρ‚ сТат ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ статистику Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. ВранспонированиС помСняСт оси мСстами, ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΆΠ΅ статистичСскиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

8. Π‘Ρ‚ΠΈΠ»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Pandas

А Π²Ρ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Pandas позволяСт Π²Π°ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ стили DataFrame'ΠΎΠ²?

Π£ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ style, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π²Π΅Ρ€ΡŒ ΠΊ настройкам ΠΈ стилям, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашими знаниями HTML ΠΈ CSS. Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎ всСм, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ style, ΠΏΠΎΠΊΠ°ΠΆΡƒ лишь свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

        >>> diabetes.describe().T.drop("count", axis=1)\
                 .style.highlight_max(color="darkred")
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

ΠœΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ ячСйки, содСрТащиС ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ стилизатор – background_gradient, ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ячСйкам Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π½Π° основС ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

        diabetes.describe().T.drop("count", axis=1).style.background_gradient(
    subset=["mean", "50%"], cmap="Reds"
)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ describe для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ со мноТСством столбцов ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΡΡƒΠΌΠΌΠ°Ρ€Π½ΡƒΡŽ статистику. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ стилизатору.

9. ΠžΠΏΡ†ΠΈΠΈ Pandas

Как ΠΈ Π² Matplotlib, Π² Pandas Π΅ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ настройки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ для настройки повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

        >>> dir(pd.options)
['compute', 'display', 'io', 'mode', 'plotting']
    

Π­Ρ‚ΠΈ настройки Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° 5 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊΠΈΠ΅ настройки Π΅ΡΡ‚ΡŒ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ display:

        >>> dir(pd.options.display)

['chop_threshold',
 'max_columns',
 'max_colwidth',
 'max_info_columns',
 'max_info_rows',
 'max_rows',
 ...
 'precision',
 'show_dimensions',
 'unicode',
 'width']
    

Π’ Π³Ρ€ΡƒΠΏΠΏΠ΅ display ΠΌΠ½ΠΎΠ³ΠΎ настроСк, Π½ΠΎ я Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ max_columns ΠΈ precision:

        # Π£Π±Ρ€Π°Ρ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ количСство столбцов
pd.options.display.max_columns = None

# ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 5 Ρ†ΠΉΡ„Ρ€ послС запятой
pd.options.display.precision = 5  # ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ
    

Π‘ΠΎΠ»ΡŒΡˆΠ΅ подробностСй ΠΎΠ± этих Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настройках ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

10. convert_dtypes

ВсС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Pandas ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ столбцам Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… object. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ convert_dtypes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…:

        sample = pd.read_csv(
    "data/station_day.csv",
    usecols=["StationId", "CO", "O3", "AQI_Bucket"],
)

>>> sample.dtypes

StationId      object
CO            float64
O3            float64
AQI_Bucket     object
dtype: object

>>> sample.convert_dtypes().dtypes

StationId      string
CO            float64
O3            float64
AQI_Bucket     string
dtype: object
    

К соТалСнию, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‹ ΠΈΠ·-Π·Π° нюансов Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΈΡ… прСдставлСния.

11. select_dtypes

Ѐункция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ постоянно – это select_dtypes. Π•Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ ΠΈΠ· Π΅Π΅ названия: Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π£ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ include ΠΈ exclude, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ столбцы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовыС столбцы, ΡƒΠΊΠ°Π·Π°Π² np.number:

        # Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовыС столбцы
diamonds.select_dtypes(include=np.number).head()
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…:

        # Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ числовыС столбцы
diamonds.select_dtypes(exclude=np.number).head()
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

12. mask

 Автор <a href="https://www.pexels.com/@pixabay" target="_blank" rel="noopener noreferrer nofollow">Pixabay</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://www.pexels.com/photo/guy-fawkes-mask-and-red-flower-on-hand-38275/" target="_blank" rel="noopener noreferrer nofollow">Pexels.</a>
Автор Pixabay. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels.

Ѐункция mask позволяСт быстро Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π² Ρ‚Π΅Ρ… ячСйках, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ условиС. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ опроса людСй ΠΎΡ‚ 50 Π΄ΠΎ 60:

        # Create sample data
ages = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("ages")

ages
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ возраст, выходящий Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΡ‚ 50 Π΄ΠΎ 60 Π»Π΅Ρ‚, ошибками Π²Π²ΠΎΠ΄Π° (Ρ‚Π°ΠΊΠΈΡ… ошибок Π΄Π²Π΅ – 49 ΠΈ 66 Π»Π΅Ρ‚), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π½Π° NaN:

        ages.mask(cond=~ages["ages"].between(50, 60), other=np.nan)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, mask замСняСт значСния ячССк, Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ cond, значСниями other.

13. min ΠΈ max ΠΏΠΎ строкам ΠΈ столбцам

Π₯отя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ min ΠΈ max ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстны, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для особых случаСв. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…:

        index = ["Diamonds", "Titanic", "Iris", "Heart Disease", "Loan Default"]
libraries = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"]

df = pd.DataFrame(
    {lib: np.random.uniform(90, 100, 5) for lib in libraries}, index=index
)

>>> df
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π­Ρ‚ΠΎΡ‚ DataFrame содСрТит Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²ΠΈΠ΄ΠΎΠ² Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ бустинга Π½Π° пяти Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ элСгантно это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ max:

        >>> df.max(axis=1)

Diamonds         99.52684
Titanic          99.63650
Iris             99.10989
Heart Disease    99.31627
Loan Default     97.96728
dtype: float64
    

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ максимум ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ столбцу, достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ 1 Π½Π° 0.

14. nlargest ΠΈ nsmallest

Иногда Π²Π°ΠΌ нСдостаточно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ максимальноС ΠΈΠ»ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ N ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… (ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ…) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Для этого пригодятся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ nlargest ΠΈ nsmallest. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ 5 самых Π΄ΠΎΡ€ΠΎΠ³ΠΈΡ… ΠΈ самых Π΄Π΅ΡˆΠ΅Π²Ρ‹Ρ… Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΎΠ²:

        diamonds.nlargest(5, "price")
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ
        diamonds.nsmallest(5, "price")
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

15. idxmax ΠΈ idxmin

Когда Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ max ΠΈΠ»ΠΈ min для столбца, pandas Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ максимальноС ΠΈΠ»ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Однако ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° позиция этого значСния, Π° Π½Π΅ ΠΎΠ½ΠΎ само. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ idxmax ΠΈ idxmin:

        >>> diamonds.price.idxmax()
27749

>>> diamonds.carat.idxmin()
14
    

МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ axis='columns', ΠΏΡ€ΠΈ этом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ индСкса Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ столбца.

16. value_counts с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ dropna=False

Для нахоТдСния ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ комбинация isnull ΠΈ sum ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρƒ массива. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ value_counts, Ссли Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

        ames_housing = pd.read_csv("data/train.csv")

>>> ames_housing["FireplaceQu"].value_counts(dropna=False, normalize=True)

NaN    0.47260
Gd     0.26027
TA     0.21438
Fa     0.02260
Ex     0.01644
Po     0.01370
Name: FireplaceQu, dtype: float64
    

Π’ этом столбцС 47% пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (NaN).

17. clip

 Автор <a href="https://www.pexels.com/@ann-h-45017" target="_blank" rel="noopener noreferrer nofollow">Ann H</a>. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ <a href="https://www.pexels.com/photo/a-lot-of-paper-clips-2448452/" target="_blank" rel="noopener noreferrer nofollow">Pexels</a>
Автор Ann H. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Pexels

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ выбросов часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Ѐункция clip позволяСт ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ выбросы, выходящиС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями. Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с возрастами людСй ΠΎΡ‚ 50 Π΄ΠΎ 60:

🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

На этот Ρ€Π°Π· ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ значСния, выходящиС Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ 50 Π΄ΠΎ 60, ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌΠΈ значСниями Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

        ages.clip(50, 60)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Быстро ΠΈ эффСктивно!

18. at_time ΠΈ between_time

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с высокой ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ 100 часовых ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²:

        index = pd.date_range("2021-08-01", periods=100, freq="H")
data = pd.DataFrame({"col": list(range(100))}, index=index)

>>> data.head()
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Ѐункция at_time позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ значСния ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Π°Ρ‚Π΅ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ всС строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ 15.00:

        data.at_time("15:00")
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ between_time, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строки Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

        from datetime import datetime

>>> data.between_time("09:45", "12:00")
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ DateTimeIndex, ΠΈ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строки Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ DateTime, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ between.

19. bdate_range

bdate_range – это функция для быстрого создания индСксов TimeSeries с частотой Π² ΠΎΠ΄ΠΈΠ½ бизнСс-дСнь.

        series = pd.bdate_range("2021-01-01", "2021-01-31")  # A period of one month

>>> len(series)
21
    

Частота Π² бизнСс-дСнь часто встрСчаСтся Π² финансовом ΠΌΠΈΡ€Π΅. Π—Π½Π°Ρ‡ΠΈΡ‚, эта функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ для пСрСиндСксирования ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ reindex.

20. autocorr

Один ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ – это ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ автокоррСляции ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. АвтокоррСляция – это старый Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ коэффициСнт коррСляции, Π½ΠΎ взятый ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π»Π°Π³ΠΎΠΌ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎΡ‡Π½Π΅Π΅, автокоррСляция ΠΏΡ€ΠΈ lag=k вычисляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сдвигаСтся k ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

        time_series = tips[["tip"]]
time_series["lag_1"] = time_series["tip"].shift(1)
time_series["lag_2"] = time_series["tip"].shift(2)
time_series["lag_3"] = time_series["tip"].shift(3)
time_series["lag_4"] = time_series["tip"].shift(4)
# time_series['lag_k'] = time_series['tip'].shift(k)

>>> time_series.head()
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

2. РассчитываСтся коррСляция ΠΌΠ΅ΠΆΠ΄Ρƒ исходным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π»Π°Π³ΠΎΠΌ.

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ всС это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Pandas autocorr:

        # АвтокоррСляция tip ΠΏΡ€ΠΈ lag_8
>>> time_series["tip"].autocorr(lag=8)
0.07475238789967077
    

О ваТности автокоррСляции для Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

21. hasnans

Pandas ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ для простой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, содСрТит Π»ΠΈ Series ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ пустыС значСния – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ hasnans:

        series = pd.Series([2, 4, 6, "sadf", np.nan])

>>> series.hasnans
True
    

Богласно Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ сущСствСнно ускоряСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Series.

22. at ΠΈ iat

Π­Ρ‚ΠΈ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа ΠΊ значСниям – Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ быстрыС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ loc ΠΈ iloc, Π½ΠΎ с сущСствСнным нСдостатком: ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

        # [index, label]
>>> diamonds.at[234, "cut"]
'Ideal'

# [index, index]
>>> diamonds.iat[1564, 4]
61.2

# Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ 16541-ю строку столбца price
>>> diamonds.at[16541, "price"] = 10000
    

23. argsort

Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ индСксы, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ отсортированный массив:

        tips.reset_index(inplace=True, drop=True)

sort_idx = tips["total_bill"].argsort(kind="mergesort")

# Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ значСния `tips` Π² порядкС сортировки ΠΏΠΎ total_bill
tips.iloc[sort_idx].head()
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

24. ΠœΠ΅Ρ‚ΠΎΠ΄ доступа cat

ΠžΠ±Ρ‰Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Pandas позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python Π½Π° Π΄Π°Ρ‚Π°Ρ… ΠΈ строках с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа Π²Ρ€ΠΎΠ΄Π΅ dt ΠΈΠ»ΠΈ str. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Pandas Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… category для ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

        >>> diamonds.dtypes

carat       float64
cut        category
color      category
clarity    category
depth       float64
table       float64
price         int64
x           float64
y           float64
z           float64
cut_enc       int64
dtype: object
    

Если столбСц ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ category, Π½Π°Π΄ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа cat. НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΊΠΈ Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ΠΎΠ²:

        >>> diamonds["cut"].cat.categories
['Ideal', 'Premium', 'Very Good', 'Good', 'Fair']
    

Π•ΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ remove_categories, rename_categories ΠΈ Ρ‚. Π΄.:

        diamonds["new_cuts"] = diamonds["cut"].cat.rename_categories(list("ABCDE"))

>>> diamonds["new_cuts"].cat.categories
Index(['A', 'B', 'C', 'D', 'E'], dtype='object')
    

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, доступных Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа cat, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь.

25. GroupBy.nth

Π­Ρ‚Π° функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² GroupBy. ПослС Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ n-ю строку ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹:

        diamonds.groupby("cut").nth(5)
    
🐼 25 возмоТностСй Pandas, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π½Π΅ Π·Π½Π°Π»ΠΈ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€ΠΎΠ΄Π΅ Dask ΠΈ datatable ΠΏΠΎΡ‚ΠΈΡ…ΠΎΠ½ΡŒΠΊΡƒ Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‚ Pandas благодаря ΠΈΡ… ΡΠ²Π΅Ρ€ΠΊΠ°ΡŽΡ‰ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΌ возмоТностям для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… массивов Π΄Π°Π½Π½Ρ‹Ρ…, Pandas ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся самым популярным срСдством манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² экосистСмС Data Science Π½Π° Python.

Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° – ΠΎΠ±Ρ€Π°Π·Π΅Ρ† для подраТания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° прСкрасно интСгрируСтся Π² соврСмСнный стСк SciPy.

Бпасибо за вниманиС!

***

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•