Complete Examples - C and C++
C API Examples
Basic DataFrame Creation
#include <tablr/tablr.h>
int main(void) {
/* Create dataframe */
TablrDataFrame* df = tablr_dataframe_create();
/* Create data */
int ages[] = {25, 30, 35, 40};
float salaries[] = {50000.0f, 60000.0f, 70000.0f, 80000.0f};
/* Create series */
TablrSeries* age_series = tablr_series_create(ages, 4, TABLR_INT32, TABLR_CPU);
TablrSeries* salary_series = tablr_series_create(salaries, 4, TABLR_FLOAT32, TABLR_CPU);
/* Add columns */
tablr_dataframe_add_column(df, "Age", age_series);
tablr_dataframe_add_column(df, "Salary", salary_series);
/* Print */
tablr_dataframe_print(df);
/* Cleanup */
tablr_dataframe_free(df);
return 0;
}
Filtering Data
#include <tablr/tablr.h>
bool age_filter(size_t row, void* ctx) {
TablrDataFrame* df = (TablrDataFrame*)ctx;
TablrSeries* age_col = tablr_dataframe_get_column(df, "Age");
int* ages = (int*)tablr_series_data(age_col);
return ages[row] >= 30;
}
int main(void) {
TablrDataFrame* df = tablr_read_csv_default("data.csv");
/* Filter rows where age >= 30 */
TablrDataFrame* filtered = tablr_dataframe_filter(df, age_filter, df);
tablr_dataframe_print(filtered);
tablr_dataframe_free(df);
tablr_dataframe_free(filtered);
return 0;
}
Sorting Operations
#include <tablr/tablr.h>
int main(void) {
TablrDataFrame* df = tablr_read_csv_default("data.csv");
/* Sort by age ascending */
TablrDataFrame* sorted = tablr_dataframe_sort(df, "Age", true);
tablr_dataframe_print(sorted);
/* Sort by salary descending */
TablrDataFrame* sorted_desc = tablr_dataframe_sort(df, "Salary", false);
tablr_dataframe_print(sorted_desc);
tablr_dataframe_free(df);
tablr_dataframe_free(sorted);
tablr_dataframe_free(sorted_desc);
return 0;
}
Aggregation
#include <tablr/tablr.h>
int main(void) {
TablrDataFrame* df = tablr_read_csv_default("data.csv");
/* Get descriptive statistics */
TablrDataFrame* stats = tablr_dataframe_describe(df);
tablr_dataframe_print(stats);
/* Calculate mean */
TablrDataFrame* mean = tablr_dataframe_aggregate(df, "Salary", TABLR_AGG_MEAN);
tablr_dataframe_print(mean);
tablr_dataframe_free(df);
tablr_dataframe_free(stats);
tablr_dataframe_free(mean);
return 0;
}
Multi-Device Support
#include <tablr/tablr.h>
int main(void) {
int data[] = {1, 2, 3, 4, 5};
/* Create on CPU */
TablrSeries* cpu_series = tablr_series_create(data, 5, TABLR_INT32, TABLR_CPU);
/* Create on CUDA GPU */
TablrSeries* cuda_series = tablr_series_create(data, 5, TABLR_INT32, TABLR_CUDA);
/* Create on Intel XPU */
TablrSeries* xpu_series = tablr_series_create(data, 5, TABLR_INT32, TABLR_XPU);
/* Create on NPU */
TablrSeries* npu_series = tablr_series_create(data, 5, TABLR_INT32, TABLR_NPU);
/* Create on TPU */
TablrSeries* tpu_series = tablr_series_create(data, 5, TABLR_INT32, TABLR_TPU);
/* Transfer between devices */
TablrSeries* transferred = tablr_series_to_device(cpu_series, TABLR_CUDA);
/* Cleanup */
tablr_series_free(cpu_series);
tablr_series_free(cuda_series);
tablr_series_free(xpu_series);
tablr_series_free(npu_series);
tablr_series_free(tpu_series);
tablr_series_free(transferred);
return 0;
}
C++ API Examples
Basic DataFrame Creation
#include <tablr/tablr.hpp>
#include <vector>
int main() {
/* Create dataframe */
tablr::DataFrame df;
/* Create data */
std::vector<int> ages = {25, 30, 35, 40};
std::vector<float> salaries = {50000.0f, 60000.0f, 70000.0f, 80000.0f};
/* Create series */
tablr::Series age_series(ages);
tablr::Series salary_series(salaries);
/* Add columns */
df.add_column("Age", age_series);
df.add_column("Salary", salary_series);
/* Print */
df.print();
return 0;
}
Reading and Writing CSV
#include <tablr/tablr.hpp>
int main() {
/* Read CSV */
auto df = tablr::DataFrame::read_csv("data.csv");
/* Process data */
auto filtered = df.filter([](size_t row) {
return row > 0;
});
/* Sort */
auto sorted = filtered.sort("Age", true);
/* Write to CSV */
sorted.to_csv("output.csv");
return 0;
}
Filtering with Lambda
#include <tablr/tablr.hpp>
int main() {
auto df = tablr::DataFrame::read_csv("data.csv");
/* Filter with lambda */
auto filtered = df.filter([](size_t row) {
return row % 2 == 0; // Keep even rows
});
filtered.print();
return 0;
}
Grouping and Aggregation
#include <tablr/tablr.hpp>
int main() {
auto df = tablr::DataFrame::read_csv("sales.csv");
/* Group by region */
auto grouped = df.groupby("Region");
/* Get descriptive statistics */
auto stats = df.describe();
stats.print();
return 0;
}
Merging DataFrames
#include <tablr/tablr.hpp>
int main() {
auto employees = tablr::DataFrame::read_csv("employees.csv");
auto departments = tablr::DataFrame::read_csv("departments.csv");
/* Merge on department ID */
auto merged = employees.merge(departments, "DeptID");
merged.print();
return 0;
}
Compilation
C Examples
# With xmake
xmake build
# With gcc
gcc -o myapp myapp.c -ltablr -I/usr/local/include -L/usr/local/lib
# With MSVC
cl myapp.c /I"C:\path\to\include" /link tablr.lib
C++ Examples
# With xmake
xmake build
# With g++
g++ -o myapp myapp.cpp -ltablr -I/usr/local/include -L/usr/local/lib -std=c++17
# With MSVC
cl myapp.cpp /std:c++17 /I"C:\path\to\include" /link tablr.lib