Группировка сотрудников по номеру телефона

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь группировать сотрудников по последней цифре их телефонных номеров и сохранять группы в отдельные CSV-файлы. Этот проект предназначен для того, чтобы помочь вам развить навыки в работе с файлами, обработке данных и управлении CSV-файлами с использованием Python.

👀 Предварительный просмотр

## Вход:
python group.py
ls
ls Groups
## Выход:
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-файлов.

🏆 Достижения

После завершения этого проекта вы сможете:

  • понять, как работать с CSV-файлами в Python;
  • развить навыки в обработке и группировке данных;
  • продемонстрировать способность программно создавать и управлять файлами и папками;
  • применить свои знания Python для решения реальной задачи.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/FileHandlingGroup -.-> python/file_reading_writing("Reading and Writing Files") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/using_packages -.-> lab-302756{{"Группировка сотрудников по номеру телефона"}} python/file_reading_writing -.-> lab-302756{{"Группировка сотрудников по номеру телефона"}} python/file_operations -.-> lab-302756{{"Группировка сотрудников по номеру телефона"}} python/data_collections -.-> lab-302756{{"Группировка сотрудников по номеру телефона"}} python/data_serialization -.-> lab-302756{{"Группировка сотрудников по номеру телефона"}} end

Реализовать логику группировки

В этом шаге вы реализуете логику группировки сотрудников по последней цифре их телефонных номеров и сохраните группы в отдельные CSV-файлы.

  1. Откройте файл group.py в текстовом редакторе.
  2. Добавьте следующий код в функцию group():
import os
import csv

def group():
    """
    Группирует сотрудников по последней цифре их телефонного номера и сохраняет каждую группу в отдельный CSV-файл.

    Считывает данные о сотрудниках из CSV-файла с именем 'roster.csv', группирует их по последней цифре телефонного номера
    и сохраняет каждую группу в отдельный CSV-файл в папке с именем 'Groups'.

    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. Список содержимого папки Groups с помощью команды ls. Вы должны увидеть следующие файлы:
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, чтобы улучшить свои навыки.