Типы данных для маркетологов: числа, строки и логические значения

Опубликовано: 2017-08-10

Примечание. Этот пост в блоге является третьим в серии, написанной нашим старшим веб-аналитиком Адрианом Паласиосом, и предназначен для предоставления маркетологам информации и инструкций, необходимых для установки языка программирования Python. Если вы пропустили, в первом посте Адриана объясняется, почему маркетологи должны подумать об этом в первую очередь, а во втором посте объясняется, как установить Python.

Когда я начал учиться программировать, у меня было много проблем с понятием «типы данных». Это всегда была одна из первых обсуждаемых тем, но также и одна из самых абстрактных. Из-за разочарования от непонимания я обычно пропускал любое обсуждение типов данных и рационализировал его, говоря себе: «Какое они вообще имеют значение?» Но спустя несколько лет, когда программирование стало частью моей повседневной работы, типы данных (медленно) начали обретать смысл.

Что такое типы данных?

Типы данных — это набор правил, определяющих, что вы можете (и не можете) делать с Python. Вы сталкиваетесь с подобными ограничениями в реальном мире каждый день: попробуйте заплатить за еду кредитной картой, когда в ресторане принимают только наличные. Попробуйте прокатиться по реке на велосипеде, а не на каноэ или каяке. Или попробуйте испечь пирог с солью вместо сахара. Вы могли бы попробовать эти вещи, если бы действительно хотели, но я сомневаюсь, что вы были бы довольны результатом.

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

Вот лишь несколько распространенных типов данных в Python:

Числа, которые далее подразделяются на другие типы, такие как:
Целые числа: 0, 1, 2, 3
Поплавки: 0,0, 1,0, 2,5, 3,145
Строки: «Думай иначе», «Netflix и Chill».
Булевы значения: Истина, Ложь

В Python есть еще много типов данных, но сейчас мы сосредоточимся на этих трех.

В этом посте вы узнаете, что можно делать с базовыми типами данных в Python, и почему типы данных важны.

По моему опыту, это, как правило, самая скучная часть любой книги/видео/онлайн-курса «Узнай, как программировать», но поскольку типы данных очень важны для программирования, я настоятельно рекомендую не пропускать этот пост.

Числа

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

Самое очевидное, что мы можем делать с числами, — это… математика! Вот некоторые специальные символы, используемые для выполнения математических операций в Python:

С помощью этих основных операций мы теперь можем работать с несколькими сценариями.

Сценарий 1

Ваша команда по контенту сообщила, что две недели назад блог вызвал 80 000 просмотров страниц, а на этой неделе — 105 000 просмотров страниц; каков еженедельный рост просмотров страниц? Напомним, что для расчета процентного изменения, которое вы можете сделать (новое число – старое число) ÷ старое число:

Что ж, это кажется не совсем правильным. Почему бы нет? Как и любой хороший математик, Python следовал порядку операций в набранном нами операторе. Здесь мы можем использовать круглые скобки, чтобы указать Python порядок, который нам действительно нужен:

Так-то лучше. Помните, что мы смотрим на проценты, поэтому в этом случае перемещение запятой на два знака вправо даст нам то, что нам нужно. Похоже, посещаемость блога выросла на 31,25% за неделю.

Сценарий 2

Вы работаете с онлайн-издателем над запуском специальной кампании, включающей широкоформатные баннеры и видеообъявления. Издатель отправил предложение, в котором говорилось, что пакет имеет фиксированную стоимость в размере 15 000 долларов США, и они ожидают, что он произведет 550 000 показов; вы хотите рассчитать цену за тысячу показов, чтобы лучше сравнить это предложение с другими вариантами.

Чтобы найти цену за тысячу показов, мы используем формулу Стоимость кампании ÷ (Всего показов ÷ 1000):

На этот раз мы получили правильный порядок операций; похоже, что цена за тысячу показов для кампании составляет примерно 27,27 доллара США.

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

