10 outils essentiels de ligne de commande Linux pour les scientifiques des données
Si vous commencez tout juste votre aventure dans la science des données, vous pourriez penser que tout tourne autour des bibliothèques Python, des carnets Jupyter et des algorithmes de machine learning sophistiqués, et bien que ceux-ci soient certainement importants, il existe un ensemble d'outils puissant qui est souvent négligé : le simple terminal de commande.
J'ai passé plus d'une décennie à travailler avec des systèmes Linux, et je peux vous dire que maîtriser ces outils en ligne de commande rendra votre vie beaucoup plus facile. Ils sont rapides, efficaces, et souvent le moyen le plus rapide de consulter vos données, de nettoyer des fichiers ou d'automatiser des tâches répétitives.
Pour rendre ce tutoriel pratique et concret, nous utiliserons un jeu de données de ventes e-commerce tout au long de cet article. Laissez-moi vous montrer comment le créer d'abord, puis nous l'explorerons en utilisant les 10 outils.
Créer le fichier exemple:
cat > sales_data.csv << 'EOF'
order_id,date,customer_name,product,category,quantity,price,region,status
1001,2024-01-15,John Smith,Laptop,Electronics,1,899.99,North,completed
1002,2024-01-16,Sarah Johnson,Mouse,Electronics,2,24.99,South,completed
1003,2024-01-16,Mike Brown,Desk Chair,Furniture,1,199.99,East,completed
1004,2024-01-17,John Smith,Keyboard,Electronics,1,79.99,North,completed
1005,2024-01-18,Emily Davis,Notebook,Stationery,5,12.99,West,completed
1006,2024-01-18,Sarah Johnson,Laptop,Electronics,1,899.99,South,pending
1007,2024-01-19,Chris Wilson,Monitor,Electronics,2,299.99,North,completed
1008,2024-01-20,John Smith,USB Cable,Electronics,3,9.99,North,completed
1009,2024-01-20,Anna Martinez,Desk,Furniture,1,399.99,East,completed
1010,2024-01-21,Mike Brown,Laptop,Electronics,1,899.99,East,cancelled
1011,2024-01-22,Emily Davis,Pen Set,Stationery,10,5.99,West,completed
1012,2024-01-22,Sarah Johnson,Monitor,Electronics,1,299.99,South,completed
1013,2024-01-23,Chris Wilson,Desk Chair,Furniture,2,199.99,North,completed
1014,2024-01-24,Anna Martinez,Laptop,Electronics,1,899.99,East,completed
1015,2024-01-25,John Smith,Mouse Pad,Electronics,1,14.99,North,completed
1016,2024-01-26,Mike Brown,Bookshelf,Furniture,1,149.99,East,completed
1017,2024-01-27,Emily Davis,Highlighter,Stationery,8,3.99,West,completed
1018,2024-01-28,NULL,Laptop,Electronics,1,899.99,South,pending
1019,2024-01-29,Chris Wilson,Webcam,Electronics,1,89.99,North,completed
1020,2024-01-30,Sarah Johnson,Desk Lamp,Furniture,2,49.99,South,completed
EOF
Explorons maintenant ce fichier en utilisant nos 10 outils essentiels !
1. grep – Votre outil de correspondance de motifs
Considérez la commande grep comme votre détective de données, car elle parcourt les fichiers et trouve les lignes qui correspondent aux motifs que vous spécifiez, ce qui est extrêmement utile lorsque vous traitez de grands fichiers journaux ou des ensembles de données textuelles.
Exemple 1 : Trouvez toutes les commandes de John Smith.
grep "John Smith" sales_data.csv
Exemple 2 : Comptez combien de commandes d'ordinateurs portables nous avons.
grep -c "Laptop" sales_data.csv
Exemple 3 : Trouvez toutes les commandes qui NE sont PAS terminées.
grep -v "completed" sales_data.csv | grep -v "order_id"
Exemple 4 : Trouver des commandes avec des numéros de ligne.
grep -n "Electronics" sales_data.csv | head -5
2. awk – Le couteau suisse du traitement de texte
awk est comme un mini langage de programmation conçu pour le traitement de texte, ce qui est parfait pour extraire des colonnes spécifiques, effectuer des calculs et transformer des données à la volée.
Exemple 1 : Extraire uniquement les noms de produits et les prix.
awk -F',' '{print $4, $7}' sales_data.csv | head -6
Exemple 2 : Calculer le chiffre d'affaires total de toutes les commandes.
awk -F',' 'NR>1 {sum+=$7} END {print "Total Revenue: $" sum}' sales_data.csv
Exemple 3 : Affichez les commandes dont le prix est supérieur à 100 $.
awk -F',' 'NR>1 && $7>100 {print $1, $4, $7}' sales_data.csv
Exemple 4 : Calculer le prix moyen par catégorie.
awk -F',' 'NR>1 {
category[$5]+=$7
count[$5]++
}
END {
for (cat in category)
printf "%s: $%.2f\n", cat, category[cat]/count[cat]
}' sales_data.csv
3. sed – L'éditeur de flux pour des modifications rapides
sed est votre outil de prédilection pour les opérations de recherche et de remplacement et les transformations de texte. C'est comme faire « chercher et remplacer » dans un éditeur de texte, mais depuis la ligne de commande et beaucoup plus rapidement.
Exemple 1 : Remplacez les valeurs NULL par « Inconnu ».
sed 's/NULL/Unknown/g' sales_data.csv | grep "Unknown"
Exemple 2 : Supprimez la ligne d’en-tête.
sed '1d' sales_data.csv | head -3
Exemple 3 : Changez “terminé” en “FAIT“.
sed 's/completed/DONE/g' sales_data.csv | tail -5
Exemple 4 : Ajoutez un signe dollar devant tous les prix.
sed 's/,\([0-9]*\.[0-9]*\),/,$,/g' sales_data.csv | head -4
4. cut – Extraction de colonne simple
Bien que awk soit puissant, parfois vous avez juste besoin de quelque chose de simple et rapide, c'est là que la commande cut intervient, qui est spécialement conçue pour extraire des colonnes à partir de fichiers délimités.
Exemple 1 : Extraire les noms des clients et les produits.
cut -d',' -f3,4 sales_data.csv | head -6
Exemple 2 : Extraire uniquement la colonne de région.
cut -d',' -f8 sales_data.csv | head -8
Exemple 3 : Obtenez l'ID de commande, le produit et le statut.
cut -d',' -f1,4,9 sales_data.csv | head -6
5. trier – Organisez vos données
Trier les données est fondamental pour l'analyse, et la commande sort fait cela de manière incroyablement efficace, même avec des fichiers trop volumineux pour tenir en mémoire.
Exemple 1 : Trier par nom de client par ordre alphabétique.
sort -t',' -k3 sales_data.csv | head -6
Exemple 2 : Trier par prix (du plus élevé au plus bas).
sort -t',' -k7 -rn sales_data.csv | head -6
Exemple 3 : Trier par région, puis par prix.
sort -t',' -k8,8 -k7,7rn sales_data.csv | grep -v "order_id" | head -8
6. uniq – Trouver et compter les valeurs uniques
La commande uniq vous aide à identifier les valeurs uniques, à compter les occurrences et à trouver les doublons, ce qui est comme une version légère de value_counts() de pandas.
uniq ne fonctionne que sur des données triées, donc vous allez généralement pipe avec sort.
Exemple 1 : Comptez les commandes par région.
cut -d',' -f8 sales_data.csv | tail -n +2 | sort | uniq -c
Exemple 2 : Compter les commandes par catégorie de produit.
cut -d',' -f5 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn
Exemple 3 : Trouvez quels clients ont effectué plusieurs achats.
cut -d',' -f3 sales_data.csv | tail -n +2 | sort | uniq -c | sort -rn
Exemple 4 : Afficher les produits uniques commandés.
cut -d',' -f4 sales_data.csv | tail -n +2 | sort | uniq
7. wc – Nombre de mots (et plus)
Ne vous laissez pas tromper par le nom, wc (nombre de mots) est utile pour bien plus que compter les mots, c'est votre outil rapide de statistiques.
Exemple 1 : Comptez le nombre total de commandes (moins l'en-tête).
wc -l sales_data.csv
Exemple 2 : Comptez combien de commandes électroniques.
grep "Electronics" sales_data.csv | wc -l
Exemple 3 : Comptez le nombre total de caractères dans le fichier.
wc -c sales_data.csv
Exemple 4 : Plusieurs statistiques à la fois.
wc sales_data.csv
8. tête et queue – Aperçu de vos données
Au lieu d'ouvrir un fichier massif, utilisez la commande head pour voir les premières lignes ou tail pour voir les dernières.
Exemple 1 : Affichez les 5 premières commandes.
head -6 sales_data.csv
Exemple 2 : Affichez uniquement les en-têtes de colonnes.
head -1 sales_data.csv
Exemple 3 : Voir les 5 dernières commandes.
tail -5 sales_data.csv
Exemple 4 : Passez l’en-tête et regardez les données
tail -n +2 sales_data.csv | head -3
9. find – Localiser des fichiers dans plusieurs répertoires
Lorsque vous travaillez sur des projets, vous devez souvent trouver des fichiers éparpillés dans les répertoires, et la commande find est incroyablement puissante pour cela.
Tout d'abord, créons une structure de répertoire réaliste :
mkdir -p data_project/{raw,processed,reports}
cp sales_data.csv data_project/raw/
cp sales_data.csv data_project/processed/sales_cleaned.csv
echo "Summary report" > data_project/reports/summary.txt
Exemple 1 : Trouvez tous les fichiers CSV.
find data_project -name "*.csv"
Exemple 2 : Trouver les fichiers modifiés dans la dernière minute.
find data_project -name "*.csv" -mmin -1
Exemple 3 : Trouver et compter les lignes dans tous les fichiers CSV.
find data_project -name "*.csv" -exec wc -l {} \;
Exemple 4 : Trouver des fichiers de plus de 1 Ko.
find data_project -type f -size +1k
10. jq – Processeur JSON Extraordinaire
Dans la science des données moderne, beaucoup d'informations proviennent des API, qui envoient généralement des données au format JSON, une manière structurée d'organiser l'information.
Alors que des outils comme grep, awk et sed sont excellents pour rechercher et manipuler du texte brut, jq est conçu spécifiquement pour gérer des données JSON.
sudo apt install jq # Ubuntu/Debian
sudo yum install jq # CentOS/RHEL
Convertissons d'abord certaines de nos données au format JSON :
cat > sales_sample.json << 'EOF'
{
"orders": [
{
"order_id": 1001,
"customer": "John Smith",
"product": "Laptop",
"price": 899.99,
"region": "North",
"status": "completed"
},
{
"order_id": 1002,
"customer": "Sarah Johnson",
"product": "Mouse",
"price": 24.99,
"region": "South",
"status": "completed"
},
{
"order_id": 1006,
"customer": "Sarah Johnson",
"product": "Laptop",
"price": 899.99,
"region": "South",
"status": "pending"
}
]
}
EOF
Exemple 1 : Formater joliment le JSON.
jq '.' sales_sample.json
Exemple 2 : Extraire tous les noms des clients.
jq '.orders[].customer' sales_sample.json
Exemple 3 : Filtrer les commandes de plus de 100 $.
jq '.orders[] | select(.price > 100)' sales_sample.json
Exemple 4 : Convertir en format CSV.
jq -r '.orders[] | [.order_id, .customer, .product, .price] | @csv' sales_sample.json
Bonus : Combiner les outils avec des tuyaux
Voici où la magie opère vraiment : vous pouvez enchaîner ces outils ensemble en utilisant des tuyaux (|) pour créer des pipelines de traitement de données puissants.
Exemple 1 : Trouvez les 10 mots les plus courants dans un fichier texte :
cat article.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c | sort -rn | head -10
Exemple 2 : Analyser les journaux du serveur web :
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
Exemple 3 : Exploration rapide des données :
cut -d',' -f3 sales.csv | tail -n +2 | sort -n | uniq -c
Exemple de flux de travail pratique
Laissez-moi vous montrer comment ces outils fonctionnent ensemble dans un scénario réel. Imaginez que vous avez un grand fichier CSV avec des données de ventes, et que vous voulez :
- Supprimez l'en-tête.
- Extraire les colonnes du nom du produit et du prix.
- Trouvez les 10 produits les plus chers.
Voici la phrase clé :
tail -n +2 sales.csv | cut -d',' -f2,5 | sort -t',' -k2 -rn | head -10
En le décomposant :
tail -n +2: Ignorer la ligne d'en-tête.cut -d',' -f2,5: Extraire les colonnes 2 et 5.sort -t',' -k2 -rn: Trier par le deuxième champ, numériquement, ordre inverse.head -10: Afficher les 10 premiers résultats.
Conclusion
Ces 10 outils en ligne de commande sont comme avoir un couteau suisse pour les données. Ils sont rapides, efficaces, et une fois que vous vous y habituez, vous vous surprendrez à les utiliser constamment, même lorsque vous travaillez sur des projets Python.
Commencez par les bases : head, tail, wc, et grep. Une fois que celles-ci deviennent naturelles, ajoutez cut, sort, et uniq à votre arsenal. Enfin, montez en compétence avec awk, sed, et jq.
Souviens-toi, tu n'as pas besoin de tout mémoriser. Garde ce guide en favori et consulte-le lorsque tu as besoin d'un outil spécifique. Avec le temps, ces commandes deviendront une seconde nature.









