{"id":37153820,"url":"https://github.com/asidlo/po","last_synced_at":"2026-01-14T18:03:48.745Z","repository":{"id":57552493,"uuid":"148061594","full_name":"asidlo/po","owner":"asidlo","description":"Data science library for manipulating data in Go using the familiar DataFrame and Series constructs from the Python Pandas library.","archived":false,"fork":false,"pushed_at":"2018-09-09T20:14:27.000Z","size":16,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T12:03:23.040Z","etag":null,"topics":["data","dataframe","go","pandas","series"],"latest_commit_sha":null,"homepage":null,"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/asidlo.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}},"created_at":"2018-09-09T20:06:37.000Z","updated_at":"2018-09-25T22:43:18.000Z","dependencies_parsed_at":"2022-09-26T18:50:43.701Z","dependency_job_id":null,"html_url":"https://github.com/asidlo/po","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asidlo/po","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asidlo%2Fpo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asidlo%2Fpo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asidlo%2Fpo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asidlo%2Fpo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asidlo","download_url":"https://codeload.github.com/asidlo/po/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asidlo%2Fpo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28429433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["data","dataframe","go","pandas","series"],"created_at":"2026-01-14T18:03:48.137Z","updated_at":"2026-01-14T18:03:48.730Z","avatar_url":"https://github.com/asidlo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Po - Pandas for Go\n\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/asidlo/po)\n[![godoc](https://godoc.org/github.com/asidlo/po?status.svg)](http://godoc.org/github.com/asidlo/po)\n[![go report](https://goreportcard.com/badge/github.com/asidlo/po)](https://goreportcard.com/report/github.com/asidlo/po)\n\nData science library inspired by the python pandas library and named after the Po from [Kung Fu Panda](https://en.wikipedia.org/wiki/Kung_Fu_Panda). Po allows the user to perform data munging/wrangling techniques by modeling the data as a DataFrame. Much like the dataframe from the Pandas library, the DataFrame construct in Po is comprised of 0..n Series. However, unlike the Pandas implementation, all values in the Po Series are instantiated as strings. The rationale behind this design was to minimize the end user learning curve by mimicing the panda's api as close as possible. Without the aid of overly complicated generics and under the beautifully strict enforcement of types, binding data to strings using go's native slice and map types seemed like the best approach to achieve that emulation. So in accordance with that reasoning, Series in Po are types of slice[string] and DataFrames are types of map[string]string.\n\nDespite this seemingly limited binding, Po still allows users to perform analytical operations on DataFrames and Series. This is achieved by converting the Series in question to other defined types in Po, namely IntSlice and FloatSlice. Series, IntSlice, and FloatSlice all have methods allowing the user to convert from one to the other in order to perform operations on a Series that would apply to the nature of the respective datatype. Future iterations will expand on the these defined types to include types such as boolean, time.Time, map, interface, rune, and possible others.\n\n## Install\n\n```bash\ngo get github.com/asidlo/po\n```\n\n## Examples\n\nDataFrame Example\n\n```go\ns1 := po.Series{\"1\", \"2\", \"3\"}\ns2 := po.Series{\"8\", \"7\", \"6\"}\ndf3 := po.NewDataFrame([]po.Series{s1, s2}, []string{\"a\", \"b\", \"c\"})\nx, y = df3.Dims()\nfmt.Printf(\"Normal DataFrame example: (%d x %d)\\n%s\\n\", x, y, df3)\n```\n\nSeries Example\n\n```go\ns1 := po.Series{\n  \"This\", \"Is\", \"1\", \"Example\", \"Of\", \"A\", \"Series\",\n}\nfmt.Println(s1)\n```\n\nMore examples can be found in the [examples](examples) directory.\n\n## Alternatives\n\n- [github.com/kniren/gota](https://github.com/kniren/gota/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasidlo%2Fpo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasidlo%2Fpo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasidlo%2Fpo/lists"}