ホームページ  >  記事  >  システムチュートリアル  >  Linux データ分析の要点: 9 つの実践的なコマンド

Linux データ分析の要点: 9 つの実践的なコマンド

WBOY
WBOY転載
2024-02-14 20:18:121188ブラウズ

データ分析は、今日最も人気のあるスキルの 1 つであり、大量のデータから貴重な情報を抽出し、意思決定とイノベーションをサポートするのに役立ちます。ただし、効果的なデータ分析を行うには、関連する理論や手法を習得するだけでなく、いくつかのツールやプラットフォームの使用に習熟する必要があります。 Linux システムは、データ アナリストが一般的に使用するオペレーティング システムの 1 つで、さまざまなデータの問題に対処するのに役立つ強力で柔軟なコマンドが多数用意されています。この記事では、Linux システムでデータ分析によく使用される 9 つのコマンドとその機能と使い方を紹介します。 Linux の初心者でもベテランでも、これらのコマンドを使用すると、データ分析作業がより効率的かつ便利になります。

Linux データ分析の要点: 9 つの実践的なコマンド

1. 頭と尻尾

まず、ファイル処理から始めましょう。ファイルの内容は何ですか? その形式は何ですか? cat コマンドを使用してターミナルにファイルを表示できますが、明らかに長い内容を含むファイルの処理には適していません。

head と tail を入力すると、ファイル内の指定された行数を完全に表示できます。行数を指定しない場合は、デフォルトで 10 行が表示されます。

リーリー

最後の 3 行で、日付、著者名、タイトル、その他の情報を見つけることができました。ただし、列ヘッダーがないため、各列の具体的な意味がわかりません。以下の各コラムの具体的なタイトルを確認してください:

リーリー

これで、すべてが非常に明確になり、発行日、コンテンツ タイプ、著者、タイトル、投稿数、関連 URL、各記事のタグ、単語数が表示されます。

2.トイレ

しかし、何百、あるいは何千もの記事を分析する必要がある場合はどうすればよいでしょうか? ここでは、「word count」の略語である wc コマンドを使用する必要があります。 wc は、ファイルのバイト、文字、単語、または行をカウントできます。この例では、記事の行数を知りたいと考えています。

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

このファイルには合計 93 行があり、最初の行にファイルのタイトルが含まれていることから、このファイルは 92 件の記事のリストであると推測できます。

3. grep

以下に新しい質問が提起されています: これらの記事のうち、セキュリティに関するトピックに関連する記事はいくつありますか? 目標を達成するには、必須の記事のタイトル、タグ、またはその他の場所でセキュリティという単語が言及されていると想定します。現時点では、grep ツールを使用して、特定の文字でファイルを検索したり、他の検索パターンを実装したりできます。これは、正規表現を使用して非常に正確な一致パターンを作成することもできるため、非常に強力なツールです。ただし、ここでは単純な文字列を見つけるだけで済みます。

リーリー

4 セキュリティ関連の記事。検索範囲がより具体的な場合は、パイプを使用できます。これにより、 grep と wc コマンドを組み合わせて、セキュリティ コンテンツに言及している行が何行あるかを確認できます。

リーリー

このようにして、wc は grep コマンドの出力を抽出し、それを入力として使用します。この組み合わせと、少しのシェル スクリプトを組み合わせることで、ターミナルが即座に強力なデータ分析ツールに変わることは明らかです。

4、tr

ほとんどの分析シナリオでは、CSV ファイルを使用しますが、さまざまなアプリケーション方法を実現するために、CSV ファイルを他の形式に変換するにはどうすればよいでしょうか? ここでは、テーブルを使用してデータを使用するために、CSV ファイルを HTML 形式に変換します。 tr コマンドは、あるタイプの文字を別のタイプに変換できるので、この目標を達成するのに役立ちます。同様に、パイプ コマンドを使用して出力/入力のドッキングを実現することもできます。

次に、別のマルチパートの例を試してみましょう。これは、1 月 20 日に公開された記事のみを含む TSV (タブ区切り値) ファイルを作成することです。

リーリー

まず、日付クエリに grep を使用します。この結果を tr コマンドにパイプし、後者を使用してすべてのカンマをタブ (「/t」として表します) に置き換えます。しかし、結果はどこに行くのでしょうか? ここでは、> 文字を使用して、結果を画面ではなく新しいファイルに出力します。このようにして、dqywjan20only.tsv ファイルに予期したデータが含まれていることを確認できます。

$ 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. クシャル・ダス 690
  3. D ルース・バブーセット 218
  4. ジェイソン・ベイカー 214
  5. トレイシー・ミランダ 1007

-F "/t" は、タブで区切られたデータを現在処理していることを awk に伝えるために使用されます。中括弧内に awk に実行コードを指定します。 は 3 行目を出力することを意味し、NF は最後の行 (つまり、「フィールド数」の省略形) を出力し、間に 2 つのスペースを追加することを意味します。 2 つの結果。分割を明確にします。

ここに挙げた例は小さいため、上記のツールを使用する必要はないようですが、範囲が 93,000 行を含むファイルに拡張されると、スプレッドシート プログラムを使用して処理するのは明らかに困難になります。

これらのシンプルなツールと小さなスクリプトを使用すると、データベース ツールの使用を回避し、大量のデータ統計作業を簡単に完了できます。プロでもアマチュアでも、その役割は無視できません。

この記事では、Linux システムでのデータ分析によく使用される 9 つのコマンドとその機能と使用法について学びました。これらのコマンドは、ファイル操作、ディレクトリ管理、出力リダイレクト、パイプ、リンクなどをカバーしており、Linux システムでのさまざまなデータ処理と分析の実行に役立ちます。もちろん、これらのコマンドは、Linux システムが提供する多くのコマンドの一部にすぎません。Linux システムとデータ分析についてさらに詳しく知りたい場合は、引き続き調査と練習を続ける必要があります。この記事があなたの学習や仕事に役立つことを願っています。また、あなたが使用したり発見した他の実用的な Linux コマンドを共有することも歓迎します。

以上がLinux データ分析の要点: 9 つの実践的なコマンドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。