{"id":37178521,"url":"https://github.com/caerbannogwhite/aargh","last_synced_at":"2026-01-14T20:48:21.716Z","repository":{"id":201249773,"uuid":"706900193","full_name":"caerbannogwhite/aargh","owner":"caerbannogwhite","description":"A library that helps you out of data nightmares in Go. 🧙‍♂️","archived":false,"fork":false,"pushed_at":"2025-06-30T20:39:29.000Z","size":35362,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-30T21:34:02.774Z","etag":null,"topics":["csv","data","data-science","data-wrangling","dataframe","go","golang","html","json","linq","statistics","stats","xlsx","xpt"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caerbannogwhite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-18T20:51:22.000Z","updated_at":"2025-06-30T20:38:55.000Z","dependencies_parsed_at":"2025-06-01T23:25:25.820Z","dependency_job_id":"7fa38985-a78b-4bf9-9f0f-9aa0bbcf0041","html_url":"https://github.com/caerbannogwhite/aargh","commit_stats":null,"previous_names":["caerbannogwhite/gandalff","caerbannogwhite/aargh"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/caerbannogwhite/aargh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Faargh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Faargh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Faargh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Faargh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caerbannogwhite","download_url":"https://codeload.github.com/caerbannogwhite/aargh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caerbannogwhite%2Faargh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","data","data-science","data-wrangling","dataframe","go","golang","html","json","linq","statistics","stats","xlsx","xpt"],"created_at":"2026-01-14T20:48:20.948Z","updated_at":"2026-01-14T20:48:21.704Z","avatar_url":"https://github.com/caerbannogwhite.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Aargh 🧙‍♂️\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/caerbannogwhite/aargh.svg)](https://pkg.go.dev/github.com/caerbannogwhite/aargh)\n\n### What is it?\n\nAargh is a library for data wrangling in Go.\nThe goal is to provide a simple and efficient API for data manipulation in Go,\nsimilar to Pandas or Polars in Python, and Dplyr in R.\nIt supports nullable types: null data is optimized for memory usage.\n\nAargh is a work in progress, and the API is not stable yet.\nThe DataFrame package is still being developed.\n\nHowever, it already supports the following formats:\n\n- CSV\n- XPT (SAS)\n- XLSX\n- HTML\n- Markdown\n\n### Examples\n\n```go\npackage main\n\nimport (\n\t\"strings\"\n\n\t\"github.com/caerbannogwhite/aargh\"\n\t\"github.com/caerbannogwhite/aargh/dataframe\"\n)\n\nfunc main() {\n\tdata1 := `\nname,age,weight,junior,department,salary band\nAlice C,29,75.0,F,HR,4\nJohn Doe,30,80.5,true,IT,2\nBob,31,85.0,F,IT,4\nJane H,25,60.0,false,IT,4\nMary,28,70.0,false,IT,3\nOliver,32,90.0,true,HR,1\nUrsula,27,65.0,f,Business,4\nCharlie,33,60.0,t,Business,2\nMegan,26,55.0,F,IT,3`\n\n\tdataframe.NewBaseDataFrame(aargh.NewContext()).\n\t\tFromCsv().\n\t\tSetReader(strings.NewReader(data1)).\n\t\tRead().\n\t\tSelect(\"department\", \"age\", \"weight\", \"junior\").\n\t\tGroupBy(\"department\").\n\t\tAgg(dataframe.Min(\"age\"), dataframe.Max(\"weight\"), dataframe.Mean(\"junior\"), dataframe.Count()).\n\t\tRun().\n\t\tPPrint(dataframe.NewPPrintParams().SetUseLipGloss(true))\n}\n\n//   BaseDataFrame: 3 rows, 5 columns\n// ╭────────────┬──────────┬─────────────┬──────────────┬───────╮\n// │ department │ min(age) │ max(weight) │ mean(junior) │ n     │\n// ├────────────┼──────────┼─────────────┼──────────────┼───────┤\n// │ String     │ Float64  │ Float64     │ Float64      │ Int64 │\n// ├────────────┼──────────┼─────────────┼──────────────┼───────┤\n// │ HR         │    29.00 │       90.00 │       0.5000 │ 2.000 │\n// │ IT         │    25.00 │       85.00 │       0.2000 │ 5.000 │\n// │ Business   │    27.00 │       65.00 │       0.5000 │ 2.000 │\n// ╰────────────┴──────────┴─────────────┴──────────────┴───────╯\n```\n\n### Supported data types\n\nThe data types not checked are not yet supported, but might be in the future.\n\n- [x] Bool\n- [ ] Bool (memory optimized, not fully implemented yet)\n- [ ] Int16\n- [x] Int\n- [x] Int64\n- [ ] Float32\n- [x] Float64\n- [ ] Complex64\n- [ ] Complex128\n- [x] String\n- [x] Time\n- [x] Duration\n\n### Supported operations for Series\n\n- [x] Filter\n\n  - [x] filter by bool slice\n  - [x] filter by int slice\n  - [x] filter by bool series\n  - [x] filter by int series\n\n- [x] Group\n\n  - [x] Group (with nulls)\n  - [x] SubGroup (with nulls)\n\n- [x] Map\n- [x] Sort\n\n  - [x] Sort (with nulls)\n  - [x] SortRev (with nulls)\n\n- [x] Take\n\n### Supported operations for DataFrame\n\n- [x] Agg\n- [x] Filter\n- [x] GroupBy\n- [ ] Join\n\n  - [x] Inner\n  - [x] Left\n  - [x] Right\n  - [x] Outer\n  - [ ] Inner with nulls\n  - [ ] Left with nulls\n  - [ ] Right with nulls\n  - [ ] Outer with nulls\n\n- [ ] Map\n- [x] OrderBy\n- [x] Select\n- [x] Take\n- [ ] Pivot\n- [ ] Stack/Append\n\n### Supported stats functions\n\n- [x] Count\n- [x] Sum\n- [x] Mean\n- [ ] Median\n- [x] Min\n- [x] Max\n- [x] StdDev\n- [ ] Variance\n- [ ] Quantile\n\n### Dependencies\n\nBuilt with:\n\n- [xslx](https://github.com/tealeg/xlsx/tree/master)\n- [lipgloss](https://github.com/charmbracelet/lipgloss)\n\n### TODO\n\n- [ ] Improve filtering interface.\n- [ ] Improve dataframe PrettyPrint: add parameters, optimize data display, use lipgloss.\n- [ ] Implement string factors.\n- [ ] Times: set time format.\n- [ ] Implement `Set(i []int, v []any) Series`.\n- [ ] Add `Slice(i []int) Series` (using filter?).\n- [ ] Implement memory optimized Bool series with uint64.\n- [ ] Use uint64 for null mask.\n- [ ] Optimize XPT reader/writer with float32.\n- [ ] Add url resolver to each reader.\n- [ ] Add format option to each writer.\n- [ ] JSON reader by records.\n- [ ] Implement chunked series.\n- [ ] Implement Parquet reader and writer.\n- [ ] Implement SPSS reader and writer.\n- [ ] Implement SAS7BDAT reader and writer (https://cran.r-project.org/web/packages/sas7bdat/vignettes/sas7bdat.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaerbannogwhite%2Faargh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaerbannogwhite%2Faargh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaerbannogwhite%2Faargh/lists"}