[go] CSV 파일의 데이터 그룹화

CSV 파일은 일반적으로 테이블 형식의 데이터를 저장하는 데 사용되는 텍스트 파일 형식입니다. Go 언어를 사용하여 CSV 파일을 읽고 데이터를 그룹화하는 방법을 알아봅시다.

CSV 파일 읽기

먼저, Go의 내장 패키지인 encoding/csv를 사용하여 CSV 파일을 읽어와야 합니다. 아래는 CSV 파일을 읽어와서 데이터를 출력하는 간단한 예제 코드입니다.

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("data.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer file.Close()

	reader := csv.NewReader(file)
	records, err := reader.ReadAll()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	for _, row := range records {
		fmt.Println(row)
	}
}

위 예제는 “data.csv” 파일을 읽어와서 각 레코드를 출력합니다.

데이터 그룹화

CSV 파일에서 데이터를 그룹화하려면 특정 열을 기준으로 그룹화하는 로직을 작성해야 합니다. 이를 위해 Go에서는 map을 사용하여 그룹화된 데이터를 저장할 수 있습니다. 다음 예제는 CSV 파일의 특정 열을 기준으로 데이터를 그룹화하는 방법을 보여줍니다.

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("data.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	defer file.Close()

	reader := csv.NewReader(file)
	records, err := reader.ReadAll()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	groupedData := make(map[string][]string)

	for _, row := range records {
		key := row[0] // 첫 번째 열을 기준으로 그룹화
		groupedData[key] = append(groupedData[key], row[1])
	}

	for key, value := range groupedData {
		fmt.Printf("Key: %s, Values: %v\n", key, value)
	}
}

위 예제는 CSV 파일의 첫 번째 열을 기준으로 데이터를 그룹화하고 그룹화된 데이터를 출력합니다.

결론

Go를 사용하여 CSV 파일을 읽고 데이터를 그룹화하는 방법에 대해 간단히 살펴보았습니다. CSV 파일에서 데이터를 읽는 방법과 데이터를 그룹화하는 방법을 이해했다면 실제 프로젝트에서 유용하게 활용할 수 있을 것입니다.