Старые версии Python (версия 2.7 и ниже) дают некоторые странные ответы, когда дело доходит до деления целых чисел, которые дадут число с плавающей запятой, например деление 1 : 3. В этих двух примерах мы делили целые числа и получали числа с плавающей запятой. без каких-либо проблем, что является частью волшебства использования более новой версии Python. Возникает вопрос: почему числа с десятичной точкой называются числами с плавающей запятой, а не десятичными? Джеки Казил и Кэтрин Джармул в своей книге Data Wrangling With Python приводят отличный пример: во многих языках программирования 0,1 + 0,2 не равняется 0,3. Попробуйте сами: введите 0,3 в свой терминал, затем введите 0,1 + 0,2.

Странно, да? Марк Лутц более подробно рассматривает эту странность в своей книге Learning Python , но, поскольку маркетологам обычно не нужно вычислять числа в миллионной степени, не так важно полностью понять эту проблему, и достаточно просто знать, что она существует. Но если вам действительно интересно, вот несколько постов, которые объясняют больше:

  • Демистификация вычислений с плавающей запятой, часть 1
  • Демистификация вычислений с плавающей запятой, часть 2

Струны

Строки можно рассматривать как символы, заключенные в кавычки. Это чрезвычайно упрощенное определение, потому что оно игнорирует нюансы между массивами байтов, Unicode, ASCII и т. д., но я думаю, что сейчас нет необходимости вдаваться в такие подробности.

Как правильно вводить символы, заключенные в кавычки? Оказывается, есть более чем несколько разных способов. Например, в большинстве случаев не имеет значения, используете ли вы одинарные или двойные кавычки, главное, чтобы вы оставались последовательными:

Начав с двойной кавычки в третьей строке и закончив ее одинарной кавычкой, мы столкнулись с ошибкой. Вы, вероятно, не станете смешивать одинарные и двойные кавычки намеренно, но стоит обратить внимание на апострофы:

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

Но иметь только часть предложения бесполезно. Если вы действительно хотите использовать одинарные кавычки, один из вариантов — «избежать» апострофа. Это можно сделать, поставив обратную косую черту (\) непосредственно перед апострофом в вашем предложении. Это говорит Python обработать следующий символ особым образом:

Экранирование апострофа позволило нам продолжать использовать одинарные кавычки и апостроф в одной и той же строке.

Есть еще один способ создания строк в Python: тройные кавычки. Обратите внимание, что когда вы вводите многострочную строку, вам нужно нажать Enter, чтобы начать следующую строку; это также изменяет отображение терминала …: слева от новой строки. Это снова появится, когда мы начнем вводить несколько строк кода.

Наконец, вы можете заметить несколько странных символов в строке: \n. Это сообщает компьютеру, где вы ввели новую строку; это полезно, если вам нужно снова напечатать строку и вы хотите быть точным в форматировании.

Хорошо, теперь, когда мы потратили все это время на изучение того, как правильно вводить строку (я знаю, верно? Так много работы для такой простой вещи…), пришло время перейти к самой интересной части: манипулированию строками.

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

Сценарий 1

Допустим, у вас есть новая копия, которую нужно загрузить в AdWords, но вся копия написана строчными буквами, и вы не уверены, что длина заголовков не превышает 30 символов. Давайте проверим длину и выведем заголовок «самые дешевые рейсы в Париж» в заглавный регистр:

Первый пример технически является функцией, а второй — методом. Единственное, о чем мы сейчас заботимся, это то, что каждый из них вводится по-разному: в функции мы сначала набираем «len()», затем саму строку и, наконец, последнюю скобку «)». Хорошей новостью является то, что длина заголовка не превышает 30 символов, установленных AdWords.

Затем с помощью метода мы сначала вводим строку, а затем добавляем .title() после закрывающей кавычки (без пробелов!).

Наконец, вы можете спросить себя: «Почему я делаю это в Python, когда те же самые формулы доступны в Excel?» Это справедливое замечание.

Хотя возиться с заголовками — глупый пример, я надеюсь, что суть ясна: есть много вариантов манипулирования текстом с помощью Python. И, как и в предыдущем сценарии с расчетом цены за тысячу показов или процентного изменения, возможность манипулировать тысячами символов текста всего в нескольких строках кода — очень мощный инструмент, который нужно иметь под рукой.

