Типы данных 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 — локальная установка не требуется.
Все уроки этого курса
- Виртуальные окружения и pip
- Ноутбуки Jupyter для анализа данных
- Типы данных Python для анализа данных
- Работа с REPL Python и IPython