Heim  >  Artikel  >  System-Tutorial  >  Grundlagen der Linux-Datenanalyse: 9 praktische Befehle

Grundlagen der Linux-Datenanalyse: 9 praktische Befehle

WBOY
WBOYnach vorne
2024-02-14 20:18:121188Durchsuche

Datenanalyse ist heutzutage eine der beliebtesten Fähigkeiten. Sie kann uns dabei helfen, wertvolle Informationen aus riesigen Datenmengen zu extrahieren, um Entscheidungsfindung und Innovation zu unterstützen. Um eine effektive Datenanalyse durchführen zu können, müssen wir jedoch nicht nur relevante Theorien und Methoden beherrschen, sondern auch einige Tools und Plattformen beherrschen. Das Linux-System ist eines der von Datenanalysten am häufigsten verwendeten Betriebssysteme. Es bietet viele leistungsstarke und flexible Befehle, die uns bei der Bewältigung verschiedener Datenprobleme helfen können. In diesem Artikel werden Ihnen 9 häufig verwendete Befehle zur Datenanalyse unter Linux-Systemen sowie deren Funktionen und Verwendung vorgestellt. Unabhängig davon, ob Sie Linux-Neuling oder ein Veteran sind, werden diese Befehle Ihre Datenanalyse effizienter und komfortabler machen.

Grundlagen der Linux-Datenanalyse: 9 praktische Befehle

1. Kopf und Schwanz

Beginnen wir zunächst mit der Dateiverarbeitung. Was ist der Inhalt der Datei? Welches Format hat sie? Sie können die Datei mit dem Befehl cat im Terminal anzeigen, aber sie ist offensichtlich nicht für die Verarbeitung von Dateien mit langem Inhalt geeignet.

Geben Sie Kopf und Ende ein, wodurch die angegebene Anzahl von Zeilen in der Datei vollständig angezeigt werden kann. Wenn Sie die Anzahl der Zeilen nicht angeben, werden standardmäßig 10 davon angezeigt.

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

In den letzten drei Zeilen konnte ich das Datum, den Namen des Autors, den Titel und einige andere Informationen finden. Da es jedoch keine Spaltenüberschriften gibt, kenne ich die spezifische Bedeutung der einzelnen Spalten nicht. Schauen Sie sich die spezifischen Überschriften für jede Spalte unten an:

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

Jetzt ist alles ganz klar, wir können das Veröffentlichungsdatum, den Inhaltstyp, den Autor, den Titel, die Anzahl der Einsendungen, zugehörige URLs, Tags für jeden Artikel und die Wortanzahl sehen.

二、wc

Aber was ist, wenn Sie Hunderte oder sogar Tausende von Artikeln analysieren müssen? Hier müssen Sie den Befehl wc verwenden – die Abkürzung für „word count“. wc kann Bytes, Zeichen, Wörter oder Zeilen einer Datei zählen. In diesem Beispiel möchten wir die Anzahl der Zeilen im Artikel wissen.

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

Diese Datei hat insgesamt 93 Zeilen. Wenn man bedenkt, dass die erste Zeile den Dateititel enthält, kann man davon ausgehen, dass es sich bei dieser Datei um eine Liste mit 92 Artikeln handelt.

Drei, grep

Im Folgenden wird eine neue Frage aufgeworfen: Wie viele dieser Artikel beziehen sich auf Sicherheitsthemen? Um das Ziel zu erreichen, gehen wir davon aus, dass in den erforderlichen Artikeln das Wort Sicherheit im Titel, Tag oder an einer anderen Position erwähnt wird. Derzeit kann das Grep-Tool verwendet werden, um Dateien nach bestimmten Zeichen zu durchsuchen oder andere Suchmuster zu implementieren. Dies ist ein äußerst leistungsfähiges Tool, da wir mithilfe regulärer Ausdrücke sogar äußerst präzise Übereinstimmungsmuster erstellen können. Aber hier müssen wir nur eine einfache Zeichenfolge finden.

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 sicherheitsrelevante Artikel. Wenn der Suchumfang spezifischer ist, können wir Pipe verwenden – es kann grep mit dem Befehl wc kombinieren, um herauszufinden, in wie vielen Zeilen Sicherheitsinhalte erwähnt werden.

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

