[swift] - Swift Charts와 교육 데이터 분석

소개

Swift Charts는 iOS 개발자들을 위한 데이터 시각화 라이브러리입니다. 이 라이브러리를 사용하면 간단하고 멋진 차트를 만들 수 있습니다. 이번 블로그 포스트에서는 Swift Charts를 사용하여 교육 데이터를 분석하고 시각화하는 방법에 대해 알아보겠습니다.

데이터 수집

먼저, 교육 데이터를 수집해야합니다. 이 예제에서는 학생들의 성적 데이터를 사용합니다. 데이터는 CSV 파일로 제공되며, Swift에서 파일을 읽고 처리하는 방법을 알아야합니다.

import Foundation

if let path = Bundle.main.path(forResource: "data", ofType: "csv") {
    do {
        let data = try String(contentsOfFile: path, encoding: .utf8)
        let rows = data.components(separatedBy: "\n")
        for row in rows {
            let columns = row.components(separatedBy: ",")
            
            let name = columns[0]
            let grade = Int(columns[1])
            
            // TODO: 데이터 처리
        }
    } catch {
        print("Error reading file:", error)
    }
} else {
    print("File not found")
}

데이터 분석

데이터 분석을 위해 여러 가지 작업을 할 수 있습니다. 예를 들어, 학생들의 성적을 평균내어 각 학년의 전체 평균 성적을 구할 수 있습니다. 또는 학년별로 최고 성적을 찾을 수도 있습니다.

var totalGrade = 0
 
var maxGradePerYear = [Int:Int]()
 
for row in rows {
    let columns = row.components(separatedBy: ",")
            
    let name = columns[0]
    let grade = Int(columns[1])
    let year = Int(columns[2])
            
    totalGrade += grade
            
    if let maxGrade = maxGradePerYear[year] {
        maxGradePerYear[year] = max(grade, maxGrade)
    } else {
        maxGradePerYear[year] = grade
    }
}

let averageGrade = Double(totalGrade) / Double(rows.count)

print("전체 평균 성적:", averageGrade)
print("학년별 최고 성적:", maxGradePerYear)

데이터 시각화

이제 데이터를 시각화해보겠습니다. Swift Charts를 사용하여 막대 그래프와 선 그래프를 그릴 수 있습니다.

import Charts

// 막대 그래프
let barChart = BarChartView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
var dataEntries: [BarChartDataEntry] = []
for (year, grade) in maxGradePerYear {
    let dataEntry = BarChartDataEntry(x: Double(year), y: Double(grade))
    dataEntries.append(dataEntry)
}
let dataSet = BarChartDataSet(entries: dataEntries, label: "Max Grade")
let data = BarChartData(dataSet: dataSet)
barChart.data = data
barChart.xAxis.valueFormatter = DefaultAxisValueFormatter(block: { (index, axis) -> String in
    return String(Int(index))
})
barChart.xAxis.granularity = 1
barChart.notifyDataSetChanged()

// 선 그래프
let lineChart = LineChartView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
var lineChartDataEntries: [ChartDataEntry] = []
for (index, grade) in gradePerYear.enumerated() {
    let lineChartDataEntry = ChartDataEntry(x: Double(index), y: grade)
    lineChartDataEntries.append(lineChartDataEntry)
}
let lineDataSet = LineChartDataSet(entries: lineChartDataEntries, label: "Average Grade")
let lineData = LineChartData(dataSets: [lineDataSet])
lineChart.data = lineData
lineChart.xAxis.valueFormatter = IndexAxisValueFormatter(values: ["1학년", "2학년", "3학년"])
lineChart.xAxis.granularity = 1
lineChart.notifyDataSetChanged()

결론

이렇게 Swift Charts를 사용하여 교육 데이터를 분석하고 시각화할 수 있습니다. 데이터 시각화는 데이터를 이해하고 결과를 보여주는 데 매우 유용합니다. Swift Charts는 iOS 개발자들에게 훌륭한 도구입니다.

참조: https://github.com/danielgindi/Charts