πŸ€– Numpy, Pandas, matplotlib – Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ для старта Π² Machine Learning

Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±Π·ΠΎΡ€Π΅ ΠΌΡ‹ рассмотрим Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ для старта Π² Machine Learning. Для этого понадобятся: Python 3.8+, Jupyter Notebook, numpy, pandas ΠΈ matplotlib.

ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Jupyter

Jupiter Notebook – ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄, позволяСт ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ ΠΊΠΎΠ΄ тСкстом, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌΠΈ, анимациями, изобраТСниями. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Install ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Jupyter Notebook ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свСдСния для Π΅Π³ΠΎ установки, Π° краткая инструкция доступна ΠΈ Π½Π° нашСм сайтС. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ использования Jupyter Notebook ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Visual Studio Code ΠΈΠ»ΠΈ PyCharm с установлСнными ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ.

Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ New Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ экрана.

Главная страницы Jupyter Notebook
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий Python. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ, помня, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ являСтся использованиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, созданноС miniconda.

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ:

Новый Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ Π² Jupyter Notebook

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ доступна пустая ячСйка для вставки ΠΊΠΎΠ΄Π°. Π’Π²Π΅Π΄Π΅ΠΌ Π² Π½Π΅Π΅ print("Hello proglib.io") ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ Ctrl+Enter. Π­Ρ‚ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Jupyter Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот участок ΠΊΠΎΠ΄Π° ΠΈ вывСсти ΠΏΠΎΠ΄ ячСйкой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ выполнСния.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ячСйки

Доступна похоТая Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ комбинация клавиш Shift+Enter, которая выполняСт ΠΊΠΎΠ΄ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ячСйкС ΠΈ добавляСт ΠΏΠΎΠ΄ Π½Π΅ΠΉ Π½ΠΎΠ²ΡƒΡŽ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ ячССк, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π² Jupyter Notebook, позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ markdown. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ячСйки, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π»Π°Ρ‚ΠΈΠ½ΡΠΊΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ M ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС Π²Π²Π΅Ρ€Ρ…Ρƒ.

Makdown ячСйка

ПолноС описаниС синтаксиса этих ячССк ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹:

NumPy. ΠœΠ°ΡΡΠΈΠ²Ρ‹, Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, индСксация

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² NumPy, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ, поставим ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ:

pip install numpy pandas matplotlib
NumPy – открытая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ n-ΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² Python ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство быстрых ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

NumPy прСдоставляСт свой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами – ndarray. Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ массива Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ осями (axis). НапримСр, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 2Ρ…2 Ρ‚ΠΈΠΏΠ° ndarray ΠΈΠΌΠ΅Π΅Ρ‚ 2 оси (axis).

БозданиС массивов NumPy

И ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для этого Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ячСйку ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈ запуститС Π΅Π³ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

import numpy as np

Для получСния количСства осСй Π² массивС (здСсь ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ словом массив Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ массив NumPy), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ свойству ndim:

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ свойство ndim

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, создаСм массив a1 ΠΈΠ· списка чисСл. ΠžΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌΡΡ ΠΊ свойству массива ndim, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Для этого Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° array Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ список, Π° список списков.

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ свойство ndim

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСство осСй, Π½ΠΎ ΠΈ количСство элСмСнтов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ свойство shape. Для Π½Π°ΡˆΠΈΡ… списков ΠΎΠ½ΠΎ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π˜ΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌ свойство shape

Бписок Π°1 прСдставляСт собой ΠΎΠ΄Π½Ρƒ ось ΠΈΠ· пяти элСмСнтов. Бписок a2 – ΠΎΠ΄Π½Π° ось ΠΈΠ· Π΄Π²ΡƒΡ… элСмСнтов, Ρ‚.Π΅. ΠΈΠ· Π΄Π²ΡƒΡ… строк, ΠΈ вторая ось ΠΈΠ· пяти элСмСнтов, Ρ‚.Π΅. ΠΈΠ· пяти столбцов.

NumPy прСдоставляСт довольно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для построСниС массивов. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…. ΠœΡ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ array, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ список python Π² массив NumPy.

БущСствуСт довольно ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… массивов, примСняСмых Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… расчСтах: Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅, Π½ΡƒΠ»Π΅Π²Ρ‹Π΅, пустыС ΠΈ Ρ‚.Π΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив, состоящий строго ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ones((n,m)).

