A DataFrame library for Go with multi-format support.
omniframe provides a pandas/Polars-inspired DataFrame implementation for Go, with a focus on:
- 📊 Multi-format export: XLSX, CSV, JSON, Parquet, Arrow (planned)
- 🗂️ Columnar storage: Efficient memory layout for analytics
- 🔒 Type-safe columns: Strong typing with automatic inference
- ⚡ Expression system: Polars-inspired operations (planned)
go get github.com/plexusone/omniframepackage main
import "github.com/plexusone/omniframe"
func main() {
df, _ := omniframe.FromColumns("Users", map[string]any{
"name": []string{"Alice", "Bob", "Carol"},
"age": []int64{30, 25, 35},
"salary": []float64{75000.50, 65000.25, 85000.75},
})
// Set Excel formatting
df.SetFormat("salary", omniframe.FormatCurrency)
df.SetColumnWidth("name", 20)
df.WriteXLSX("users.xlsx")
}fs := omniframe.NewFrameSet("Q1 Report")
fs.AddFrame(users)
fs.AddFrame(orders)
fs.AddFrame(summary)
fs.WriteXLSX("report.xlsx")TypeString- String valuesTypeInt64- Integer valuesTypeFloat64- Floating-point valuesTypeBool- Boolean valuesTypeTime- time.Time valuesTypeAny- Mixed types
FormatGeneral- DefaultFormatText- Text (@)FormatNumber- #,##0FormatNumber2- #,##0.00FormatPercent- 0%FormatPercent2- 0.00%FormatCurrency- $#,##0.00FormatDate- yyyy-mm-ddFormatDateTime- yyyy-mm-dd hh:mm:ssFormatTime- hh:mm:ss
Current implementation (Phase 1) focuses on XLSX export. See PRD.md for the full roadmap including:
- Phase 2: Core DataFrame Operations
- Phase 3: Expression System
- Phase 4: Lazy Execution
- Phase 5: Multi-Format Support
- Phase 6: Query Optimizer
MIT