AutoPandas

We're under maintenance. Please check back later.







Input(s)




Output



What is AutoPandas?


AutoPandas is a program synthesis engine for the Pandas python library. It adopts the programming-by-example approach in that users specify intent using input-output examples which are then used to synthesize a program that correctly produces the desired output given the input. This website serves as an interactive interface to the core engine.

Getting Started




I/O Example

We currently allow you to specify one input-output example. Inputs can be added by clicking the "Add Input" button. The primary input format is code, which accepts arbitary Python, however we provide a preview for the common data-structures such as Pandas DataFrames that allow visual editing via the Preview tab. Changes made in the preview, when saved, are reflected in the code.

Writing Code

The code-based input boxes accept Jupyter-style snippets i.e. the snippet can be a sequence of statements such that the last statement is an expression. An example of such a snippet is provided below. Try copy-pasting it into one of the code-boxes on the left and see the preview!

df = pd.DataFrame([[1,2], [3,4]])
df.columns = ['a', 'b']
df

Synthesized Programs



What do you support?

Currently we synthesize sequences of function calls (of a maximum length three) where functions are one of ~120 Pandas DataFrame functions, a list of which is available here. We currently do not synthesize conditionals or lambda expressions such as the ones used with df.loc. However, one can provide such expressions as an additional input, and AutoPandas can figure out the right arguments to pass to such functions.

How long does AutoPandas take to find a solution?

AutoPandas outputs solutions as soon as it finds them. The first one is usually quick (< 10 seconds). Currently, we timeout our system after 30 seconds per request, and output all the solutions we find. We plan to increase this timeout as we add more compute.
Can't find your question? Send us your queries here!

We greatly value your feedback!
Feel free to reach out to us with constructive criticism as well as any ideas you may have to improve the service. If you would like us to respond to a query, please leave your email in the feedback. Thank you!
Remaining characters: 500

df.T
df.__getitem__
df.abs
df.add
df.add_prefix
df.add_suffix
df.align
df.all
df.any
df.apply
df.as_matrix
df.astype
df.at_getitem
df.axes
df.clip
df.clip_lower
df.clip_upper
df.columns
df.combine
df.combine_first
df.corr
df.corrwith
df.count
df.cov
df.cummax
df.cummin
df.cumprod
df.cumsum
df.diff
df.div
df.drop
df.drop_duplicates
df.dropna
df.dtypes
df.duplicated
df.eq
df.equals
df.fillna
df.filter
df.floordiv
df.ge
df.get_dtype_counts
df.get_ftype_counts
df.groupby
df.gt
df.head
df.iat_getitem
df.idxmax
df.idxmin
df.iloc_getitem
df.index
df.isin
df.isna
df.kurt
df.le
df.loc_getitem
df.lookup
df.lt
df.mad
df.mask
df.max
df.mean
df.median
df.melt
df.merge
df.min
df.mod
df.mode
df.mul
df.ndim
df.ne
df.notna
df.pct_change
df.pivot
df.pivot_table
df.pow
df.prod
df.quantile
df.query
df.radd
df.rank
df.rdiv
df.reindex
df.reindex_like
df.reorder_levels
df.reset_index
df.rfloordiv
df.rmul
df.round
df.rpow
df.rsub
df.select_dtypes
df.sem
df.set_index
df.shape
df.size
df.skew
df.sort_values
df.stack
df.std
df.sub
df.sum
df.tail
df.take
df.truediv
df.unstack
df.values
df.var
df.where
df.xs
dfgroupby.count
dfgroupby.first
dfgroupby.idxmax
dfgroupby.idxmin
dfgroupby.last
dfgroupby.max
dfgroupby.mean
dfgroupby.median
dfgroupby.min
dfgroupby.prod
dfgroupby.size
dfgroupby.sum