Maison >Tutoriel système >Linux >L'essentiel de l'analyse de données Linux : 9 commandes pratiques

L'essentiel de l'analyse de données Linux : 9 commandes pratiques

WBOY
WBOYavant
2024-02-14 20:18:121237parcourir

L'analyse des données est aujourd'hui l'une des compétences les plus populaires. Elle peut nous aider à extraire des informations précieuses à partir d'énormes quantités de données pour soutenir la prise de décision et l'innovation. Cependant, pour mener une analyse efficace des données, nous devons non seulement maîtriser les théories et les méthodes pertinentes, mais également maîtriser l’utilisation de certains outils et plateformes. Le système Linux est l'un des systèmes d'exploitation couramment utilisés par les analystes de données. Il fournit de nombreuses commandes puissantes et flexibles qui peuvent nous aider à résoudre divers problèmes de données. Cet article vous présentera 9 commandes couramment utilisées pour l'analyse de données sous les systèmes Linux, ainsi que leurs fonctions et leur utilisation. Que vous soyez un débutant ou un vétéran de Linux, ces commandes rendront votre travail d'analyse de données plus efficace et plus pratique.

Lessentiel de lanalyse de données Linux : 9 commandes pratiques

1. Tête et queue

Tout d’abord, commençons par le traitement des fichiers. Quel est le contenu du fichier ? Quel est son format ? Vous pouvez utiliser la commande cat pour afficher le fichier dans le terminal, mais elle n'est évidemment pas adaptée au traitement de fichiers au contenu long.

Entrez la tête et la queue, qui peuvent afficher complètement le nombre de lignes spécifié dans le fichier. Si vous ne précisez pas le nombre de lignes, 10 d'entre elles seront affichées par défaut.

1. $ tail -n 3 jan2017articles.csv
2. 02 Jan 2017,Article,Scott Nesbitt,3 tips for effectively using wikis for documentation,1
,/article/17/1/tips-using-wiki-documentation,"Documentation, Wiki",710
3. 02 Jan 2017,Article,Jen Wike Huger,The Opensource.com preview for January,0,/article/17
/1/editorial-preview-january,,358
4. 02 Jan 2017,Poll,Jason Baker,What is your open source New Year's resolution?,1,/poll/1
7/1/what-your-open-source-new-years-resolution,,186

Dans les trois dernières lignes, j'ai pu trouver la date, le nom de l'auteur, le titre et quelques autres informations. Cependant, en raison du manque d’en-têtes de colonnes, je ne connais pas la signification spécifique de chaque colonne. Consultez les titres spécifiques à chaque colonne ci-dessous :

1. $ head -n 1 jan2017articles.csv
2. Post date,Content type,Author,Title,Comment count,Path,Tags,Word count

Maintenant, tout est très clair, nous pouvons voir la date de publication, le type de contenu, l'auteur, le titre, le nombre de soumissions, les URL associées, les balises pour chaque article et le nombre de mots.

二、wc

Mais que se passe-t-il si vous avez besoin d'analyser des centaines, voire des milliers d'articles ? Ici, vous devez utiliser la commande wc - qui est l'abréviation de « word count ». wc peut compter les octets, les caractères, les mots ou les lignes d'un fichier. Dans cet exemple, nous souhaitons connaître le nombre de lignes de l’article.

  1. $ wc -l jan2017articles.csv 93 jan2017articles.csv

Ce fichier comporte 93 lignes au total. Étant donné que la première ligne contient le titre du fichier, on peut supposer que ce fichier est une liste de 92 articles.

Trois, grep

Une nouvelle question se pose ci-dessous : combien de ces articles sont liés à des sujets de sécurité ? Pour atteindre l'objectif, nous supposons que les articles requis mentionneront le mot sécurité dans le titre, la balise ou autre position. À l'heure actuelle, l'outil grep peut être utilisé pour rechercher des fichiers par caractères spécifiques ou implémenter d'autres modèles de recherche. Il s'agit d'un outil extrêmement puissant car nous pouvons même créer des modèles de correspondance extrêmement précis à l'aide d'expressions régulières. Mais ici, il suffit de trouver une simple chaîne.