Например, самая большая головная боль, которую это избавило меня, — это очистка миллионов строк URL-адресов из Google Analytics. Второй момент этого упражнения — указать на то, что может избавить других от боли в будущем: если вы знаете, как использовать формулы в Excel или Google Docs, вы уже на шаг впереди в понимании того, как программировать. Есть много сходств, которые можно перевести из Excel в Python.

Булевы значения

Два основных логических значения в Python — это True и False. Их значение очень прямолинейно: True означает истину, а False означает ложь.

Пока мы не углубимся в использование логики в Python, лучше всего объяснить логические значения с помощью аналогии. Когда вы создаете рекламную видеокампанию на Facebook, вам нужно решить, какой креатив использовать. Должно ли это быть модное новое видео, нацеленное на узнаваемость бренда, или вы должны придерживаться старого, но проверенного в боях видео, которое содержит четкий призыв к действию? Это зависит от того, чего вы пытаетесь достичь, верно? Точно так же будет момент, когда вам нужно будет создать некоторую логику, чтобы сообщить вашему компьютеру, по какому пути следовать, и логические значения - один из способов выполнить эту задачу.

В Python есть и другие объекты, которые могут вести себя как булевы значения, но пока достаточно просто ввести True и False. Мы рассмотрим эту тему более подробно в следующем посте.

И что?

В начале этого поста я упомянул, что, когда я впервые попытался изучить типы данных, процесс был утомительным, а предмет скучным. Точно так же, как нетерпеливый подросток на уроке геометрии в старшей школе поддразнивает учителя вопросом: «Когда мне когда-нибудь понадобится знать этот бесполезный хлам?»

Я чувствовал, что изучение всех этих правил о типах данных было бессмысленным. Но я стал ценить правила, потому что когда вы пытаетесь нарушить эти правила (в большинстве случаев), возникает ошибка. Если вы ответственный программист и заранее тестируете свой код, обнаружение этих ошибок может уберечь вас от критических ошибок в коде, когда это действительно важно. Давайте рассмотрим некоторые способы появления ошибок.

Замечали ли вы, что в сценариях, где вы занимались математикой с числовыми типами, при выполнении этих вычислений не использовались запятые? Вы, вероятно, привыкли вводить числа с запятыми (или десятичными знаками для наших европейских друзей!), но если вы попробуете это в Python, вы столкнетесь со странным поведением:

Хм; совсем не то, что вы ожидали. Поставив запятую в этом числе, мы неосознанно создали «кортеж»; в данный момент не обязательно знать, что такое кортеж, но важно видеть, что запятая разделяет число на 500 и 0, что сильно отличается от пятисот тысяч.

Этот пример также подчеркивает важный аспект написания кода: всего один опечатанный символ может вызвать большие проблемы. Вычитывать код поначалу сложно, но с практикой вы научитесь. Неожиданные результаты или ошибки — не повод для паники; это может показаться пугающим, но обычно это означает, что что-то было потеряно при переводе.

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

И вы были бы правы. Во второй строке кода мы попытались добавить целое число 1 к строке «1», что привело к ошибке. Вы можете подумать про себя: «Это плохой пример; когда кто-нибудь попытается добавить целое число к строке?» Вы будете удивлены, узнав, сколько API-интерфейсов возвращают числа в виде строки. Для этого есть очень веские причины, но когда вы имеете дело с API, предположение, что число будет числом, небезопасно. Отличным примером является новейший API отчетов Google Analytics. Взгляните на скриншот данных, которые Google Analytics предоставляет вам, когда вы запрашиваете отчет. Сюрприз! Все числа (посмотрите на поля «значения») заключены в кавычки.

Это бросает ключ в вещи, не так ли? Да, но если вы заранее прочитаете документацию по API, вы будете ожидать этой проблемы. К счастью, в Python также есть несколько инструментов, которые могут нам помочь, например, функция int():

Помещая строку '1' внутрь функции int(), мы сообщаем Python, что хотим обрабатывать ее как целое число; Теперь вы можете сложить эти числа вместе и продолжить свою жизнь.

Это всего лишь несколько вариантов того, как типы данных могут определять, что вы можете делать в Python, но они также демонстрируют, что почти всегда есть способ обойти эти проблемы. Если у вас есть какие-либо вопросы о типах данных, свяжитесь со мной в Twitter.