{"id":29895511,"url":"https://github.com/navid-m/parallax","last_synced_at":"2026-02-07T20:31:28.765Z","repository":{"id":306161158,"uuid":"1025070823","full_name":"navid-m/parallax","owner":"navid-m","description":"Pandas-like, performant dataframes library for data science","archived":false,"fork":false,"pushed_at":"2025-11-11T14:14:51.000Z","size":232,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-11T16:12:38.462Z","etag":null,"topics":["dataframe-library","dataframes","pandas"],"latest_commit_sha":null,"homepage":"https://navid-m.github.io/parallax","language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/navid-m.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-23T17:12:42.000Z","updated_at":"2025-11-11T14:14:56.000Z","dependencies_parsed_at":"2025-07-24T02:08:49.989Z","dependency_job_id":"a275c70a-a1ee-4774-9de8-fe70063a5b96","html_url":"https://github.com/navid-m/parallax","commit_stats":null,"previous_names":["navid-m/parallax"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/navid-m/parallax","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navid-m%2Fparallax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navid-m%2Fparallax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navid-m%2Fparallax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navid-m%2Fparallax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/navid-m","download_url":"https://codeload.github.com/navid-m/parallax/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/navid-m%2Fparallax/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29208161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T20:13:33.422Z","status":"ssl_error","status_checked_at":"2026-02-07T20:13:31.455Z","response_time":63,"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":["dataframe-library","dataframes","pandas"],"created_at":"2025-08-01T07:17:46.850Z","updated_at":"2026-02-07T20:31:28.759Z","avatar_url":"https://github.com/navid-m.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parallax\n\nParallax is a powerful pandas/polars-like DataFrames library.\n\nIt has good functionality for data analysis, transformation, and time series manipulation.\n\n## Usage\n\n```d\nimport parallax.dataframes;\n\nvoid main()\n{\n    auto df = createDataFrame(\n        [\"name\", \"age\", \"salary\"],\n        [\"Alice\", \"Bob\", \"Charlie\"],\n        [25, 30, 35],\n        [50000.0, 60000.0, 70000.0]\n    );\n\n    df.show();\n    auto head = df.head(2);\n    auto selected = df.select(\"name\", \"salary\");\n    auto summary = df.describe();\n    summary.showPivot();\n}\n```\n\nWill output:\n\n```\nDataFrame(3 rows, 3 columns)\n┌────────────┬────────────┬────────────┐\n│ name       │ age        │ salary     │\n├────────────┼────────────┼────────────┤\n│ Alice      │ 25         │ 50000      │\n│ Bob        │ 30         │ 60000      │\n│ Charlie    │ 35         │ 70000      │\n└────────────┴────────────┴────────────┘\nDataFrame(8 rows, 3 columns)\n┌────────────┬────────────┬──────────────┐\n│            │ age        │ salary       │\n├────────────┼────────────┼──────────────┤\n│ count      │ 3          │ 3            │\n│ mean       │ 30.000000  │ 60000.000000 │\n│ std        │ 5.000000   │ 10000.000000 │\n│ min        │ 25.000000  │ 50000.000000 │\n│ 25%        │ 27.500000  │ 55000.000000 │\n│ 50%        │ 30.000000  │ 60000.000000 │\n│ 75%        │ 32.500000  │ 65000.000000 │\n│ max        │ 35.000000  │ 70000.000000 │\n└────────────┴────────────┴──────────────┘\n```\n\n---\n\n## Core Components\n\n| Function             | Description                                     |\n| -------------------- | ----------------------------------------------- |\n| `create(...)`        | Construct a DataFrame from columns              |\n| `opIndex(...)`       | Access column(s) or row(s) via indexing         |\n| `opIndexAssign(...)` | Assign values via index                         |\n| `rows`               | Number of rows                                  |\n| `cols`               | Number of columns                               |\n| `columns()`          | Returns list of column names                    |\n| `shape()`            | Tuple of (rows, cols)                           |\n| `opSlice(...)`       | Slice the DataFrame                             |\n| `head(n)`            | Return the first `n` rows                       |\n| `tail(n)`            | Return the last `n` rows                        |\n| `select(...)`        | Select one or more columns                      |\n| `where(predicate)`   | Filter rows by custom condition                 |\n| `groupBy(col)`       | Group by one or more columns                    |\n| `pivotTable(...)`    | Create a pivot table                            |\n| `melt(...)`          | Reshape from wide to long format                |\n| `meltAllExcept(...)` | Melt all columns except the specified ones      |\n| `meltMultiple(...)`  | Melt multiple sets of columns                   |\n| `unmelt(...)`        | Reshape from long to wide format                |\n| `stack()`            | Stack columns into a single column              |\n| `unstack()`          | Unstack a stacked column back to wide           |\n| `crosstab(...)`      | Cross-tabulate two columns                      |\n| `rolling(window)`    | Rolling window statistics                       |\n| `pctChange()`        | Compute percent change                          |\n| `shift(n)`           | Shift rows forward/backward                     |\n| `ffill()`            | Forward fill missing values                     |\n| `bfill()`            | Backward fill missing values                    |\n| `createLags(n)`      | Create lagged versions of columns               |\n| `describe()`         | Summary statistics                              |\n| `valueCounts(col)`   | Count frequency of values in a column           |\n| `fillna(value)`      | Replace missing values                          |\n| `drop(cols...)`      | Drop specified columns                          |\n| `dropna()`           | Drop rows with missing data                     |\n| `rename(old =\u003e new)` | Rename columns                                  |\n| `apply(fn)`          | Apply a custom function to each row             |\n| `show()`             | Print the DataFrame                             |\n| `showPivot()`        | Display a pivot table nicely                    |\n| `readCsv(path)`      | Read a CSV file into a DataFrame                |\n| `toCsv(path)`        | Write a DataFrame to CSV                        |\n| `copy()`             | Deep copy the DataFrame                         |\n| `merge(other)`       | Merge two DataFrames (default is inner join)    |\n| `sortValues(by)`     | Sort by a specific column                       |\n| `sum()`              | Sum across numeric columns                      |\n| `mean()`             | Mean across numeric columns                     |\n| `max()`              | Max across numeric columns                      |\n| `min()`              | Min across numeric columns                      |\n| `opBinary(...)`      | Binary operations between DataFrames or columns |\n\n---\n\n### Time Series \u0026 Dates\n\n| Function / Feature         | Description                             |\n| -------------------------- | --------------------------------------- |\n| `toDatetime(col)`          | Convert string column to datetime       |\n| `dt(col)`                  | Return datetime column accessor         |\n| `setDatetimeIndex(col)`    | Use datetime column as an index         |\n| `resample(freq)`           | Resample time series by frequency       |\n| `betweenDates(start, end)` | Filter rows between two datetime values |\n| `forYear(year)`            | Filter for a specific year              |\n| `forMonth(month)`          | Filter for a specific month             |\n| `rollup()`                 | Aggregate over time hierarchy           |\n\n#### Datetime Accessors (`dt(...)`)\n\n| Accessor           | Description                   |\n| ------------------ | ----------------------------- |\n| `dt_year()`        | Extract year                  |\n| `dt_month()`       | Extract month                 |\n| `dt_day()`         | Extract day                   |\n| `dt_dayofweek()`   | Extract day of the week (0–6) |\n| `dt_strftime(fmt)` | Format datetime as string     |\n| `dt_floor(freq)`   | Round down to nearest freq    |\n| `dt_ceil(freq)`    | Round up to nearest freq      |\n\n---\n\n## Modules\n\n| Module                | Purpose                                 |\n| --------------------- | --------------------------------------- |\n| `parallax.dataframes` | Core DataFrame class and utilities      |\n| `parallax.columns`    | Column types and column management      |\n| `parallax.csv`        | CSV reader/writer                       |\n| `parallax.values`     | Generic value abstraction (`DataValue`) |\n| `parallax.datetime`   | Datetime parsing and time logic         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavid-m%2Fparallax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnavid-m%2Fparallax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnavid-m%2Fparallax/lists"}