소개
이 실습에서는 텍스트 파일에서 중복된 행을 식별하고 필터링하는 강력한 도구인 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 명령어를 사용하여 중복 항목을 제거할 수 있습니다. 이를 통해 고유한 고객 구매 목록을 얻게 됩니다.
다음 명령어를 실행하세요:
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
이제 각 고객이 한 번씩만 나타나는 고유한 구매 목록을 갖게 되었습니다. 중복 없이 어떤 종류의 구매가 이루어졌는지 명확하게 파악할 수 있습니다.
uniq -c 로 구매 횟수 계산하기
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 는 가전제품 (Electronics) 을 3 번 구매했고, Frank 는 스포츠 용품 (Sports) 을 1 번 구매했음을 알 수 있습니다.
uniq -d 로 재방문 고객 찾기
데이터 분석가로서 재방문 고객을 식별하는 것은 매우 중요합니다. 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: 고유한 행 (딱 한 번만 나타나는 행) 만 표시-i: 행 비교 시 대소문자 무시-f N: 비교 시 처음 N 개의 필드를 건너뜀-s N: 비교 시 처음 N 개의 문자를 건너뜀