np.ones((5, 6))

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив, состоящий строго ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Π½ΡƒΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ zeros((n,m)). Π•Π³ΠΎ синтаксис Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ones() ΠΈ zeros()

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, состоящая ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ† Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π½ΡƒΠ»Π΅ΠΉ, называСтся Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ ΠΈ строится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° identity(n). ЕдинствСнный Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – количСство строк ΠΈ столбцов.

np.identity(3)

ΠŸΡƒΡΡ‚Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° empty((n, m)). Π’Ρ‹Π·ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° empty()

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° состоит Π½Π΅ ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ, Π° ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… чисСл Ρ‚ΠΈΠΏΠ° float.

Π’ NumPy Π΅ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ range: np.arange(<start>, stop, <step>). Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС значСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ†Π΅Π»Ρ‹Π΅ числа, Ρ‚Π°ΠΊ ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. НапримСр:

np.arange(3, 22, 3)
np.arange(1.5, 6.7, 0.7)
ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° arange()

ΠœΠ΅Ρ‚ΠΎΠ΄ reshape(a, newshape, order='C') позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ (количСство осСй) ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива. Для наглядности Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ массив ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

A = np.arange(9) # ΠΏΠΎΠ΄ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
A.reshape((4,2)) # измСняСм Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… строк ΠΈ Π΄Π²ΡƒΡ… столбцов
A..reshape((2, -1)) # Π΄Π΅Π»Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… строк
ИзмСнСниС Ρ„ΠΎΡ€ΠΌΡ‹ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ reshape()

NumPy позволяСт Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ сСбС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π‘ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

C = A.reshape((2, -1))

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ C, Π½ΡƒΠΆΠ½ΠΎ просто ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ свойству Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Ρ€
C.T 
ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив, состоящий ΠΈΠ· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива. Для этого сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ numpy.tile(A, reps), Π³Π΄Π΅ A – ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ массив, Π° resp – шаблон, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив А. Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Для этого создадим список A ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

A = np.arange(3)
  • Π’Ρ‹Π·ΠΎΠ² np.tile(A, (2,2)) построит Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π°ΠΌΠΈ массива A Π΄Π²Π° Ρ€Π°Π·Π° ΠΏΠΎ-Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ Π΄Π²Π° Ρ€Π°Π·Π° ΠΏΠΎ-Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.
  • Π’Ρ‹Π·ΠΎΠ² np.tile(A, (3,1)) построит Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π°ΠΌΠΈ массива A Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° ΠΏΠΎ-Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·Π° ΠΏΠΎ-Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° tile()

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами NumPy

NumPy прСдоставляСт мноТСство поэлСмСнтных арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ массивами: слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, тригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, гипСрболичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½Π°Ρ опСрация воздСйствуСт Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт. Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ складываСт элСмСнты, находящиСся Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… индСксах. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ D ΠΈ E Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 3Ρ…3. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, слоТим ΠΎΠ±Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠΌ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ E с числом 10. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ доступны Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅, ссылка Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

D = np.arange(9).reshape((3,3))
E = np.arange(2, 11).reshape((3,3))
ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ массивами numpy

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ Π·Π½Π°ΠΊΠ° * для поэлСмСнтного пСрСмноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† выглядит странным. ΠžΡ‚ Π½Π΅Π³ΠΎ, согласно ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ оТидаСтся Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ – ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ – сумма ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ строки Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Но ΠΎΠ½ позволяСт поэлСмСнтно ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Для классичСского умноТСния Π² NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ dot(a, b). ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π΅Π³ΠΎ ΠΊ нашим ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌ D ΠΈ E.

np.dot(D,E)
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ максимум ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ max().

E.max() 
ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся axis - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ максимум ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡŽ.

E.max(axis=0) # Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ максимумы Π² столбцах
E.max(axis=1) # Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ максимумы Π² строках
Поиски максимума Π² строках ΠΈ столбцах ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ sum():

E.sum(axis=0) # Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ сумму ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ столбца
E.sum(axis=1) # Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ сумму ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строк
Поиск суммы строк ΠΈ столбцов ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ массивов NumPy

ΠŸΠ°ΠΊΠ΅Ρ‚ NumPy ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способ индСксации массивов. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, создадим сСбС массив A:

A = np.arange(10)

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ классичСскиС срСзы, ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Для дСмонстрации срСзов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ массиву A ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π΅ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΡΡ‚ΡŒΡŽ строками ΠΈ двумя столбцами:

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ python срСзы
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ python срСзы

Для сортировки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты списка ΠΎΡ‚ нуля Π΄ΠΎ дСвяти. Для этого вмСсто индСксов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскиС выраТСния. Для связки Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.logical_and() ΠΈ np.logical_or().

