Cách khám phá tập dữ liệu (dataset) với gói Gota trong Go

Cách khám phá tập dữ liệu với gói Gota trong Go

Chia sẻ kiến thức 10/08/2022

Cách tốt nhất để hiểu dữ liệu là tìm hiểu về nó. Gói Gota trong Go sẽ giúp bạn làm điều đó.

 

Để phân tích một tập dữ liệu, trước tiên bạn cần hiểu về dữ liệu đó. Tuy nhiên, đôi khi bạn có thể không có kiến ​​thức cơ bản về tập dữ liệu, khiến bạn không thể khai thác tối đa nó. Là một nhà phân tích dữ liệu, bạn  có thể sử dụng Phân tích dữ liệu khám phá (Exploratory data analysis, hay EDA) để có được kiến ​​thức về tập dữ liệu của mình trước khi phân tích chuyên sâu.

Phân tích dữ liệu khám phá (EDA) xem xét tập dữ liệu để hiểu về nó. Quá trình thực hiện EDA liên quan đến việc truy vấn thông tin về cấu trúc và nội dung của tập dữ liệu.

Cài đặt gói Gota

Gói Gota là gói phổ biến nhất để phân tích dữ liệu trong Go; nó giống như gói Python Pandas nhưng dành cho Go. Gói Gota chứa nhiều phương pháp để phân tích tập dữ liệu và đọc các định dạng JSON, CSV và HTML.

Chạy lệnh này trên terminal trong thư mục nơi bạn đã khởi tạo tệp mô-đun Go:

go get -u github.com/go-gota/gota

Lệnh này sẽ cài đặt Gota trong thư mục cục bộ, sẵn sàng để bạn nhập gói để sử dụng.

Cũng giống như Pandas, Gota hỗ trợ các hoạt động chuỗi (series) và khung dữ liệu (dataframes). Có hai gói phụ trong gói Gota: gói chuỗi và gói khung dữ liệu. Bạn có thể nhập một trong hai hoặc cả hai, tùy thuộc vào nhu cầu của bạn.

import (
    "github.com/go-gota/gota/series"
    "github.com/go-gota/gota/dataframe"
)

Đọc tập dữ liệu bằng gói Gota

Bạn có thể sử dụng bất kỳ tệp CSV nào bạn thích, nhưng các ví dụ sau đây hiển thị kết quả từ tập dữ liệu Kaggle, chứa dữ liệu giá laptop.

Gota cho phép bạn đọc các định dạng tệp CSV, JSON và HTML để tạo khung dữ liệu bằng các phương pháp ReadCSV, ReadJSON và ReadHTML. Đây là cách bạn tải tệp CSV vào đối tượng khung dữ liệu:

file, err := os.Open("/path/to/csv-file.csv")
 
if err != nil {
    fmt.Println("file open error")
}
 
dataFrame := dataframe.ReadCSV(file)
fmt.Println(dataFrame)

Bạn có thể sử dụng phương pháp Open (mở)của gói hệ điều hành (OS) để mở tệp CSV. Phương thức ReadCSV đọc đối tượng tệp và trả về đối tượng khung dữ liệu.

Khi bạn in đối tượng này, đầu ra có định dạng bảng. Bạn có thể thao tác thêm đối tượng khung dữ liệu bằng các phương pháp khác nhau mà Gota cung cấp.

Đối tượng sẽ chỉ in một số cột nếu tập dữ liệu có nhiều hơn một giá trị đã đặt.

Tìm nạp thứ nguyên của tập dữ liệu

Thứ nguyên của khung dữ liệu là số hàng và cột mà nó chứa. Bạn có thể tìm nạp các kích thước này bằng phương pháp Dims của đối tượng khung dữ liệu.

var rows, columns = dataFrame.Dims()

Thay thế một trong các biến bằng dấu gạch dưới để chỉ tìm nạp thứ nguyên khác. Bạn cũng có thể truy vấn số lượng hàng và cột riêng lẻ, sử dụng phương pháp Nrow và Ncol.

var rows = dataFrame.Nrow()
var columns = dataFrame.Ncol()

Tìm nạp các loại dữ liệu của cột

Bạn sẽ cần biết các kiểu dữ liệu tổng hợp trong các cột của tập dữ liệu để phân tích nó. Bạn có thể tìm nạp những thứ này bằng phương pháp Types (loại) của đối tượng khung dữ liệu của bạn:

var types = dataFrame.Types()
fmt.Println(types)

Phương thức Types trả về kết quả chứa các kiểu dữ liệu của cột:

Tìm nạp tên cột

Bạn sẽ cần tên cột để chọn các cột cụ thể cho các hoạt động. Bạn có thể sử dụng phương pháp Names (tên) để tìm nạp chúng.

var columnNames := dataFrame.Names()
fmt.Println(columnNames)

Phương thức Names trả về một phần của tên cột.

Kiểm tra các giá trị bị thiếu

Bạn có thể có một tập dữ liệu chứa các giá trị rỗng hoặc không phải là số. Bạn có thể kiểm tra các giá trị như vậy bằng cách sử dụng phương thức HasNaN và IsNaN của một đối tượng chuỗi:

aCol := dataFrame.Col("display_size")
var hasNull = aCol.HasNaN()
var isNotNumber = aCol.IsNaN()

HasNan kiểm tra xem một cột có chứa các phần tử rỗng hay không. IsNaN trả về một phần boolean đại diện cho việc mỗi giá trị trong cột có phải là một số hay không.

Thực hiện Phân tích Thống kê Mô tả

Phân tích thống kê mô tả giúp bạn hiểu sự phân bố của các cột số. Sử dụng phương pháp Describe (Mô tả), bạn có thể tạo phân tích thống kê mô tả về tập dữ liệu của mình:

description := dataFrame.Describe()
fmt.Println(description)

Phương thức Describe trả về các số liệu như giá trị trung bình, độ lệch chuẩn và giá trị tối đa của các cột trong tập dữ liệu. Nó tóm tắt những điều này trong một định dạng bảng.

Bạn cũng có thể tập trung vào các cột và số liệu bằng cách chọn một cột cụ thể, sau đó truy vấn số liệu bạn muốn. Trước tiên, bạn nên tìm nạp chuỗi đại diện cho một cột cụ thể, sau đó sử dụng các phương thức của nó như sau:

aCol := dataFrame.Col("display_size")
var mean = aCol.Mean()
var median = aCol.Median()
var minimum = aCol.Min()
var standardDeviation = aCol.StdDev()
var maximum = aCol.Max()
var quantiles25 = aCol.Quantile(25.0)

Các phương pháp này phản ánh kết quả từ phân tích thống kê mô tả mà Describe thực hiện.

Tìm nạp các phần tử trong một cột

Một trong những tác vụ cuối cùng bạn sẽ muốn thực hiện là kiểm tra các giá trị trong một cột để có cái nhìn tổng quan chung. Bạn có thể sử dụng phương pháp Records (Bản ghi) để xem các giá trị của một cột.

aCol := dataFrame.Col("brand")
fmt.Println(aCol.Records())

Phương thức này trả về một phần chuỗi chứa các giá trị trong cột đã chọn của bạn:

Xuất khung dữ liệu Gota sang tệp

Nếu bạn sử dụng gói Gota để phân tích dữ liệu đầy đủ, bạn sẽ cần lưu dữ liệu trong tệp. Bạn có thể sử dụng phương thức WriteCSV và WriteJSON của khung dữ liệu để xuất tệp. Các phương thức đưa vào một tệp mà bạn sẽ tạo bằng cách sử dụng phương thức Create (Tạo) của gói hệ điều hành .

Đây là cách bạn có thể xuất khung dữ liệu bằng gói Gota.
dataFrame := dataframe.ReadCSV(file)
outputFile, err := os.Create("output.csv")
 
if err != nil {
    log.Fatal(err)
}
 
err = dataFrame.WriteCSV(outputFile)
 
if err != nil {
    log.Fatalln("There was an error writing the dataframe contents to the file")
}

Biến dataFrame là một đại diện của khung dữ liệu. Khi bạn sử dụng phương thức Create của gói hệ điều hành, nó sẽ tạo một file mới, trống với tên được chỉ định và trả về tệp. Phương thức WriteCSV nhận vào phiên bản tệp và trả về lỗi hoặc nil nếu không có lỗi.

Phân tích dữ liệu khám phá rất quan trọng

Sự hiểu biết về dữ liệu và bộ dữ liệu là điều cần thiết đối với các nhà phân tích dữ liệu và các chuyên gia học máy. Đây là một hoạt động quan trọng trong chu trình làm việc của họ và phân tích dữ liệu khám phá là một trong những kỹ thuật họ sử dụng để làm điều đó.

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/golang-datasets-explore/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại