전화번호로 직원 그룹화

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 전화번호의 마지막 숫자를 기준으로 직원을 그룹화하고, 그룹을 별도의 CSV 파일로 저장하는 방법을 배우게 됩니다. 이 프로젝트는 Python 을 사용하여 파일 처리, 데이터 처리 및 CSV 파일 관리에 대한 기술을 개발하는 데 도움이 되도록 설계되었습니다.

👀 미리보기

## Input:
python group.py
ls
ls Groups
## Output:
Groups roster.csv group.py
Tail_num_0.csv  Tail_num_2.csv  Tail_num_4.csv  Tail_num_6.csv  Tail_num_8.csv
Tail_num_1.csv  Tail_num_3.csv  Tail_num_5.csv  Tail_num_7.csv  Tail_num_9.csv

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 프로젝트 환경을 설정하고 필요한 파일을 준비하는 방법
  • 전화번호의 마지막 숫자를 기준으로 직원을 그룹화하는 로직을 구현하는 방법
  • 그룹화된 데이터를 별도의 CSV 파일로 저장하는 방법
  • 생성된 CSV 파일의 내용을 확인하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Python 에서 CSV 파일 작업 방식을 이해합니다.
  • 데이터 처리 및 그룹화 기술을 개발합니다.
  • 프로그래밍 방식으로 파일 및 폴더를 생성하고 관리하는 능력을 보여줍니다.
  • 실제 문제에 Python 프로그래밍 지식을 적용합니다.

그룹화 로직 구현

이 단계에서는 전화번호의 마지막 숫자를 기준으로 직원을 그룹화하고, 그룹을 별도의 CSV 파일로 저장하는 로직을 구현합니다.

  1. 텍스트 편집기에서 group.py 파일을 엽니다.
  2. 다음 코드를 group() 함수에 추가합니다:
import os
import csv

def group():
    """
    전화번호의 마지막 숫자를 기준으로 직원을 그룹화하고 각 그룹을 별도의 CSV 파일로 저장합니다.

    'roster.csv'라는 CSV 파일에서 직원 데이터를 읽어, 전화번호의 마지막 숫자를 기준으로 그룹화하고,
    각 그룹을 'Groups'라는 폴더에 별도의 CSV 파일로 저장합니다.

    CSV 파일은 다음과 같은 형식을 가져야 합니다:
    - 첫 번째 행은 헤더 행입니다.
    - 나머지 행은 직원 데이터를 포함하며, 각 행은 단일 직원을 나타냅니다.

    :return: None
    """
    ## 'Groups' 폴더가 없으면 생성합니다.
    if not os.path.exists("Groups"):
        os.makedirs("Groups")

    ## 'roster.csv' 파일을 읽기 모드로 엽니다.
    with open("roster.csv", "r") as file:
        reader = csv.reader(file)
        header = next(reader)  ## CSV 파일의 헤더 행을 읽습니다.

        ## 전화번호의 마지막 숫자를 기준으로 직원 그룹을 저장할 딕셔너리를 생성합니다.
        groups = {}
        for row in reader:
            phone_number = row[1]  ## 현재 행에서 전화번호를 가져옵니다.
            last_digit = int(phone_number[-1])  ## 전화번호의 마지막 숫자를 정수로 추출합니다.

            ## 마지막 숫자를 기준으로 해당 그룹에 현재 행을 추가합니다.
            groups.setdefault(last_digit, []).append(row)

    ## 그룹을 반복하고 각 그룹을 별도의 CSV 파일로 저장합니다.
    for tail_num, employees in groups.items():
        filename = f"Groups/Tail_num_{tail_num}.csv"  ## 현재 그룹의 파일 이름을 생성합니다.
        with open(filename, "w", newline="") as file:
            writer = csv.writer(file)
            writer.writerow(header)  ## CSV 파일에 헤더 행을 씁니다.
            writer.writerows(employees)  ## CSV 파일에 직원 데이터를 씁니다.

if __name__ == "__main__":
    group()  ## 그룹화 및 저장 프로세스를 실행하기 위해 'group' 함수를 호출합니다.
  1. group.py 파일을 저장합니다.

그룹화 스크립트 실행

이 단계에서는 group.py 스크립트를 실행하여 그룹화된 CSV 파일을 생성합니다.

  1. 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.
  2. 다음 명령을 실행하여 group.py 스크립트를 실행합니다:
python group.py
  1. 스크립트 실행이 완료된 후, Groups 폴더와 그 안에 생성된 CSV 파일이 생성되었는지 확인합니다.

그룹화된 CSV 파일 검증

이 단계에서는 생성된 CSV 파일의 내용을 확인합니다.

  1. 터미널을 사용하여 Groups 폴더로 이동합니다.
  2. ls 명령을 사용하여 Groups 폴더의 내용을 나열합니다. 다음과 같은 파일이 표시되어야 합니다:
Tail_num_0.csv  Tail_num_2.csv  Tail_num_4.csv  Tail_num_6.csv  Tail_num_8.csv
Tail_num_1.csv  Tail_num_3.csv  Tail_num_5.csv  Tail_num_7.csv  Tail_num_9.csv
  1. CSV 파일 중 하나 (예: Tail_num_0.csv) 를 열고, 파일에 직원 데이터가 포함되어 있는지, 첫 번째 행이 헤더이고 나머지 행이 직원 정보를 포함하는지 확인합니다.

축하합니다! 전화번호의 마지막 숫자를 기준으로 직원을 그룹화하고 그룹을 별도의 CSV 파일로 저장하는 프로젝트를 성공적으로 완료했습니다.

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습