A[A % 2 == 0] # Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива A
A[np.logical_and(A != 5, A != 0)] # Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС элСмСнты массива A, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ ΠΈ пяти
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Pandas

Pandas – ΠΎΡ‡Π΅Π½ΡŒ популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° python. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° основС numpy ΠΈ прСдоставляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… для манипулирования с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ врСмСнны́ми рядами. ΠœΡ‹ с Π²Π°ΠΌΠΈ ΡƒΠΆΠ΅ установили этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚.
import os
import pandas as pd

И, для интСрСса, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с pandas Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ классичСского датасСта Titanic ΠΈΠ· сорСвнований kaggle. ДатасСт прСдставляСт собой Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ *.csv. Для Π΅Π³ΠΎ чтСния pandas прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… pandas – dataframe.

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ датасСт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

os.system('wget -O titanic.csv https://www.dropbox.com/s/1qtgllk0d89bt3d/titanic.csv?dl=1')

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ систСмы Windows ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ссылкС ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ скачанный Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ΠΎΠΌ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π±Π»ΠΎΠΊΠ½ΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» titanic.csv. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pandas.

data = pd.read_csv('titanic.csv')

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ data прСдставляСт собой Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ pandas ΠΈ ΠΏΠΎ сути своСй являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π΅ структуру ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ head(n=5), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ n строк Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°.

data.head()
ΠœΠ΅Ρ‚ΠΎΠ΄ head()

Для получСния ΠΈΠΌΠ΅Π½ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ сущСствуСт свойство columns.

data.columns
ИмСна ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° стандартной индСксации списков Π² python ΠΈ индСксации numpy.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²

Помимо Ρ‚Π°ΠΊΠΎΠ³ΠΎ способа, pandas прСдоставляСт Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° индСксации:

  • iloc для индСксации ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° столбцов ΠΈ строк
  • loc для индСксации ΠΏΠΎ строковым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ строк ΠΈ названиям столбцов.

НапримСр, Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ» пассаТиров для строк с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎ ΡΠ΅Π΄ΡŒΠΌΡƒΡŽ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ loc ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

data.loc[1:7, 'sex']

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ строк, Ρƒ нас это числа, Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ столбСц ΠΈΠ»ΠΈ столбцы. На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π°, Π½ΠΎ ΠΈ возраста пассаТиров с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ.l

ИспользованиС loc

iloc Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ строк ΠΈ столбцов, Π° Π½Π΅ с ΠΈΡ… ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° столбца ΠΏΠ΅Ρ€Π²Ρ‹Ρ… дСсяти строк.

data.iloc[:10, :2]
ИспользованиС iloc

Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ столбцу. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ пассаТиров нашСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

data['name'].head()
ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°

ΠŸΡ€ΠΈ индСксации ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ логичСскиС запросы ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅Ρ„ΠΌΠ°. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΏΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΆΠ΅Π½Ρ‰ΠΈΠ½ пассаТиров.

data[(data['sex'] == 'female')]['name'].head()
ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ΠΆΠ΅Π½Ρ‰ΠΈΠ½ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°

Π›ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° sex = female. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ name ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° head() ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ ΠΏΡΡ‚ΡŒ строк.

УслоТним ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ, содСрТащий ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ΠΌΡƒΠΆΡ‡ΠΈΠ½ ΠΈΠ»ΠΈ ΠΆΠ΅Π½Ρ‰ΠΈΠ½ ΡΡ‚Π°Ρ€ΡˆΠ΅ 50 Π»Π΅Ρ‚.

data[(data['sex'] == 'women') & (data['age'] > 50) | (data['sex'] == 'male')].head()
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния запроса

Бвязка условий происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² И (&) ΠΈ Π˜Π›Π˜ (|).

ИзмСнСниС Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Pandas

ΠŸΡƒΡΡ‚ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Pandas позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΎΠ΄Π½ΠΎΠΉ Π»Π΅Π²ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° rename(). ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ name Π² Name. Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ columns ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Ρ‹ староС_имя:Π½ΠΎΠ²ΠΎΠ΅_имя ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ inplace=True заставляСт Pandas ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ, Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ.

data.rename(columns={'name':'Name'}, inplace=True)
ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… столбцов. НапримСр, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ всСх людСй ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Name.

Ѐункция получСния Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

def get_last_name(name):
    return name.split(',')[0].strip()
