主要使用 encoding/csv 来解析 csv 文件。同时简单使用dataframe包更快速地操作CSV文件。
package main
import (
"fmt"
"log"
"os"
"github.com/kniren/gota/dataframe"
)
func main() {
// 打开CSV文件
irisData, err := os.Open("D:/Code/Datasets/iris.csv")
if err != nil {
log.Fatal(err)
}
// 关闭文件
defer irisData.Close()
// 创建一个dataframe
irisDF := dataframe.ReadCSV(irisData)
// 展示数据
fmt.Println(irisDF)
// 创建一个filter,少选Iris-cersicolor类型的花
filter := dataframe.F{
Colname: "species",
Comparator: "==",
Comparando: "Iris-versicolor",
}
versicolorDF1 := irisDF.Filter(filter)
if versicolorDF1.Err != nil {
log.Fatal(versicolorDF1.Err)
}
// 只选择"speal_width"列
versicolorDF2 := irisDF.Filter(filter).Select([]string{
"sepal_width", "species"})
if versicolorDF2.Err != nil {
log.Fatal(versicolorDF2.Err)
}
// 只展示前三条数据
versicolorDF3 := irisDF.Filter(filter).Select([]string{
"spetal_width", "species"}).Subset([]int{
1, 2, 3})
if versicolorDF3.Err != nil {
log.Fatal(versicolorDF3.Err)
}
}