電話番号で社員をグループ化する

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、社員の電話番号の最終桁に基づいて社員をグループ化し、それぞれの CSV ファイルに保存する方法を学びます。このプロジェクトは、Python を使ったファイル操作、データ処理、CSV ファイル管理のスキルを身につけるのに役立ちます。

👀 プレビュー

## 入力:
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 ファイルの内容を検証する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Python で CSV ファイルを扱う方法を理解する
  • データ処理とグループ化のスキルを身につける
  • プログラムでファイルとフォルダを作成および管理する能力を示す
  • 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 ファイルに保存します。

    'roster.csv' という名前の CSV ファイルから社員データを読み取り、電話番号の最終桁に基づいてグループ化し、
    それぞれのグループを 'Groups' という名前のフォルダ内の個別の CSV ファイルに保存します。

    CSV ファイルは以下の形式でなければなりません。
    - 最初の行はヘッダー行です。
    - 残りの行は社員データを含み、各行は 1 人の社員を表します。

    :return: なし
    """
    ## '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 ファイルを保存します。

グループ化スクリプトを実行する

このステップでは、グループ化された CSV ファイルを生成するために group.py スクリプトを実行します。

  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. 1 つの CSV ファイル(例:Tail_num_0.csv)を開き、最初の行がヘッダーで残りの行が社員情報で構成されていることを確認します。

おめでとうございます!社員の電話番号の最終桁に基づいて社員をグループ化し、それぞれのグループを個別の CSV ファイルに保存するプロジェクトを成功裏に完了しました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。あなたは実験(Lab)をもっと練習することができ、あなたのスキルを向上させることができます。