Golang与Python Dataframes数据处理对比
Golang与Python Dataframes数据处理对比 你好,
我想在Go中存储一种本质上类似网格格式的数据,类似于你在Excel电子表格中看到的那种。
Python有pandas dataframe。Go语言中是否有类似且稳定的库呢?
谢谢,
4 回复
更多关于Golang与Python Dataframes数据处理对比的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,处理类似pandas dataframe的网格数据,推荐使用Gota库。它提供了DataFrame和Series类型,支持数据操作、过滤、聚合等功能,稳定性较好。
示例代码:
package main
import (
"fmt"
"github.com/go-gota/gota/dataframe"
"github.com/go-gota/gota/series"
)
func main() {
// 创建DataFrame
df := dataframe.New(
series.New([]string{"Alice", "Bob", "Charlie"}, series.String, "Name"),
series.New([]int{25, 30, 35}, series.Int, "Age"),
series.New([]float64{50000.0, 60000.0, 70000.0}, series.Float, "Salary"),
)
// 显示DataFrame
fmt.Println(df)
// 过滤数据
filtered := df.Filter(
dataframe.F{Colname: "Age", Comparator: series.Greater, Comparando: 30},
)
fmt.Println("\nAge > 30:")
fmt.Println(filtered)
// 选择列
selected := df.Select([]string{"Name", "Salary"})
fmt.Println("\nSelected columns:")
fmt.Println(selected)
// 聚合操作
meanAge := df.Col("Age").Mean()
fmt.Printf("\nMean Age: %.2f\n", meanAge)
}
另一个选择是qframe库,它提供类似pandas的API且支持惰性求值:
package main
import (
"fmt"
"github.com/tobgu/qframe"
)
func main() {
qf := qframe.New(
map[string]interface{}{
"Name": []string{"Alice", "Bob", "Charlie"},
"Age": []int{25, 30, 35},
"Salary": []float64{50000, 60000, 70000},
},
)
// 过滤和选择
result := qf.Filter(qframe.Filter{Column: "Age", Comparator: ">", Arg: 30}).
Select("Name", "Salary")
fmt.Println(result)
}
对于大型数据集处理,可以考虑dataframe-go库:
package main
import (
"fmt"
"github.com/rocketlaunchr/dataframe-go"
)
func main() {
s1 := dataframe.NewSeriesInt64("Age", nil, 25, 30, 35)
s2 := dataframe.NewSeriesString("Name", nil, "Alice", "Bob", "Charlie")
df := dataframe.NewDataFrame(s1, s2)
// 迭代数据
df.Lock()
for row := range df.ValuesIterator(dataframe.ValuesOptions{}) {
fmt.Println(row)
}
df.Unlock()
}
这些库都提供了DataFrame的基本操作,但相比pandas功能更精简。Gota的API最接近pandas,qframe在性能优化方面较好,dataframe-go则提供了更底层的控制。根据具体需求选择合适的库即可。