Ѐункция выдСлСния Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈΠ· ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π΅Π΅ тСст

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊΠΎ всСм элСмСнтам Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ apply(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пСрСдаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр:

last_names = data['Name'].apply(get_last_name)
ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° apply

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² наш Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ столбСц Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ сохранили Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ last_names. Для этого просто Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках указываСтся имя Π½ΠΎΠ²ΠΎΠ³ΠΎ столбца:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ столбца

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ столбСц, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ drop(). Π£Π΄Π°Π»ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ столбСц Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ axis Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ pandas Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со столбцами. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ноль ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚.

data.drop('Last name', axis=1, inplace=True)
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ столбца

ΠžΡ‡Π΅Π½ΡŒ часто датасСты ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ячСйках Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… строк Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΡ… Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Для получСния пустых строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ isnull(), Π° для получСния нСпустых строк – ΠΌΠ΅Ρ‚ΠΎΠ΄ notnull(). Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ достаточно ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ.

data['boat'].isnull().head() # ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ пустых ячССк столбца boat
data[data['boat'].notnull()].head() # ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ нСпустых ячССк столбца boat
Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ isnull() ΠΈ notnull()

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с SQL, Ρ‚ΠΎ Π²Π°ΠΌ навСрняка Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ GROUP BY. Он позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ. Pandas ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ возмоТностями. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby().

Π‘Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅ΠΌ пассаТиров ΠΏΠΎ ΠΏΠΎΠ»Ρƒ Π² зависимости ΠΎΡ‚ класса ΠΊΠ°ΡŽΡ‚Ρ‹ ΠΈ посчитаСм ΠΈΡ… количСство:

data.groupby('sex')['pclass'].value_counts()
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ пассаТиров Π² зависимости ΠΎΡ‚ класса ΠΊΠ°ΡŽΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ»Π°

Pandas содСрТит Π½Π°Π±ΠΎΡ€ статистичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΉΡ‚ΠΈ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, максимум, ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠ°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для быстрой ΠΎΡ†Π΅Π½ΠΊΠΈ всСх популярных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ describe(). РассчитаСм всС эти ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для стоимости ΠΏΡ€ΠΎΠ΅Π·Π΄Π° пассаТиров ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ классам:

data.groupby('pclass')['fare'].describe()
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° describe()

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ количСство пассаТиров, ΡΡ€Π΅Π΄Π½ΡŽΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ, Π΅Π΅ стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π­Ρ‚ΠΈ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ доступны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΠΆΠΈΠ»ΠΈ ΠΌΡƒΠΆΡ‡ΠΈΠ½Ρ‹ ΠΈ ΠΆΠ΅Π½Ρ‰ΠΈΠ½Ρ‹:

data.groupby('sex')['survived'].mean()

ПослС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΌΠΎΠΌ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ². НапримСр, для сохранСния Π² csv Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ to_csv().

data.to_csv('titanic_2.csv', index=False)

БохраняСм Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌ Π² Ρ„Π°ΠΉΠ» csv с ΠΈΠΌΠ΅Π½Π΅ΠΌ titanic_2.

ΠžΡΠ½ΠΎΠ²Ρ‹ matplotlib

Matplotlib – Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

%matplotlib inline
import matplotlib.pyplot as plt

Jupyter Notebook ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² β€œΠ½Π° мСстС”. Для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ этого Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ магичСская ΠΊΠΎΠΌΠ°Π½Π΄Π° %matplotlib inline.

Для построСниС Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ plt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° matplotlib.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ этапом построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° являСтся созданиС холста. ДСлаСтся это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ figsize опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ холста Π² Π΄ΡŽΠΉΠΌΠ°Ρ…. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ.

fig = plt.figure(figsize=(10, 6))

ПослС этого добавляСт оси, строим ΠΊΡ€ΠΈΠ²Ρ‹Π΅ ΠΈ наносим Π»Π΅Π³Π΅Π½Π΄Ρƒ Π½Π° холст.

fig = plt.figure(figsize=(10, 6))

axes = fig.add_axes([0,0,1,1]) # создаСм прямоуголник для построСниС Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Π²ΠΈΠ΄Π΅ списка [left, bottom, width, height]

axes.plot(x, x**2, 'r') # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΡ€ΠΈΠ²ΡƒΡŽ Π½Π° холст красного Ρ†Π²Π΅Ρ‚Π°
axes.plot(x, x**3, 'b*--') # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΊΡ€ΠΈΠΊΡƒΡŽ Π½Π° холст синСго Ρ†Π²Π΅Ρ‚Π° с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

axes.set_xlabel('x') # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ оси Π₯
axes.set_ylabel('y') # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ оси Y
axes.set_title('Hello proglib') # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ всСго Π³Ρ€Π°Ρ„ΠΈΠΊΠ°
axes.legend([r'$x^2$', r'$x^3$'], loc=0) # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»Π΅Π³Π΅Π½Π΄Ρƒ

plt.show() # вывСсти Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° экран
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ построСниС Π΄Π²ΡƒΡ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²

ΠŸΠ°ΠΊΠ΅Ρ‚ позволяСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСмСйства Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

1. Π“Ρ€Π°Ρ„ΠΈΠΊ Π² Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. Π‘Ρ…Π΅ΠΌΠ° состроСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ такая ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅Π΄ΡƒΠ΄Ρ‹Ρ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

fig = plt.figure()

axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # основной Π³Ρ€Π°Ρ„ΠΈΠΊ
axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3]) # Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ. Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ мСньшС, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ долю ΠΎΡ‚ figsize

