0Pricing
Learn AI with Python · Урок

Типы данных Python для анализа данных

int, float, complex, bool, str — как точность и выбор типа влияют на анализ данных.

«Типы данных Python для анализа данных» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Числа в анализе данных

В Пайтоне есть два основных числовых типа: int (целые числа произвольной точности) и float (десятичные числа стандарта IEEE 754 с точностью 64 бита). Правильный выбор типа предотвращает незаметные ошибки в данных.

Целые числа точны и не ограничены

Целые числа Пайтона никогда не переполняются. Они увеличиваются до размера, допустимого объёмом памяти, что удобно для точного подсчёта и больших факториалов.

big = 2 ** 200
print(big)
print(type(big))   # <class 'int'>

Проблема точности чисел с плавающей запятой

Числа с плавающей запятой не могут точно представить каждое десятичное число. Классический пример: 0.1 + 0.2 не равно точно 0.3.

print(0.1 + 0.2)          # 0.30000000000000004
print(0.1 + 0.2 == 0.3)   # False

Безопасное сравнение чисел с плавающей запятой

Никогда не сравнивайте числа с плавающей запятой с помощью ==. Вместо этого используйте math.isclose с заданной погрешностью.

import math
print(math.isclose(0.1 + 0.2, 0.3))  # True

Десятичные числа для денежных сумм

Для денежных сумм используйте decimal.Decimal, который хранит точные значения в десятичной системе. Всегда создавайте объекты Decimal из строк, а не из чисел с плавающей запятой, чтобы не унаследовать их погрешность.

from decimal import Decimal
price = Decimal("0.10") + Decimal("0.20")
print(price)   # 0.30

Логический тип — подкласс целого типа

В Пайтоне True равно 1, а False равно 0. Это позволяет суммировать логические значения и подсчитывать совпадения.

mask = [True, False, True, True]
print(sum(mask))      # 3 matches
print(True + True)    # 2

Подсчёт с помощью логических значений

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

ages = [12, 20, 35, 17, 40]
adults = sum(a >= 18 for a in ages)
print(adults)   # 3

Определение типа значения

type(x) возвращает точный класс значения. Это полезно, когда в столбце неожиданно оказываются строки вместо чисел.

print(type(5))      # <class 'int'>
print(type(5.0))    # <class 'float'>
print(type("5"))    # <class 'str'>

Проверка типа с учётом наследования

Предпочитайте isinstance сравнению type ==, поскольку оно учитывает наследование. Обратите внимание: логическое значение проходит проверку на целое число.

print(isinstance(5, int))        # True
print(isinstance(True, int))     # True (bool subclasses int)
print(isinstance(5.0, (int, float)))  # True

Подводные камни неявного преобразования типов

При смешивании типов происходят неявные преобразования. Деление целых чисел с плавающей запятой даёт числа с плавающей запятой, а объединение числа со строкой вызывает TypeError. Очищайте и приводите типы данных на раннем этапе.

print(5 / 2)        # 2.5  (true division always float)
print(5 // 2)       # 2    (floor division)
# "id-" + 5         # TypeError
print("id-" + str(5))  # id-5

Неожиданности чисел с плавающей запятой при агрегации

Суммирование большого количества чисел с плавающей запятой накапливает небольшие погрешности. Для больших наборов данных предпочитайте NumPy: он использует попарное суммирование, уменьшая накопление ошибки.

vals = [0.1] * 10
print(sum(vals))    # 0.9999999999999999
# NumPy: np.sum(vals) is more numerically stable

Быстрая проверка

Проверьте, насколько хорошо Вы усвоили типы данных Пайтона.

Итоги

Основные сведения о числах для работы с данными:

  • int точен и не ограничен
  • float приблизителен; используйте math.isclose, а не ==
  • Decimal("...") подходит для денежных сумм
  • bool — это целое число: sum(mask) подсчитывает значения
  • type() показывает класс, а isinstance() учитывает наследование
  • Следите за неявным преобразованием при делении и объединении

Часто задаваемые вопросы

Урок «Типы данных Python для анализа данных» бесплатный?

Да — полный текст урока «Типы данных Python для анализа данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Типы данных Python для анализа данных»?

int, float, complex, bool, str — как точность и выбор типа влияют на анализ данных. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Типы данных Python для анализа данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Виртуальные окружения и pip
  2. Ноутбуки Jupyter для анализа данных
  3. Типы данных Python для анализа данных
  4. Работа с REPL Python и IPython
← Назад к Learn AI with Python