Types de données pour les spécialistes du marketing : nombres, chaînes et booléens
Publié: 2017-08-10Remarque : ce billet de blog est le troisième d'une série écrite par notre analyste Web senior, Adrian Palacios, et est conçu pour fournir aux spécialistes du marketing les informations et les instructions nécessaires à l'installation du langage de programmation Python. Au cas où vous l'auriez manqué, le premier article d'Adrian explique pourquoi les spécialistes du marketing devraient envisager de le faire en premier lieu et son deuxième article explique comment installer Python.
Lorsque j'ai commencé à apprendre à programmer, j'ai eu beaucoup de mal avec le concept de "types de données". C'était toujours l'un des premiers sujets abordés, mais aussi l'un des plus abstraits. Par frustration de ne pas comprendre, je sautais généralement toute discussion sur les types de données et je la rationalisais en me disant : « Qu'est-ce qu'ils importent ? » Mais après quelques années à intégrer la programmation dans mon travail quotidien, les types de données ont (lentement) commencé à avoir un sens.
Que sont les types de données ?
Les types de données sont un ensemble de règles qui régissent ce que vous pouvez (et ne pouvez pas) faire avec Python. Vous rencontrez chaque jour des contraintes similaires dans le monde réel : essayez de payer un repas avec une carte de crédit alors que le restaurant n'accepte que les espèces. Essayez de faire du vélo sur une rivière plutôt que d'utiliser un canot ou un kayak. Ou essayez de faire un gâteau avec du sel à la place du sucre. Vous pourriez essayer ces choses si vous le vouliez vraiment, mais je doute que vous soyez satisfait du résultat.
De même, si vous considérez la programmation comme une pâtisserie, les types de données sont les ingrédients clés de tout code Python, tout comme les œufs, la farine, le beurre, la levure chimique et le sucre sont des ingrédients clés pour faire un gâteau. Ou peut-être voulez-vous une tarte? Utilisez moins de farine, laissez tomber complètement la levure chimique, ajoutez peut-être une garniture aux fruits et le tour est joué, vous êtes sur le point de faire une tarte. Vous voyez où cela mène ? Comprendre ce dont chaque type de données est capable et comment les mélanger est essentiel pour être un meilleur programmeur.
Voici quelques types de données courants en Python :
Les nombres, qui sont subdivisés en d'autres types, tels que :
Nombres entiers : 0, 1, 2, 3
Flottants : 0,0, 1,0, 2,5, 3,145
Chaînes : "Think Different", "Netflix and Chill"
Booléens : vrai, faux
Il existe de nombreux autres types de données en Python, mais pour l'instant, nous allons nous concentrer sur ces trois types.
Dans cet article, vous apprendrez certaines des choses que vous pouvez faire avec les types de données de base en Python et pourquoi les types de données sont importants.
D'après mon expérience, cela a tendance à être la partie la plus ennuyeuse de tout livre/vidéo/cours en ligne "Apprendre à programmer", mais comme les types de données sont si cruciaux pour la programmation, je recommande fortement de ne pas sauter cet article.
Nombres
Les deux principaux types de nombres en Python sont les entiers (nombres entiers) et les flottants. Les flottants peuvent être considérés comme des nombres décimaux, mais il existe de grandes différences, dont l'une sera discutée plus tard.
La chose la plus évidente que nous puissions faire avec les nombres est… les mathématiques ! Voici quelques caractères spéciaux utilisés pour faire des maths en Python :
Avec ces opérations de base, nous pouvons maintenant travailler sur quelques scénarios.
Scénario 1
Votre équipe de contenu a signalé que le blog a généré 80 000 pages vues il y a deux semaines et cette semaine, il a généré 105 000 pages vues ; quelle est la croissance hebdomadaire des pages vues ? Rappelez-vous que pour calculer le pourcentage de changement que vous pouvez faire (Nouveau numéro - Ancien numéro) ÷ Ancien numéro :
Eh bien, cela ne semble pas tout à fait juste. Pourquoi pas? Comme tout bon mathématicien, Python a suivi l'ordre des opérations dans l'instruction que nous avons tapée. Ici, nous pouvons utiliser des parenthèses pour indiquer à Python l'ordre que nous voulons vraiment :
C'est mieux. N'oubliez pas que nous examinons un pourcentage, donc dans ce cas, déplacer la virgule de deux décimales vers la droite nous donnera ce dont nous avons besoin. On dirait que le trafic vers le blog a augmenté de 31,25 % d'une semaine à l'autre.
Scénario 2
Vous travaillez avec un éditeur en ligne pour diffuser une campagne spéciale comprenant des bannières grand format et des publicités vidéo. L'éditeur a envoyé une proposition indiquant que le package a un coût fixe de 15 000 $ et qu'il s'attend à ce qu'il génère 550 000 impressions ; vous souhaitez calculer le CPM pour mieux comparer cette proposition avec d'autres options.
Pour trouver le CPM, nous utilisons la formule Cost of Campaign ÷ (Total Impressions ÷ 1000):
Cette fois, nous avons obtenu l'ordre des opérations correct ; il semble que le CPM de la campagne soit d'environ 27,27 USD.
Utiliser Python comme celui-ci est vraiment fastidieux, surtout lorsque la saisie de formules longues ne renvoie qu'une seule métrique. Bien que ces exemples soient simplistes, il existe des moyens d'appliquer des opérations mathématiques plus complexes à des centaines de milliers (voire des millions) de lignes de données.
Les anciennes versions de Python (version 2.7 et antérieures) donnent des réponses étranges lorsqu'il s'agit de diviser des entiers qui donneraient un flottant, comme diviser 1 ÷ 3. Dans ces deux exemples, nous avons divisé des entiers et nous nous retrouvons avec des flottants sans aucun problème, ce qui fait partie de la magie d'utiliser une version plus récente de Python. Cela soulève la question : pourquoi les nombres avec un point décimal sont-ils appelés flottants plutôt que décimaux ? Jackie Kazil et Katharine Jarmul ont un excellent exemple dans leur livre, Data Wrangling With Python : dans de nombreux langages de programmation, 0,1 + 0,2 n'est pas égal à 0,3. Essayez-le vous-même : tapez 0.3 dans votre terminal, puis faites-le suivre de 0.1 + 0.2
Bizarre, non ? Mark Lutz approfondit cette bizarrerie dans son livre, Learning Python , mais comme les spécialistes du marketing n'ont généralement pas besoin de calculer des nombres au millionième degré, il n'est pas essentiel de bien comprendre ce problème et il suffit simplement de savoir qu'il existe. Mais si vous êtes vraiment curieux, voici quelques articles qui expliquent plus :
- La virgule flottante démystifiée, partie 1
- La virgule flottante démystifiée, partie 2
Cordes
Les chaînes peuvent être considérées comme des caractères entre guillemets. Il s'agit d'une définition extrêmement simplifiée car elle ignore les nuances entre les tableaux d'octets, Unicode, ASCII, etc., mais je pense qu'il n'est pas nécessaire d'entrer dans ce genre de détails pour le moment.
Comment saisir correctement les caractères entre guillemets ? Il s'avère qu'il y a plus que quelques façons différentes. Par exemple, la plupart du temps, peu importe que vous utilisiez des guillemets simples ou des guillemets doubles, tant que vous restez cohérent :
En commençant par un guillemet double dans la troisième chaîne et en terminant par un guillemet simple, nous avons rencontré une erreur. Vous ne mélangeriez probablement pas exprès des guillemets simples et doubles, mais une chose à laquelle il faut faire attention, ce sont les apostrophes :
Notez que la première chaîne, qui était entre guillemets doubles, gérait bien l'apostrophe, contrairement à la seconde chaîne. Pourquoi? Une fois que Python a rencontré le deuxième guillemet simple, il s'attendait à ce que la chaîne se termine, mais les lettres ont continué. Couper la phrase fait taire l'erreur :
Mais avoir seulement une partie d'une phrase n'est pas utile. Si vous voulez vraiment, vraiment utiliser des guillemets simples, une option consiste à "échapper" à l'apostrophe. Cela peut être fait en plaçant une barre oblique inverse (\) juste avant l'apostrophe dans votre phrase. Cela indique à Python de traiter le caractère suivant d'une manière spéciale :
Échapper à l'apostrophe nous a permis de continuer à utiliser des guillemets simples et une apostrophe dans la même chaîne.
Il existe une autre façon de créer des chaînes en Python : les guillemets triples. Notez que lorsque vous tapez une chaîne multiligne, vous devez appuyer sur Entrée pour commencer la ligne suivante ; cela change également Terminal pour afficher …: à gauche de votre nouvelle ligne. Cela réapparaîtra lorsque nous commencerons à taper plusieurs lignes de code.
Enfin, vous remarquerez peut-être quelques caractères funky dans la chaîne : \n. Cela indique à l'ordinateur où vous avez entré une nouvelle ligne ; c'est utile si vous avez besoin d'imprimer à nouveau la chaîne et que vous voulez être précis sur le formatage.
Ok, maintenant que nous avons passé tout ce temps à chercher comment saisir correctement une chaîne (je sais, non ? Tant de travail pour quelque chose d'aussi simple…), il est temps de passer à la partie amusante : manipuler les chaînes.
Il existe de très nombreuses autres méthodes pour les chaînes ; il y a aussi d'autres sujets entiers tels que le pattern matching et le slicing que nous aborderons plus tard. Une fois les bases éliminées, examinons un exemple réel.
Scénario 1
Supposons que vous disposiez d'un nouveau texte à importer dans AdWords, mais qu'il soit entièrement en minuscules et que vous n'êtes pas sûr que les titres ne dépassent pas la limite de 30 caractères. Vérifions la longueur et imprimons le titre "vols les moins chers pour paris" dans la casse du titre :
Le premier exemple est techniquement une fonction, tandis que le second est une méthode. La seule chose qui nous intéresse en ce moment est que chacun est tapé différemment : avec une fonction, nous tapons d'abord « len( », puis la chaîne elle-même, et enfin la dernière parenthèse « ) ». La bonne nouvelle est que le titre respecte la limite de 30 caractères imposée par AdWords.
Ensuite, avec la méthode, nous tapons d'abord la chaîne, puis ajoutons .title() après le guillemet fermant (sans espaces !).
Enfin, vous vous demandez peut-être « Pourquoi est-ce que je fais cela en Python alors que les mêmes formules sont disponibles dans Excel ? » C'est un bon point.
Bien que jouer avec les titres soit un exemple idiot, j'espère que le point est clair : il existe de nombreuses options disponibles pour manipuler du texte avec Python. Et comme dans le scénario précédent avec le calcul des CPM ou du changement en pourcentage, être capable de manipuler des milliers de caractères de texte en quelques lignes de code est un outil très puissant à avoir sous la main.
Par exemple, le plus gros casse-tête que cela m'a épargné est le nettoyage de millions de lignes d'URL de Google Analytics. Le deuxième point de cet exercice est de souligner quelque chose qui peut épargner d'autres douleurs à l'avenir : si vous savez comment utiliser des formules dans Excel ou Google Docs, vous avez déjà une longueur d'avance dans la compréhension de la programmation. Il existe de nombreuses similitudes qui se traduiront d'Excel en Python.
Booléens
Les deux principaux booléens en Python sont True et False. Leur signification est très simple : Vrai signifie vrai et Faux signifie faux.
Jusqu'à ce que nous nous plongeons dans l'utilisation de la logique en Python, il est préférable d'expliquer les booléens par une analogie. Lorsque vous créez une campagne publicitaire vidéo sur Facebook, vous devez décider quelle création utiliser. Devrait-il s'agir de la nouvelle vidéo branchée qui vise à faire connaître la marque, ou devriez-vous vous en tenir à l'ancienne vidéo éprouvée qui invite clairement à l'action ? Cela dépend de ce que vous essayez d'accomplir, n'est-ce pas ? De même, il y aura un point où vous devrez créer une logique pour indiquer à votre ordinateur quel chemin suivre, et les booléens sont un moyen d'accomplir cette tâche.
Il existe d'autres objets en Python qui peuvent agir comme des booléens, mais pour l'instant, il suffit d'introduire True et False. Nous aborderons ce sujet plus en profondeur dans un prochain billet.
Et alors?
Au début de cet article, j'ai mentionné que lorsque j'ai essayé pour la première fois d'apprendre les types de données, le processus était fastidieux et le sujet ennuyeux. Tout comme l'adolescent impatient d'un cours de géométrie au lycée qui pousse un enseignant avec la question "Quand aurais-je jamais besoin de connaître ce bric-à-brac inutile ?"
Je sentais que passer par toutes ces règles sur les types de données était inutile. Mais j'ai appris à apprécier les règles car lorsque vous essayez d'enfreindre ces règles (la plupart du temps), une erreur se produit. Si vous êtes un programmeur responsable et que vous testez votre code à l'avance, rencontrer ces erreurs peut vous éviter de commettre des erreurs critiques dans votre code lorsque cela compte vraiment. Explorons quelques façons dont les erreurs pourraient apparaître.
Dans les scénarios où vous avez pratiqué les mathématiques avec des types de nombres, avez-vous remarqué qu'aucune virgule n'était utilisée lors de ces calculs ? Vous êtes probablement habitué à taper des nombres avec des virgules (ou des décimales pour nos amis européens !), mais si vous essayez cela en Python, vous rencontrerez un comportement étrange :
Hmmm; pas du tout ce que vous attendiez. En plaçant une virgule dans ce nombre, nous avons créé sans le savoir un "tuple" ; il n'est pas nécessaire de savoir ce qu'est un tuple pour le moment, mais il est important de voir que la virgule divise le nombre en 500 et 0, ce qui est très différent de cinq cent mille.
Cet exemple met également en évidence un aspect crucial de l'écriture de code : un seul caractère mal saisi peut causer de gros problèmes. La relecture du code est difficile au début, mais avec la pratique, vous vous améliorerez. Les résultats inattendus ou les erreurs ne sont pas une raison de paniquer ; cela peut sembler effrayant, mais cela signifie généralement que quelque chose a été perdu dans la traduction.
Une règle à laquelle vous vous attendez probablement est que lorsque vous essayez d'ajouter un entier et une chaîne, vous obtenez une erreur :
Et vous auriez raison. Dans la deuxième ligne de code, nous avons essayé d'ajouter l'entier 1 à la chaîne '1', ce qui a entraîné une erreur. Vous vous dites peut-être : « C'est un exemple boiteux ; quand quelqu'un essaierait-il d'ajouter un entier à une chaîne ? » Vous seriez surpris du nombre d'API qui renvoient des nombres sous forme de chaîne. Il y a de très bonnes raisons de le faire, mais lorsque vous avez affaire à une API, présumer qu'un nombre sera un nombre n'est pas une valeur sûre. Un bon exemple est la toute nouvelle API de création de rapports Google Analytics. Jetez un œil à la capture d'écran des données que Google Analytics vous fournit lorsque vous demandez un rapport. Surprendre! Tous les nombres (regardez les champs "valeurs") sont entre guillemets.
Ce genre de jeter une clé dans les choses, n'est-ce pas? Ce serait le cas, mais si vous lisez la documentation de l'API à l'avance, vous vous attendez à ce problème. Heureusement, il existe également des outils en Python qui peuvent nous aider, comme la fonction int() :
En plaçant la chaîne '1' dans la fonction int(), nous disons à Python que nous voulons traiter cela comme un entier ; maintenant vous pouvez additionner ces chiffres et poursuivre votre vie.
Ce ne sont que quelques exemples de la façon dont les types de données peuvent déterminer ce que vous pouvez faire en Python, mais ils démontrent également qu'il existe presque toujours un moyen de contourner ces problèmes. Veuillez me contacter sur Twitter si vous avez des questions sur les types de données.