Содержание Show
Краткое описание
Python – это язык программирования, который стал основным инструментом для многих профессионалов в области науки о данных. Большинство инструментов и библиотек для анализа данных в Python доступны в открытом доступе, что делает его важным инструментом для всех, кто хочет начать работу в области анализа данных.
Data Science – область, связанная с анализом и обработкой данных, созданием моделей и прогнозов на основе данных, а также разработкой алгоритмов машинного обучения и искусственного интеллекта. Все эти задачи требуют высокого уровня знаний в области программирования и математики, а Python – один из самых удобных и мощных языков для решения этих задач.
В этой статье мы рассмотрим основы языка Python и его применение в Data Science.
Основы Python
Базовые типы данных
В Python есть следующие типы данных:
- Числа (numbers): типы данных, которые представляют числа :
- Целые числа (int) — это целые числа без дробной части.
- Вещественные числа (float) — это числа с дробной частью.
- Комплексные числа (complex) — это числа вида a + bj, где a и b — действительные числа, а j — мнимая единица (квадрат которой равен -1).
a = 5 # тип данных int
b = 3.141592 # тип данных float
c = 2+3j # тип данных complex
- Строки (Strings): набор символов, заключенных в кавычки, например: str.
name = "John" # тип данных str
address = 'New York' # тип данных str
- Списки (Lists): упорядоченные изменяемые коллекции объектов любых типов.
my_list = [1, 2, 'Three', 4.5, True] # тип данных list
my_list.append('Six')
print(my_list)
-> [1, 2, 'Three', 4.5, True, 'Six']
- Кортежи (Tuples): упорядоченные неизменяемые коллекции объектов любых типов.
my_tuple = (1, 2, 'Three', 4.5, True) # тип данных tuple
print(my_tuple)
-> (1, 2, 'Three', 4.5, True)
- Множества (Sets): неупорядоченные изменяемые коллекции уникальных объектов любых типов.
my_set = {1, 2, 'Three', 4.5, True} # тип данных set
my_set.add('Six')
print(my_set)
-> {1, 2, 'Three', 4.5, True, 'Six'}
- Словари (Dictionaries): неупорядоченные изменяемые коллекции пар «ключ-значение».
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'} # тип данных dict
print(my_dict['name'])
-> John
Вышеперечисленные типы данных делятся на: изменяемые и неизменяемые.
Изменяемые типы данных в Python включают в себя:
- Списки (list)
- Словари (dict)
- Множества (set)
- Объекты пользовательских классов
Когда изменяется значение объекта, который является изменяемым типом данных, изменение вносится непосредственно в объект, который уже находится в памяти. Это означает, что объект изменяется в месте, где он находится, и нет необходимости в создании нового объекта.
Например, если у вас есть список, и вы хотите изменить один элемент в списке, вы можете просто обновить значение этого элемента на новое значение. Список не будет закопирован в новый список.
Неизменяемые типы данных в Python включают в себя:
- Числа (int, float, complex)
- Логический тип (bool)
- Строки (str)
- Кортежи (tuple)
- Некоторые другие встроенные типы данных
Когда значение объекта, который является неизменяемым типом данных, изменяется, то для этого создается новый объект с новым значением. Прежний объект не изменяется, так как он не может быть изменен.
Например, если у вас есть строка, и вы хотите изменить один символ в строке, вы должны создать новую строку, которая является копией исходной строки с измененным символом, так как строки не могут быть изменены в место.
Изменяемые и неизменяемые типы данных в Python имеют различные свойства, поведение и применение. Поэтому важно понимать, какие типы данных лучше использовать в конкретных ситуациях.
Операторы и выражения
Операторы и выражения — это ключевые элементы языка Python, которые позволяют выполнять различные математические операции и принимать решения на основе условий.
Операторы в Python похожи на операторы в других языках программирования. Вот некоторые из них:
- Арифметические операторы:
+ # сложение
- # вычитание
* # умножение
/ # деление
% # остаток от деления
** # степень
- Операторы сравнения:
== # равно
!= # не равно
< # меньше
<= # меньше или равно
> # больше
>= # больше или равно
- Логические операторы:
and # и
or # или
not # не
- Операторы присваивания:
= # присвоить значение
+= # прибавить значение
-= # отнять значение
*= # умножить на значение
/= # разделить на значение
%= # взять остаток от деления на значение
**= # возвести в степень значения
- Команды:
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, однако последний из них не представлен в языке.
- Цикл while
Цикл while
повторяет определенный блок кода (инструкции), пока условие, указанное в заголовке цикла, истинно. Синтаксис выглядит следующим образом:
# цикл будет выполняться, пока `x` меньше чем 10
x = 0
while x < 10:
x += 1
print(x)
- Цикл for
Цикл for в 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)
- Цикл do-while
В Python отсутствует явная конструкция do-while, как, например, в некоторых других языках программирования. Однако, вы можете достичь похожего эффекта, используя цикл while с условием наличия «do» части в самом начале. В вашем случае код похож на «do-while» в том смысле, что он выполняет определенные действия хотя бы один раз и затем продолжает выполняться, пока не выполнится определенное условие.
Уникальность цикла do while заключается в том, что код в блоке цикла будет выполняться хотя бы один раз. Код в инструкции запускается один раз, а затем условие проверяется только после выполнения кода. Таким образом, код сначала запускается один раз, а затем проверяется условие. Если проверенное условие равно True, цикл продолжается.
Повторюсь, Python не имеет встроенной функциональности для явного создания цикла do while, как и другие языки. Но в Python можно эмулировать цикл do while. Чтобы создать цикл do while в Python, вам нужно немного изменить цикл while, чтобы получить поведение, аналогичное циклу do while в других языках.
Итак, допустим, у нас есть пример, когда мы хотим, чтобы строка кода запускалась хотя бы один раз.
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 очень похожи на математические функции. Функция — это блок кода, который можно вызывать из другого блока кода, для выполнения определенной задачи. Это позволяет создавать многоразовый код, который можно использовать в разных частях программы, избегая дублирования кода.
def hello(name):
print("Hello, " + name + "!")
В этом примере мы создали функцию hello, которая принимает один аргумент (name) и печатает приветственное сообщение с этим аргументом.
Для вызова функции hello, мы можем просто написать:
hello("Zurab")
-> "Hello, Zurab!"
Модули в Python — это файлы, содержащие Python код и объединяющие функциональность, которую можно использовать в любой программе. Модуль может включать функции, классы, переменные и другие модули.
Импортирование модуля в свою программу делается с помощью ключевого слова «import«.
import math
print(math.sqrt(16))
-> 4.0
Мы импортировали модуль «math» и использовали его функцию «sqrt» (корень квадратный) для вычисления корня числа 16.
Также можно использовать стандартную конструкцию «from module import function», чтобы импортировать только нужные функции из модуля:
from math import sqrt
print(sqrt(16))
-> 4.0
Это эквивалентно предыдущему примеру.
Функции и модули — это одни из основных инструментов Python, которые помогают создавать более организованный, поддерживаемый и масштабируемый код.
NumPy и Pandas
NumPy и Pandas — это основные библиотеки Python для выполнения численных операций и работы с данными. Вы должны знать, как использовать эти библиотеки для работы с массивами, выполнять математические операции и обрабатывать данные.
Пример использования NumPy:
- Создание массивов:
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]]
- Выбор элементов массива:
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
- Изменение формы массива:
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]
- Математические операции с массивами:
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
- Операции сравнения:
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:
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)
# Группировка данных по городам и вывод среднего возраста
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. В зависимости от особенностей задачи, может понадобиться использование других библиотек.
Книги
После прочтения статьи вы можете продолжить изучение темы, ознакомившись с дополнительными книгами:
- «Основы Python для Data Science», Берман Кеннеди;
- «Python и анализ данных», Уэс Маккинни;
- «Python, например», Никола Лейси;
- «Python 3. Самое необходимое», Владимир Дронов, Николай Прохоренок;
- «Простой Python», Билл Любанович;
- «Как устроен Python», Мэтт Харрисон;
- «Python и машинное обучение», Себастьян Pашка, Вахид Мирджалили;
- «Автостопом по Python», Кеннет Рейтц, Таня Шлюссер;
- «Python. Книга рецептов», Дэвид Бизли, Брайан Джонс;
- «Введение в машинное обучение с помощью Python», Андреас Мюллер, Сара Гвидо