# Основной Π³Ρ€Π°Ρ„ΠΈΠΊ
axes1.plot(x, x**2, 'r')
axes1.set_xlabel('x')
axes1.set_ylabel('y')
axes1.set_title('Π― внСшний Π³Ρ€Π°Ρ„ΠΈΠΊ')

# Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ
axes2.plot(x**2, x, 'b')
axes2.set_xlabel('y')
axes2.set_ylabel('x')
axes2.set_title('Π― Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ')

plt.show()
ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅

2. БСмСйство Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π’ этом случаС, холст создаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ subplots(), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΊΠΎΡ€Ρ‚Π΅ΠΆ чисСл, сколько Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΏΠΎ-Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ ΠΏΠΎ-Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ ΠΎΠ΄Π½Ρƒ строку ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(16, 5))

for pow, ax in enumerate(axes):
    ax.plot(x, x**(pow + 1), 'b')
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_title(f'$y = x^{pow + 1}$', fontsize=18)
fig.tight_layout() # автоматичСски вписываСт всС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€ холста
БСмСйство Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² подписях ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ холста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ LaTeX

Matplotlib ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для построСния статистичСских Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ огромная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π½ΠΎ построим гистограмму распрСдСлСниС пассаТиров ΠΏΠΎ возрасту для ΠΌΡƒΠΆΡ‡ΠΈΠ½ ΠΈ ΠΆΠ΅Π½Ρ‰ΠΈΠ½. Π’ качСствС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ датасСт titanic.

fig = plt.figure()
axes = fig.add_axes([0.0, 0.0, 1.0, 1.0])
bins = 20 #  количСство столбцов
index = np.arange(bins) # создаСм список ΠΎΡ‚ 0 Π΄ΠΎ bins - 1 
axes.hist(data[data['sex'] == 'male']['age'].dropna(), bins=bins, alpha=0.6, label='ΠœΡƒΠΆΡ‡ΠΈΠ½Ρ‹') # добавляСм Π½Π° холст гистограмму распрСдСлСния возрастов срСди ΠΌΡƒΠΆΡ‡ΠΈΠ½
axes.hist(data[data['sex'] == 'female']['age'].dropna(), bins=bins, alpha=0.6, label='Π–Π΅Π½Ρ‰ΠΈΠ½Ρ‹') # добавляСм Π½Π° холст гистограмму распрСдСлСния возрастов срСди ΠΆΠ΅Π½Ρ‰ΠΈΠ½

axes.legend() # строим Π»Π΅Π³Π΅Π½Π΄Ρƒ
axes.set_xlabel('Возраст', fontsize=18) 
axes.set_ylabel('ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ', fontsize=18)
axes.set_title('РаспрСдСлСниС возрастов ΠΏΠΎ ΠΏΠΎΠ»Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°', fontsize=18)

plt.show()
Гистограмма распрСдСлСниС возрастов ΠΏΠΎ ΠΏΠΎΠ»Π°ΠΌ
***

Π‘Ρ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ малая Ρ‡Π°ΡΡ‚ΡŒ возмоТностСй Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΎΡΡ‚Π°Π²Π»ΡŽ ссылки Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ всСм рассмотрСнным Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ модулям:

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
16 ноября 2019

DeepFake-Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»: создаСм собствСнный Π΄ΠΈΠΏΡ„Π΅ΠΉΠΊ Π² DeepFaceLab

РассказываСм ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ DeepFake ΠΈ шаг Π·Π° шагом учимся Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΈΠΏΡ„Π΅ΠΉΠΊΠΈ Π² ...
admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
14 июля 2017

ПишСм свою Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ: пошаговоС руководство

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π³Π°ΠΉΠ΄ ΠΏΡ€ΠΎ Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… элСмС...