1. $ grep -i "security" jan2017articles.csv
2. 30 Jan 2017,Article,Tiberius Hefflin,4 ways to improve your security online right now,3,
/article/17/1/4-ways-improve-your-online-security,Security and encryption,1242
3. 28 Jan 2017,Article,Subhashish Panigrahi,How communities in India support privacy and 
software freedom,0,/article/17/1/how-communities-india-support-privacy-software-freedom,Security and encryption,453
4. 27 Jan 2017,Article,Alan Smithee,Data Privacy Day 2017: Solutions for everyday privacy
,5,/article/17/1/every-day-privacy,"Big data, Security and encryption",1424
5. 04 Jan 2017,Article,Daniel J Walsh,50 ways to avoid getting hacked in 2017,14,/article
/17/1/yearbook-50-ways-avoid-getting-hacked,"Yearbook, 2016 Open Source Yearbook, Security and encryption, Containers, Docker,
 Linux",2143

我们使用的格式为grep加-i标记(告知grep不区分大小写),再加我们希望搜索的模式,最后是我们所搜索的目标文件的

位置。最后我们找到了

4 articles liés à la sécurité. Si la portée de la recherche est plus spécifique, nous pouvons utiliser pipe - il peut combiner grep avec la commande wc pour savoir combien de lignes mentionnent du contenu de sécurité.

$ grep -i "security" jan2017articles.csv | wc -l 4

De cette façon, wc extraira la sortie de la commande grep et l'utilisera comme entrée. Il est évident que cette combinaison, couplée à un peu de script shell, transforme instantanément le terminal en un puissant outil d'analyse de données.

Quatre, tr

Dans la plupart des scénarios d'analyse, nous serons confrontés à des fichiers CSV - mais comment les convertir vers d'autres formats pour différentes méthodes d'application ? Ici, nous le convertissons en formulaire HTML pour l'utilisation des données via des tableaux ? La commande tr peut vous aider à atteindre cet objectif, elle peut convertir un type de caractères en un autre type. De même, vous pouvez également utiliser la commande pipe pour réaliser un ancrage sortie/entrée.

Ensuite, essayons un autre exemple en plusieurs parties, qui consiste à créer un fichier TSV (valeurs séparées par des tabulations) qui contient uniquement les articles publiés le 20 janvier.

=$ grep "20 Jan 2017" jan2017articles.csv | tr ',' '/t' > jan20only.tsv

Tout d’abord, nous utilisons grep pour la requête de date. Nous redirigeons ce résultat vers la commande tr et utilisons cette dernière pour remplacer toutes les virgules par des tabulations (représentées par '/t'). Mais où va le résultat ? Ici, nous utilisons le caractère > pour afficher le résultat dans un nouveau fichier plutôt que sur l'écran. De cette façon, nous pouvons garantir que le fichier dqywjan20only.tsv contient les données attendues.

$ cat jan20only.tsv 20 Jan 2017 Article Kushal Das 5 ways to expand your project's 
contributor base 2 /article/17/1/expand-project-contributor-base Getting started 690 20 Jan 2017 Article D Ruth Bavousett How to write web apps 
in R with Shiny 2 /article/17/1/writing-new-web-apps-shiny Web development 218 20 Jan 2017 Article Jason Baker "Top 5: Shell scripting the
 Cinnamon Linux desktop environment and more" 0 /article/17/1/top-5-january-20 Top 5 214 20 Jan 2017 Article Tracy Miranda How is your community promoting 
diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007

五、sort

如果我们先要找到包含信息最多的特定列,又该如何操作?假设我们需要了解哪篇文章包含最长的新文章列表,那么面对之前得出的1月20日文章列表,我们可以使用sort命令对列字数进行排序。在这种情况下,我们并不需要使用中间文件,而可以继续使用pipe。不过将长命令链拆分成较短的部分往往能够简化整个操作过程。

  1. ‘/t’ -k8 jan20only.tsv | head -n 1
  2. 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007