Auf diese Weise extrahiert wc die Ausgabe des grep-Befehls und verwendet sie als Eingabe. Es ist offensichtlich, dass diese Kombination, gepaart mit ein wenig Shell-Scripting, das Terminal sofort in ein leistungsstarkes Datenanalysetool verwandelt.

Vier, tr

In den meisten Analyseszenarien werden wir es mit CSV-Dateien zu tun haben – aber wie konvertieren wir sie in andere Formate für verschiedene Anwendungsmethoden? Hier konvertieren wir sie in HTML-Form für die Datennutzung durch Tabellen. Der Befehl tr kann Ihnen dabei helfen, dieses Ziel zu erreichen. Er kann einen Zeichentyp in einen anderen Typ konvertieren. In ähnlicher Weise können Sie auch den Pipe-Befehl verwenden, um das Andocken von Ausgabe und Eingabe zu erreichen.

Als nächstes versuchen wir ein weiteres mehrteiliges Beispiel, nämlich die Erstellung einer TSV-Datei (tabulatorgetrennte Werte), die nur Artikel enthält, die am 20. Januar veröffentlicht wurden.

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

Zuerst verwenden wir grep für die Datumsabfrage. Wir leiten dieses Ergebnis an den Befehl tr weiter und ersetzen mit diesem alle Kommas durch Tabulatoren (dargestellt als „/t“). Aber wohin geht das Ergebnis? Hier verwenden wir das Zeichen >, um das Ergebnis in eine neue Datei anstatt auf den Bildschirm auszugeben. Auf diese Weise können wir sicherstellen, dass die Datei dqywjan20only.tsv die erwarteten Daten enthält.

$ 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

Das -F „/t“ wird verwendet, um awk mitzuteilen, dass derzeit durch Tabulatoren getrennte Daten verarbeitet werden. Innerhalb der geschweiften Klammern stellen wir awk den Ausführungscode bereit. bedeutet, dass die dritte Zeile ausgegeben wird, während NF bedeutet, dass die letzte Zeile ausgegeben wird (d. h. die Abkürzung für „Anzahl der Felder“) und zur klaren Trennung zwei Leerzeichen zwischen den beiden Ergebnissen eingefügt werden.

Obwohl das hier aufgeführte Beispiel von geringem Umfang ist und die Verwendung der oben genannten Tools nicht zu erfordern scheint, ist es bei einer Erweiterung des Umfangs auf eine Datei mit 93.000 Zeilen offensichtlich schwierig, die Verarbeitung mit einem Tabellenkalkulationsprogramm durchzuführen.

Mit diesen einfachen Tools und kleinen Skripten können Sie die Verwendung von Datenbanktools vermeiden und eine große Menge an Datenstatistiken problemlos erledigen. Egal, ob Sie Profi oder Amateur sind, seine Rolle kann nicht ignoriert werden.

Durch diesen Artikel haben Sie die 9 häufig für die Datenanalyse unter Linux-Systemen verwendeten Befehle sowie deren Funktionen und Verwendung kennengelernt. Diese Befehle umfassen Dateioperationen, Verzeichnisverwaltung, Ausgabeumleitung, Pipes, Links usw. und können Ihnen bei der Durchführung verschiedener Datenverarbeitungen und -analysen unter Linux-Systemen helfen. Natürlich sind diese Befehle nur einige der vielen Befehle, die das Linux-System bereitstellt. Wenn Sie mehr über das Linux-System und die Datenanalyse erfahren möchten, müssen Sie es noch weiter erforschen und üben. Ich hoffe, dass dieser Artikel für Ihr Studium und Ihre Arbeit hilfreich sein kann. Gerne können Sie uns auch andere praktische Linux-Befehle mitteilen, die Sie verwenden oder entdecken.

Das obige ist der detaillierte Inhalt vonGrundlagen der Linux-Datenanalyse: 9 praktische Befehle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen