Инструменты

Введение в Python

Краткое описание

Python – это язык программирования, который стал основным инструментом для многих профессионалов в области науки о данных. Большинство инструментов и библиотек для анализа данных в Python доступны в открытом доступе, что делает его важным инструментом для всех, кто хочет начать работу в области анализа данных.

Data Science – область, связанная с анализом и обработкой данных, созданием моделей и прогнозов на основе данных, а также разработкой алгоритмов машинного обучения и искусственного интеллекта. Все эти задачи требуют высокого уровня знаний в области программирования и математики, а Python – один из самых удобных и мощных языков для решения этих задач.

В этой статье мы рассмотрим основы языка Python и его применение в Data Science.

Основы Python

Базовые типы данных

В Python есть следующие типы данных:

  1. Числа (numbers): типы данных, которые представляют числа :
    • Целые числа (int) — это целые числа без дробной части.
    • Вещественные числа (float) — это числа с дробной частью.
    • Комплексные числа (complex) — это числа вида a + bj, где a и b — действительные числа, а j — мнимая единица (квадрат которой равен -1).
Python
a = 5        # тип данных int
b = 3.141592 # тип данных float
c = 2+3j     # тип данных complex
  1. Строки (Strings): набор символов, заключенных в кавычки, например: str.
Python
name = "John"  # тип данных str
address = 'New York'  # тип данных str
  1. Списки (Lists): упорядоченные изменяемые коллекции объектов любых типов.
Python
my_list = [1, 2, 'Three', 4.5, True]  # тип данных list
my_list.append('Six')
print(my_list)
-> [1, 2, 'Three', 4.5, True, 'Six']
  1. Кортежи (Tuples): упорядоченные неизменяемые коллекции объектов любых типов.
Python
my_tuple = (1, 2, 'Three', 4.5, True)  # тип данных tuple
print(my_tuple)
-> (1, 2, 'Three', 4.5, True)
  1. Множества (Sets): неупорядоченные изменяемые коллекции уникальных объектов любых типов. 
Python
my_set = {1, 2, 'Three', 4.5, True}  # тип данных set
my_set.add('Six')
print(my_set)
-> {1, 2, 'Three', 4.5, True, 'Six'}
  1. Словари (Dictionaries): неупорядоченные изменяемые коллекции пар «ключ-значение».
Python
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}  # тип данных dict
print(my_dict['name'])
-> John

Вышеперечисленные типы данных делятся на:  изменяемые и неизменяемые.

Изменяемые типы данных в Python включают в себя:

  1. Списки (list)
  2. Словари (dict)
  3. Множества (set)
  4. Объекты пользовательских классов

Когда изменяется значение объекта, который является изменяемым типом данных, изменение вносится непосредственно в объект, который уже находится в памяти. Это означает, что объект изменяется в месте, где он находится, и нет необходимости в создании нового объекта.

Например, если у вас есть список, и вы хотите изменить один элемент в списке, вы можете просто обновить значение этого элемента на новое значение. Список не будет закопирован в новый список.

Неизменяемые типы данных в Python включают в себя:

  1. Числа (int, float, complex)
  2. Логический тип (bool)
  3. Строки (str)
  4. Кортежи (tuple)
  5. Некоторые другие встроенные типы данных

Когда значение объекта, который является неизменяемым типом данных, изменяется, то для этого создается новый объект с новым значением. Прежний объект не изменяется, так как он не может быть изменен.

Например, если у вас есть строка, и вы хотите изменить один символ в строке, вы должны создать новую строку, которая является копией исходной строки с измененным символом, так как строки не могут быть изменены в место.

Изменяемые и неизменяемые типы данных в Python имеют различные свойства, поведение и применение. Поэтому важно понимать, какие типы данных лучше использовать в конкретных ситуациях.

Операторы и выражения

Операторы и выражения — это ключевые элементы языка Python, которые позволяют выполнять различные математические операции и принимать решения на основе условий. 

Операторы в Python похожи на операторы в других языках программирования. Вот некоторые из них:

  1. Арифметические операторы:
Python
+ # сложение
- # вычитание
* # умножение
/ # деление
% # остаток от деления
** # степень
  1. Операторы сравнения:
Python
== # равно
!= # не равно
< # меньше
<= # меньше или равно
> # больше
>= # больше или равно
  1. Логические операторы:
Python
and # и
or # или
not # не
  1. Операторы присваивания:
Python
= # присвоить значение
+= # прибавить значение
-= # отнять значение
*= # умножить на значение
/= # разделить на значение
%= # взять остаток от деления на значение
**= # возвести в степень значения
  1. Команды:
Python
break # используется для прерывания цикла до его нормального завершения. 
i = 0
while True:
    i += 1
    if i > 3:
        break
    print(i)

continue # используется для перехода к следующей итерации без выполнения оставшейся части цикла в текущей итерации. Пример:

for i in range(1, 6):
    if i == 3:
        continue
    print(i)

Циклы

В Python есть несколько видов циклов: цикл while, цикл for и цикл do-while, однако последний из них не представлен в языке.

  1. Цикл while

Цикл while повторяет определенный блок кода (инструкции), пока условие, указанное в заголовке цикла, истинно. Синтаксис выглядит следующим образом:

Python
# цикл будет выполняться, пока `x` меньше чем 10
x = 0
while x < 10:
    x += 1
    print(x)
  1. Цикл for

Цикл for в Python используется для итерации по коллекции объектов, таких как списки или строки, и выполнения некоторых действий для каждого элемента коллекции. Синтаксис выглядит так:

Python
# В этом примере `i` принимает значение каждого элемента в списке `numbers` на каждом шаге итерации.

numbers = [1, 2, 3, 4, 5]
for i in numbers:
    print(i)
  
``` В Python можно использовать несколько циклов одновременно. Например, следующий код выводит все элементы `x` и `y`, где `x` и `y` принимают значения от 1 до 3: ```

for x in range(1, 4):
    for y in range(1, 4):
        print(x, y)
  1. Цикл do-while

В Python отсутствует явная конструкция do-while, как, например, в некоторых других языках программирования. Однако, вы можете достичь похожего эффекта, используя цикл while с условием наличия «do» части в самом начале. В вашем случае код похож на «do-while» в том смысле, что он выполняет определенные действия хотя бы один раз и затем продолжает выполняться, пока не выполнится определенное условие.

Уникальность цикла do while заключается в том, что код в блоке цикла будет выполняться хотя бы один раз. Код в инструкции запускается один раз, а затем условие проверяется только после выполнения кода. Таким образом, код сначала запускается один раз, а затем проверяется условие. Если проверенное условие равно True, цикл продолжается.

Повторюсь, Python не имеет встроенной функциональности для явного создания цикла do while, как и другие языки. Но в Python можно эмулировать цикл do while. Чтобы создать цикл do while в Python, вам нужно немного изменить цикл while, чтобы получить поведение, аналогичное циклу do while в других языках.

Итак, допустим, у нас есть пример, когда мы хотим, чтобы строка кода запускалась хотя бы один раз.

Python
secret_word = "python"
counter = 0

while True:
    word = input("Enter the secret word: ").lower()
    counter = counter + 1
    if word == secret_word:
        break
    if word != secret_word and counter > 7: 
        break

Данный код можно использовать в качестве игры, в которой пользователь должен угадать «секретное слово» за 7 или менее попыток.

secret_word — переменная, хранящая секретное слово, в данном случае «python».

counter — переменная, которая будет использоваться для хранения количества попыток, использованных пользователем чтобы угадать слово.

Затем идет бесконечный цикл, в теле которого запрашивается от пользователя ввод слова, используемого для его сравнения с секретным словом.

После этого число попыток увеличивается на 1 путем добавления 1 к переменной counter.

Если пользователь вводит правильное секретное слово, цикл завершается при помощи ключевого слова break, и программа завершается, поздравляя пользователя с победой.

Если же пользователь не угадывает слово, то программа проверяет, не было ли использовано 7 или более попыток, и если количество попыток достигло 7, цикл завершается и программа сообщает пользователю о проигрыше.

Функции и модули

Функции и модули — это важные концепции в Python, принципы которых являются основой для создания многих программ.

Функции в Python очень похожи на математические функции. Функция — это блок кода, который можно вызывать из другого блока кода, для выполнения определенной задачи. Это позволяет создавать многоразовый код, который можно использовать в разных частях программы, избегая дублирования кода.

Python
def hello(name):
    print("Hello, " + name + "!")

В этом примере мы создали функцию hello, которая принимает один аргумент (name) и печатает приветственное сообщение с этим аргументом.

Для вызова функции hello, мы можем просто написать:

Python
hello("Zurab")
-> "Hello, Zurab!"

Модули в Python — это файлы, содержащие Python код и объединяющие функциональность, которую можно использовать в любой программе. Модуль может включать функции, классы, переменные и другие модули.

Импортирование модуля в свою программу делается с помощью ключевого слова «import«.

Python
import math
print(math.sqrt(16))
-> 4.0

Мы импортировали модуль «math» и использовали его функцию «sqrt» (корень квадратный) для вычисления корня числа 16. 

Также можно использовать стандартную конструкцию «from module import function», чтобы импортировать только нужные функции из модуля:

Python
from math import sqrt
print(sqrt(16))
-> 4.0

Это эквивалентно предыдущему примеру.

Функции и модули — это одни из основных инструментов Python, которые помогают создавать более организованный, поддерживаемый и масштабируемый код.

NumPy и Pandas

NumPy и Pandas — это основные библиотеки Python для выполнения численных операций и работы с данными. Вы должны знать, как использовать эти библиотеки для работы с массивами, выполнять математические операции и обрабатывать данные.

Пример использования NumPy:

  1. Создание массивов:
Python
import numpy as np

# создание массива из списка чисел
arr1 = np.array([1, 2, 3, 4, 5])

# создание двумерного массива из списка списков
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# создание массива из последовательности чисел с определенным шагом
arr3 = np.arange(0, 10, 2)
-> [0, 2, 4, 6, 8]

# создание массива нулей заданной формы
arr4 = np.zeros((2, 3))
-> [[0., 0., 0.], [0., 0., 0.]]

# создание массива единиц заданной формы
arr5 = np.ones((2, 3))
-> [[1., 1., 1.], [1., 1., 1.]]

# создание массива заданной формы со случайными значениями
arr6 = np.random.rand(3, 2)
-> [[0.9566, 0.2073], [0.2964, 0.8762], [0.3603, 0.8104]]
  1. Выбор элементов массива:
Python
import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
print(arr1[0])
-> 1

arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2[1, 2])
-> 6
  1. Изменение формы массива:
Python
import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

# изменение формы одномерного массива в двумерный
reshaped_arr = arr.reshape(2, 3)
-> [[1, 2, 3], [4, 5, 6]]

# изменение формы двумерного массива в одномерный
flatten_arr = reshaped_arr.flatten()
-> [1, 2, 3, 4, 5, 6]
  1. Математические операции с массивами:
Python
import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([5, 4, 3, 2, 1])

# сложение массивов
sum_arr = arr1 + arr2
-> [6, 6, 6, 6, 6]

# умножение элементов массива на число
mult_arr = arr1 * 2
-> [2, 4, 6, 8, 10]

# вычисление среднего значения элементов массива
mean_arr = np.mean(arr1)
-> 3.0
  1. Операции сравнения:
Python
import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([5, 4, 3, 2, 1])

# сравнение массивов - возвращает массив булевых значений
bool_arr = arr1 < arr2
-> [True, True, False, False, False]

# проверка наличия элемента в массиве
contains_element = np.in1d(3, arr1)
-> True

Пример использования Pandas:

Python
import pandas as pd

# Создание таблицы данных из словаря
data = {'name': ['John', 'Mike', 'Alice', 'Kate'],
        'age': [25, 30, 27, 28],
        'country':['USA', 'UK', 'FR', 'JP'],
        'city': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
Python
# Группировка данных по городам и вывод среднего возраста
grouped = df.groupby(['city'])['age'].mean()
print(grouped)

city
London      30.0
New York    25.0
Paris       27.0
Tokyo       28.0
Name: age, dtype: float64

Визуализация

Python предоставляет множество библиотек для создания визуализаций, таких как Matplotlib, Seaborn, Plotly,Bokeh и многих других.

Matplotlib — это одна из самых популярных библиотек для визуализации данных в Python. Она предоставляет широкий спектр инструментов для создания различных типов графиков, таких как графики линий, гистограммы, диаграммы рассеяния, круговые диаграммы и многое другое. Matplotlib также поддерживает кастомизацию внешнего вида каждой части графика и основных параметров.

Seaborn — является надстройкой над Matplotlib, которая упрощает создание красивых графиков и диаграмм высокого качества. Она специализируется на статистической визуализации, предоставляя функции для создания кластерных карт, графиков погрешности, плотностных графиков, ящиков и усов, факторных карт и других статистических графиков.

Plotly — это интерактивный инструмент для визуализации данных, который позволяет строить динамические графики и диаграммы, которые могут быть использованы для облачных приложений и веб-сайтов.

Bokeh — это другой инструмент для визуализации данных, который также предоставляет возможность создавать интерактивные графики. Изначально Bokeh был разработан для создания интерактивных графиков, которые могут быть использованы на веб-сайтах, он предоставляет высокие возможности по кастомизации и быстроте визуализации.

Также стоит отметить, что все вышеупомянутые библиотеки предоставляют обширную документацию, примеры кода и туториалы, которые помогут вам начать работу со визуализацией данных в Python.

Machine Learning

Существует множество библиотек для Machine Learning, которые упрощают процесс создания моделей машинного обучения. Некоторые из наиболее популярных библиотек:

TensorFlow — библиотека с открытым исходным кодом, разработанная Google, которая специализируется на построении нейронных сетей и других моделей машинного обучения.

Keras — высокоуровневый интерфейс над TensorFlow, который облегчает создание нейронных сетей и других моделей машинного обучения.

PyTorch — еще одна библиотека с открытым исходным кодом, которая предлагает простой в использовании интерфейс для создания нейронных сетей и других моделей.

Scikit-learn — библиотека Python, которая включает в себя множество алгоритмов машинного обучения, включая регрессию, классификацию, кластеризацию и многие другие.

Это только небольшой список библиотек для Machine Learning. В зависимости от особенностей задачи, может понадобиться использование других библиотек.

Книги


После прочтения статьи вы можете продолжить изучение темы, ознакомившись с дополнительными книгами:

  1. «Основы Python для Data Science»,  Берман Кеннеди;
  2. «Python и анализ данных»,  Уэс Маккинни;
  3. «Python, например», Никола Лейси;
  4. «​​Python 3. Самое необходимое»Владимир Дронов, Николай Прохоренок;
  5. «​​Простой Python», Билл Любанович;
  6. «Как устроен Python»Мэтт Харрисон;
  7. «Python и машинное обучение», Себастьян Pашка, Вахид Мирджалили;
  8. «Автостопом по Python»Кеннет Рейтц, Таня Шлюссер;
  9. «​​Python. Книга рецептов»Дэвид Бизли, Брайан Джонс;
  10. «Введение в машинное обучение с помощью Python»Андреас Мюллер, Сара Гвидо
Пред.
Определение стоимости автомобилей 🚗💰

Определение стоимости автомобилей 🚗💰

Задача 🎯 Сервис по продаже автомобилей с пробегом «Не бит, не крашен»

След.
Основные понятия и принципы статистики

Основные понятия и принципы статистики

Содержание Show Что такое статистика?