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

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

В частности, ранее я намекал, что кортежи могут быть чрезвычайно полезны при работе со словарями. Зачем работать со словарями, спросите вы? Ну, это вообще отдельный вопрос — короче говоря, словари — это структура данных, которая имеет множество применений (каламбур) в Pandas. Таким образом, полезно знать, как с ними работать, если вы занимаетесь обработкой и анализом данных.

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

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

proj_grades = {['Aaron', 'Ella']: 'A', ['Jackie', 'Elaine']: 'B', ['Arif', 'Julie']: 'F'}
# Arif and Julie have really been slacking off
# or maybe they're just not interested in your class
# that's valid.

К сожалению, это заставляет Python приветствовать вас следующим недовольным сообщением:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

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

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

>>> proj_grades = {('Aaron', 'Ella'): 'A', ('Jackie', 'Elaine'): 'B', ('Arif', 'Julie'): 'A++'}
>>>
# Through the power of tuples, Arif and Julie are now
# acing the class.

И теперь, когда у вас есть хорошо организованные данные, вы можете очень удобно преобразовать их в DataFrame:

>>> pd.DataFrame(proj_grades, index=[0])
   Aaron Jackie  Arif
   Ella Elaine Julie
0     A      B   A++

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

Это все на данный момент. До следующего раза, ребята!

Хотите преуспеть в Python? Получите эксклюзивный бесплатный доступ к моим простым и понятным руководствам здесь.