Go用gota来做数据分析:dataframe、series

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙在山东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值