A common table interface for julia
Clone or download
Latest commit d7f2a7e Oct 31, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Update doc build to 0.7 Aug 11, 2018
src Enable Temporal.jl integration again Oct 30, 2018
test Enable Temporal.jl integration again Oct 30, 2018
.codecov.yml IterableTables.jl generated files. Mar 28, 2017
.gitignore Add documentation folder Mar 28, 2017
.travis.yml Cap Documenter.jl to 0.19 on Travis Oct 17, 2018
LICENSE.md Update LICENSE Jul 15, 2018
NEWS.md Update NEWS Oct 30, 2018
README.md Update README Aug 11, 2018
REQUIRE Update REQUIRE Aug 11, 2018
appveyor.yml Update CI config Aug 11, 2018



Project Status: Active - The project has reached a stable, usable state and is being actively developed. Build Status Build status Query Query codecov.io


Iterable tables is a generic interface for tabular data.

A large number of packages are compatible with this interface. The following packages can act as a source iterable table:

The following data sinks are currently supported:

The package is tightly integrated with Query.jl: Any query that creates a named tuple in the last @select statement (and doesn't @collect the results into a data structure) is automatically an iterable table data source, and any of the data sources mentioned above can be queried using Query.jl.


This package only works on julia 0.5 and newer. You can add it with:


Getting started

IterableTables makes it easy to conver between different table types in julia. It also makes it possible to use any table type in situations where packages traditionally expected a DataFrame.

For example, if you have a DataFrame

using DataFrames

df = DataFrame(Name=["John", "Sally", "Jim"], Age=[34.,25.,67.], Children=[2,0,3], Income = [120_000, 20_000, 60_000])

you can easily convert this into any of the supported data sink types by simply constructing a new table type and passing your source df:

using DataTables, TypedTables, IterableTables

# Convert to a DataTable
dt = DataTable(df)

# Convert to a TypedTable
tt = Table(df)

These conversions work in pretty much any direction. For example you can convert a TypedTable into a DataFrame:

new_df = DataFrame(tt)

Or you can convert it to a DataTable:

new_dt = DataTable(tt)

The general rule is that you can convert any sink into any source.

IterableTables also adds methods to a number of packages that have traditionally only worked with DataFrames that make these packages work with any data source type defined in IterableTables.

For example, you can run a regression on any of the source types:

using GLM, DataFrames

# Run a regression on a TypedTable

# Run a regression on a DataTable

Or you can plot any of these data sources with Gadfly:

using Gadfly

# Plot a TypedTable
plot(tt, x=:Age, y=:Children, Geom.line)

Or with StatPlots:

using StatPlots

# Plot a DataTable
@df dt plot(:Age, :Children)

@df dt scatter(:Age, :Children, markersize = sqrt.(:Income ./ 1000))

Again, this will work with any of the data sources listed above.