Gota类似Python的Pandas,是数据分析库。
package main
import (
"fmt"
"github.com/go-gota/gota/dataframe"
"github.com/go-gota/gota/series"
"strings"
)
func main() {
// 行
s := series.New([]string{"a", "b", "c"}, series.String, "col")
fmt.Println(s.Len())
// 表
// 读取JSON字符串
jsonString := `[
{
"Name": "刘备",
"Age": 44,
"Colour": "Red",
"Height(ft)": 6.7
},
{
"Name": "关羽",
"Age": 40,
"Colour": "Blue",
"Height(ft)": 5.7
}
]`
// file, err := os.Open("example.json") // 读取JSON文件
// dataframe.ReadJSON(file)
dataRead := dataframe.ReadJSON(strings.NewReader(jsonString))
fmt.Println(dataRead)
// 读取CSV字符串
csvString := `
Name,Age,Colour,Height(ft)
刘备,44,Red,6.7
关羽,40,Blue,5.7
张飞,40,Blue,5.7
曹操,40,Blue,5.7`
// file, err := os.Open("example.csv") // 读取CSV文件
// defer file.Close()
// dataframe.ReadCSV(file)
dataFrame := dataframe.ReadCSV(strings.NewReader(csvString))
fmt.Println(dataFrame)
// 选择行:第1行和第3行
rows := dataFrame.Subset([]int{0, 2})
fmt.Println(rows)
// 选择列:第1列、第3列
cols := dataFrame.Select([]int{0, 2})
fmt.Println(cols)
// 更新行:第1、2、3行
dataFrameSet := dataframe.LoadRecords([][]string{
{"Name", "Age", "Colour", "Height(ft)"},
{"赵云", "101", "Color", "3.1"},
{"黄忠", "102", "Color", "3.2"},
{"魏延", "103", "Color", "3.3"},
})
dataFrame2 := dataFrame.Set([]int{0, 1, 2}, dataFrameSet)
fmt.Println(dataFrame2)
// 过滤
filter := dataFrame.Filter(dataframe.F{Colname: "Name", Comparator: series.Eq, Comparando: "曹操"})
fmt.Println(filter)
sort1 := dataFrame.Arrange(dataframe.Sort("Age"))
// 逆序
sort2 := dataFrame.Arrange(dataframe.Order{Colname: "Age", Reverse: true})
fmt.Println(sort1)
fmt.Println(sort2)
// 分组聚合
group := dataFrame.GroupBy("Colour").Aggregation([]dataframe.AggregationType{dataframe.Aggregation_MAX}, []string{"Age"})
fmt.Println(group)
}
参考:
https://pkg.go.dev/github.com/go-gota/gota
https://github.com/go-gota/gota
https://www.magedu.com/92054.html