はじめに
この実験では、Linux の uniq
コマンドを調べます。これは、テキスト ファイル内の重複行を識別およびフィルタリングするための強力なツールです。電子商取引会社のデータ アナリストとして、顧客の購入データを分析する任務を担っているシナリオを使います。uniq
コマンドは、このデータを効率的に処理し、顧客行動に関する貴重な洞察を提供します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Linux の uniq
コマンドを調べます。これは、テキスト ファイル内の重複行を識別およびフィルタリングするための強力なツールです。電子商取引会社のデータ アナリストとして、顧客の購入データを分析する任務を担っているシナリオを使います。uniq
コマンドは、このデータを効率的に処理し、顧客行動に関する貴重な洞察を提供します。
まず、生の顧客の購入データを調べましょう。このデータは、顧客が行った日々の購入を表しています。
まず、プロジェクト ディレクトリに移動する必要があります。Linux では、ディレクトリを変更するには cd
コマンドを使用します。チルダ (~
) は、ホーム ディレクトリを表すショートカットです。
cd ~/project
このコマンドにより、現在の作業ディレクトリが /home/labex/project
に変更されます。正しいディレクトリにいるので、顧客データ ファイルの内容を表示しましょう。「連結 (concatenate)」の略である cat
コマンドを使用します。これは一般的にファイルの内容を表示するために使用されます。
cat customer_purchases.txt
以下のような出力が表示されるはずです。
Alice,Electronics
Bob,Books
Charlie,Clothing
Alice,Electronics
David,Home Goods
Bob,Books
Eve,Toys
Charlie,Clothing
Frank,Sports
Alice,Electronics
このファイルには、顧客の名前とその購入内容が含まれており、一部の顧客は複数回購入しています。各行は、顧客の名前の後に購入した商品のカテゴリが続き、コンマで区切られています。
uniq
コマンドを効果的に使用する前に、データをソートする必要があります。uniq
コマンドは隣接する重複行に対して機能するため、ソートすることで重複エントリが隣り合うようになります。
顧客データをアルファベット順にソートするには sort
コマンドを使用します。
sort customer_purchases.txt > sorted_purchases.txt
このコマンドを分解してみましょう。
sort
は、テキストの行をソートするコマンドです。customer_purchases.txt
は、ソート対象の入力ファイルです。>
はリダイレクト演算子です。左側のコマンドの出力を右側のファイルに書き込みます。sorted_purchases.txt
は、ソート済みのデータを保存する新しいファイルです。では、ソート済みファイルの内容を表示しましょう。
cat sorted_purchases.txt
以下のような出力が表示されるはずです。
Alice,Electronics
Alice,Electronics
Alice,Electronics
Bob,Books
Bob,Books
Charlie,Clothing
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports
エントリが現在顧客名でアルファベット順にソートされていることに注目してください。このアルファベット順のソートにより、同じ顧客によるすべての購入がまとめられ、次の手順にとって重要です。
データがソートされたので、uniq
コマンドを使って重複エントリを削除できます。これにより、一意の顧客購入のリストが得られます。
次のコマンドを実行します。
uniq sorted_purchases.txt unique_purchases.txt
このコマンドを分解してみましょう。
uniq
は、ファイル内の繰り返し行をフィルタリングするコマンドです。sorted_purchases.txt
は入力ファイル(ソート済みのデータ)です。unique_purchases.txt
は結果を保存する出力ファイルです。uniq
コマンドは sorted_purchases.txt
からソート済みのデータを読み取り、隣接する重複行を削除し、結果を unique_purchases.txt
という新しいファイルに保存します。
では、新しいファイルの内容を表示しましょう。
cat unique_purchases.txt
以下のような出力が表示されるはずです。
Alice,Electronics
Bob,Books
Charlie,Clothing
David,Home Goods
Eve,Toys
Frank,Sports
これで、一意の顧客購入のリストができました。各顧客は 1 回だけ表示されます。これにより、購入の種類を繰り返しなしに明確に把握できます。
uniq
コマンドをオプションを使うとさらに強力になります。各顧客が何回購入したかをカウントするには -c
オプションを使いましょう。
次のコマンドを実行します。
uniq -c sorted_purchases.txt purchase_counts.txt
このコマンドを分解してみましょう。
uniq
は繰り返し行をフィルタリングするコマンドです。-c
は、出現回数を行頭に付けるように uniq
に指示するオプションです。sorted_purchases.txt
は入力ファイルです。purchase_counts.txt
は結果を保存する出力ファイルです。このコマンドは、各一意の行の出現回数をカウントし、結果を purchase_counts.txt
に保存します。
では、この新しいファイルの内容を表示しましょう。
cat purchase_counts.txt
以下のような出力が表示されるはずです。
3 Alice,Electronics
2 Bob,Books
2 Charlie,Clothing
1 David,Home Goods
1 Eve,Toys
1 Frank,Sports
各行の先頭の数字は、その顧客が購入した回数を示しています。たとえば、Alice は 3 回電子機器を購入し、Frank は 1 回スポーツ用品を購入しました。
データ アナリストとして、再購入顧客を特定することに興味があるかもしれません。uniq
コマンドの -d
オプションを使って、複数回購入した顧客を表す重複行のみを表示することができます。
次のコマンドを実行します。
uniq -d sorted_purchases.txt repeat_customers.txt
このコマンドを分解してみましょう。
uniq
は繰り返し行をフィルタリングするコマンドです。-d
は、uniq
に重複行のみを表示するように指示するオプションです。sorted_purchases.txt
は入力ファイルです。repeat_customers.txt
は結果を保存する出力ファイルです。このコマンドは sorted_purchases.txt
の重複行を特定し、それらを repeat_customers.txt
に保存します。
この新しいファイルの内容を表示しましょう。
cat repeat_customers.txt
以下のような出力が表示されるはずです。
Alice,Electronics
Bob,Books
Charlie,Clothing
これらは複数回購入した顧客です。この情報は、顧客忠誠度プログラムやターゲット マーケティング キャンペーンにとって価値があるかもしれません。
この実験では、Linux の uniq
コマンドとその顧客購入データの分析への応用について学びました。以下のことができるようになりました。
uniq
で使用するデータをまずソートして準備する。uniq
を使用する。uniq -c
を使用する。uniq -d
を使用する。これらのスキルはデータ分析タスクにとって価値があり、大規模なデータセットから効率的に情報を処理して抽出するのに役立ちます。
この実験では扱わなかった追加の uniq
コマンド オプションには、以下があります。
-u
: 一意の行のみを表示する(ちょうど 1 回だけ出現する行)-i
: 行を比較する際に大文字小文字を無視する-f N
: 行を比較する際に最初の N フィールドをスキップする-s N
: 行を比較する際に最初の N 文字をスキップする