以上是一条长命令,我们尝试进行拆分。首先,我们使用sort命令对字数进行排序。-nr选项告知sort以数字排序,并将结果进行反向排序(由大到小)。此后的-t则告知其中的分隔符为。其中的要求此shell为一条需要处理的字符串,并将/n返回为tab。而-k8部分则告知sort命令使用第八列,即本示例中进行字数统计的目标列。

最后,输出结果被pipe至head,处理后在结果中显示此文件中包含最多字数的文章标题。

六、sed

大家可能还需要在文件中选择特定某行。这里可以使用sed。如果希望将全部包含标题的多个文件加以合并,并只为整体文件显示一组标题,即需要清除额外内容; 或者希望只提取特定行范围,同样可以使用sed。另外,sed还能够很好地完成批量查找与替换任务。

下面立足之前的文章列表创建一个不含标题的新文件,用于同其他文件合并(例如我们每月都会定期生成某个文件,现在需要将各个月份的内容进行合并)。

  1. $ sed ‘1 d’ jan2017articles.csv > jan17no_headers.csv

其中的“1 d”选项要求sed删除第一行。

七、cut

了解了如何删除行,那么我们该如何删除列?或者说如何只选定某一列?下面我们尝试为之前生成的列表创建一份新的作者清单。

  1. $ cut -d’,’ -f3 jan17no_headers.csv > authors.txt

在这里,通过cut与-d相配合代表着我们需要第三列(-f3),并将结果发送至名为authors.txt的新文件。

八、uniq

作者清单已经完成,但我们要如何知悉其中包含多少位不同的作者?每位作者又各自编写了多少篇文章?这里使用unip。下面我们对文件进行sort排序,找到唯一值,而后计算每位作者的文章数量,并用结果替换原本内容。

  1. sort authors.txt | uniq -c > authors.txt

现在已经可以看到每位作者的对应文章数,下面检查最后三行以确保结果正确。

  1. $ tail -n3 authors-sorted.txt
  2. 1 Tracy Miranda
  3. 1 Veer Muchandi
  4. 3 VM (Vicky) Brasseur

九、awk

最后让我们了解最后一款工具,awk。awk是一款出色的替换性工具,当然其功能远不止如此。下面我们重新回归1月12日文章列表TSV文件,利用awk创建新列表以标明各篇文章的作者以及各作者编写的具体字数。

  1. $ awk -F "/t" '{print NF}' jan20only.tsv
  2. Kushal Das 690
  3. D Ruth Bavousett 218
  4. Jason Baker 214
  5. Tracy Miranda 1007

Le -F "/t" est utilisé pour indiquer à awk qu'il traite actuellement des données séparées par des tabulations. À l’intérieur des accolades, nous fournissons à awk le code d’exécution. signifie qu'il affichera la troisième ligne, tandis que NF signifie qu'il affichera la dernière ligne (c'est-à-dire l'abréviation de « nombre de champs ») et ajoutera deux espaces entre les deux résultats pour une division claire.

Bien que l'exemple répertorié ici soit à petite échelle et ne semble pas nécessiter l'utilisation des outils ci-dessus, si la portée est étendue à un fichier contenant 93 000 lignes, il est évidemment difficile d'utiliser un tableur pour le traiter.

En utilisant ces outils simples et ces petits scripts, vous pouvez éviter d'utiliser des outils de base de données et effectuer facilement une grande quantité de travaux de statistiques de données. Que vous soyez professionnel ou amateur, son rôle ne peut être ignoré.

Grâce à cet article, vous avez découvert les 9 commandes couramment utilisées pour l'analyse des données sous les systèmes Linux, ainsi que leurs fonctions et leur utilisation. Ces commandes couvrent les opérations sur les fichiers, la gestion des répertoires, la redirection de sortie, les canaux, les liens, etc., et peuvent vous aider à effectuer divers traitements et analyses de données sous les systèmes Linux. Bien entendu, ces commandes ne sont que quelques-unes des nombreuses commandes fournies par le système Linux. Si vous souhaitez en savoir plus sur le système Linux et l'analyse des données, vous devez toujours continuer à explorer et à vous entraîner. J'espère que cet article pourra être utile pour votre étude et votre travail. Vous êtes également invités à partager d'autres commandes Linux pratiques que vous utilisez ou découvrez.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer