Ceux qui travaillent avec Python savent que ce langage est bon en raison de son vaste écosystème. On pourrait même dire que le langage de programmation ne se démarquerait en rien de spécial, sinon pour ses merveilleux packages qui ajoutent de nouvelles fonctions aux principaux.
NumPy est un exemple. Les outils matriciels conviennent également à Python de base, mais l'utilisation de NumPy améliore les choses plusieurs fois. De plus, ce langage possède des fonctionnalités intéressantes qui le rendent encore plus fonctionnel. En utilisant ces fonctionnalités, vous pouvez réduire le nombre de dépendances, gagner du temps et simplifier le processus de développement lui-même. Voyons quelles sont ces possibilités.
À propos, Alexey Nekrasov, le chef du département Python chez MTS, et le directeur du programme du département Python chez Skillbox, a ajouté ses conseils sur certaines fonctions. Pour préciser où se trouve la traduction et où se trouvent les commentaires, nous mettrons en évidence ce dernier avec du texte.
# 1 lambda
Une fois, j'ai écrit un article entier sur les raisons pour lesquelles lambda fait de Python le langage de programmation optimal pour le calcul statistique. Grâce à cette fonctionnalité, les opérations mathématiques peuvent être appliquées à presque tous les types de données, sans utiliser des fonctions entières, mais en évaluant des expressions.
Il permet d'introduire globalement des définitions, ainsi qu'une syntaxe et une méthodologie de type fonctionnel, dans un langage qui a toujours une structure de classe.
Tout cela vous permet de gagner du temps lors de l'écriture du programme, d'économiser des ressources et de rendre le code plus concis. De plus, lambda vous permet d'utiliser des méthodes telles que apply () pour appliquer rapidement des expressions à tous les sous-ensembles de vos données. Pour un data scientist, et pas seulement pour les représentants de cette profession, de telles opportunités sont extrêmement utiles.
La syntaxe est la suivante. Nous commençons par la valeur de retour de l'expression lambda, suivie de la variable que nous aimerions fournir comme argument positionnel. Après cela, nous effectuons l'opération en utilisant cet argument comme variable:
mean = lambda x : sum(x) / len(x)
Maintenant, nous pouvons faire l'appel, comme avec n'importe quelle autre méthode en Python:
x = [5, 10, 15, 20]
print(mean(x))
Commentaire d'Alexey:
soyez prudent avec lambda pour ne pas altérer la lisibilité du code. Voici quelques conseils:
À partir de PEP8. Utilisez toujours l'instruction def au lieu de l'opérateur d'affectation, qui lie l'expression lambda directement à un identificateur:
Correct:
def f (x): return 2 * x
Faux:
f = lambda x: 2 * x
Si la longueur de l'expression lambda est supérieure à 40 caractères, il est fort probable que vous ayez mis trop de logique dans une ligne de code et qu'elle soit devenue illisible. Vous ne devriez pas faire cela, il vaut mieux le mettre dans une fonction séparée.
# 2: Shutil
Le module Shutil est l'un des outils les plus sous-estimés de l'arsenal Python. Il est inclus dans la bibliothèque standard et peut être importé comme n'importe quel autre module du langage:
import shutil
Que fait shutil? En fait, il s'agit d'une interface de haut niveau avec le langage de programmation Python en ce qui concerne le système de fichiers de votre système d'exploitation. Ces appels sont souvent effectués à l'aide du module os; n'oubliez pas shutil. Vous avez probablement dû déplacer un fichier de répertoire en répertoire à l'aide d'un script, ce qui a fait beaucoup de travail fastidieux, non?
Shutil résout ces problèmes classiques de fichiers et de tables d'allocation avec une solution de haut niveau. C'est la clé pour gagner du temps et accélérer les opérations sur les fichiers. Voici quelques exemples d'appels de haut niveau fournis par shutil.
import shutil
shutil.copyfile('mydatabase.db', 'archive.db')
shutil.move('/src/High.py', '/packages/High')
# 3: glob
Glob n'est peut-être pas aussi génial que shutil, et il n'était même pas proche de lambda en termes d'utilité. Mais il est irremplaçable dans certains cas. Ce module est utilisé pour trouver des répertoires pour les jokers. Cela signifie qu'il peut être utilisé pour agréger des données sur les fichiers sur votre PC et leurs extensions. Le module est importé sans problème:
import glob
Je ne sais pas si ce module a plus de fonctionnalités, mais glob () est ce qu'il faut pour effectuer des recherches de fichiers. La recherche utilise la syntaxe Unix, c'est-à-dire ceux. *, / etc.
glob.glob('*.ipynb')
Cette chaîne renvoie tous les noms de fichiers correspondant à la requête spécifiée. La fonction peut être utilisée à la fois pour l'agrégation de données et simplement pour travailler avec des fichiers.
# 4: Argparse
Ce module fournit une méthode robuste et approfondie pour analyser les arguments de ligne de commande. De nombreux outils de développement utilisent ce concept et vous pouvez travailler avec tout cela en utilisant la ligne de commande Unix. Un bon exemple est Python Gunicorn, qui gère les arguments de ligne de commande passés. Pour commencer à travailler avec un module, vous devez l'importer.
import argparse
Ensuite, pour pouvoir travailler avec, nous construisons un nouveau type, ce sera l'analyseur d'argument:
parser = argparse.ArgumentParser(prog = 'top',
description = 'Show top lines from the file')
Nous ajoutons maintenant de nouveaux arguments à notre analyseur. Dans ce cas, nous créons un argument qui peut être passé pour déterminer le nombre de lignes que nous voulons sortir pour chaque fichier:
parser.add_argument('-l', '--lines', type=int, default=10)
Plusieurs arguments de mot-clé ont été ajoutés ici, dont l'un fournira le type de données qui est passé pour cet argument, et l'autre fournira une valeur par défaut lorsque le fichier est appelé sans cet argument. Nous pouvons maintenant obtenir les arguments en appelant la fonction parse_args () sur notre nouveau type d'analyseur d'arguments:
args = parser.parse_args()
Nous pouvons maintenant appeler ce fichier Python pour compiler et également fournir facilement les options requises à partir de Bash.
python top.py --lines=5 examplefile.txt
Inutile de dire que cela peut certainement être utile. J'ai beaucoup utilisé ce module lorsque je travaille avec Crontab. Il peut exécuter des scripts avec des horodatages Unix spécifiques. De plus, ce script peut également être utilisé pour les superviseurs qui exécutent des commandes Bash sans intervention de l'utilisateur en tant que travailleur.
# 5: Importer
Un autre module très sous-estimé. Le module re est utilisé pour analyser les chaînes à l'aide d'expressions régulières et fournit plus d'options pour travailler avec des chaînes en Python. Combien de fois avez-vous pris des décisions algorithmiques basées sur des fonctions appartenant à une classe de chaînes comme str.split ()? Mais arrêtez de le supporter! Après tout, les expressions régulières sont beaucoup plus simples et beaucoup plus faciles à utiliser!
import re
Le module re, contrairement à certains des autres de cette liste, fournit non pas une mais de nombreuses fonctions extrêmement utiles. Ils sont particulièrement pertinents pour travailler avec de grandes quantités de données, ce qui est important pour les scientifiques des données. Deux exemples pour commencer sont les fonctions sub () et findall ().
import re
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'
:
regex :
- re.compile. re.compile ( ) regex.
- re.compile regex.
- re.VERBOSE. re.compile re.VERBOSE ( ) regex . .
:
pattern = '^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$' re.search(pattern, 'MDLV')
pattern = ''' ^ # beginning of string M{0,3} # thousands - 0 to 3 Ms (CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 Cs), # or 500-800 (D, followed by 0 to 3 Cs) (XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 Xs), # or 50-80 (L, followed by 0 to 3 Xs) (IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 Is), # or 5-8 (V, followed by 0 to 3 Is) $ # end of string ''' re.search(pattern, 'M', re.VERBOSE)
- python raw string regex.
- Groupes de capture nommés pour tous les groupes de capture s'il y en a plus d'un (? P ...). (même s'il n'y a qu'une seule capture, il est également préférable d'utiliser)
regex101.com est un excellent site pour le débogage et la vérification des regex
# 6: Mathématiques
Ce n'est pas le plus grand module de l'histoire, mais il est souvent utile. Le module mathématique vous donne accès à tout, du sin et cos aux logarithmes. Tout cela est extrêmement important lorsque vous travaillez avec des algorithmes.
import math
Un module peut certainement gagner du temps en rendant les opérations mathématiques disponibles sans dépendances. Dans cet exemple, je vais vous montrer la fonction log (), mais si vous approfondissez le module, tout un monde s'ouvre.
import math
math.log(1024, 2)
# 7: Statistiques
Un autre module extrêmement utile pour les calculs statistiques. Il donne accès à des statistiques de base - pas aussi profondes que dans le cas de SCiPy, mais cela peut être suffisant pour l'analyse des données. L'alias de ce module est st, dans certains cas stc ou sts. Mais attention - pas scs, c'est un alias pour Scipy.stats.
import statistics as st
Ce module fournit de nombreuses fonctionnalités utiles qui valent la peine d'être recherchées! L'avantage de ce paquet est qu'il n'a aucune dépendance. Jetons un coup d'œil à quelques opérations statistiques de base à usage général:
import statistics as st
st.mean(data)
st.median(data)
st.variance(data)
# 8: urllib
Si la plupart des autres modules de cette liste ne sont pas bien connus, urlib est une exception. Importons-le!
import urllib
Flask peut être utilisé à la place car il est plus fonctionnel. Mais pour la plupart des fonctions de base, les capacités de la bibliothèque standard sont suffisantes, ce qui permet de ne pas se soucier des dépendances. Bien sûr, si des fonctionnalités supplémentaires sont nécessaires, dans ce cas, il convient de prêter attention à autre chose. Mais si nous parlons d'une requête HTTP, alors urlib fera ce dont il a besoin.
from urllib.request import urlopen
data = null
with urlopen('http://example_url/') as response: data = response
Le module urlib est quelque chose que je recommande fortement d'en savoir plus.
# 9: date / heure
Un autre excellent exemple d'outil assez courant en informatique scientifique est le type de date et d'heure. Très souvent, les données sont horodatées. Parfois, il s'agit même d'une fonction prédictive utilisée pour entraîner le modèle. Ce module est souvent utilisé avec l'alias dt:
import datetime as dt
Nous pouvons maintenant créer des types de date et d'heure et travailler avec une syntaxe de date et d'heure typique avec des propriétés telles que l'année, le mois et le jour. Ceci est incroyablement utile pour reformater, analyser et travailler avec des sections spécifiques de dates dans vos données. Jetons un coup d'œil à certaines des principales fonctionnalités de ce package:
import datetime as dt
now = dt.date.today()
print(now.year)
print(now.month)
# 10: zlib
Le dernier contributeur à cette liste est le module zlib. Il s'agit d'une solution de compression de données polyvalente utilisant le langage de programmation Python. Le module est extrêmement utile lorsque vous travaillez avec des packages.
import zlib
Les fonctions les plus importantes ici sont compress () et decompress ().
h = " Hello, it is me, you're friend Emmett!"print(len(h))
t = zlib.compress(h)
print(len(t))
z = decompress(t)
print(len(z))
En conclusion, je dirai que la programmation en Python semble parfois difficile en raison du grand nombre de dépendances. Et la bibliothèque de langues standard vous permet de vous débarrasser partiellement de ce problème. De plus, les outils Python standard peuvent gagner du temps, réduire la quantité de code et le rendre plus lisible.