Skip to content

Instantly share code, notes, and snippets.

@kdheepak
Created August 30, 2017 08:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kdheepak/7809aa801042611f0b2f9589a52ac027 to your computer and use it in GitHub Desktop.
Save kdheepak/7809aa801042611f0b2f9589a52ac027 to your computer and use it in GitHub Desktop.
A @py macro for Python-like syntax in Julia
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"using PyPlot"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"using PyCall"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"@pyimport pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>names</th>\n",
" <th>salary</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>John</td>\n",
" <td>80000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Jane</td>\n",
" <td>90000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Zoey</td>\n",
" <td>100000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"PyObject names salary\n",
"0 John 80000\n",
"1 Jane 90000\n",
"2 Zoey 100000"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(Dict(:names=>[\"John\", \"Jane\", \"Zoey\"], :salary=>[80000, 90000, 100000]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"@Py (macro with 1 method)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function traverse!(a::Any)\n",
" return a\n",
"end\n",
"\n",
"function traverse!(expr::Expr)\n",
" \n",
" if expr.head == :ref \n",
" expr.head = :call\n",
" unshift!(expr.args, :get)\n",
" end\n",
"\n",
" for (i, arg) in enumerate(expr.args)\n",
" traverse!(expr.args[i])\n",
" end\n",
" \n",
" if expr.head == :.\n",
" expr.head = :ref\n",
" end\n",
" \n",
" return expr\n",
"end\n",
"\n",
"macro Py(expr::Expr)\n",
" \n",
" traverse!(expr)\n",
" \n",
" return expr\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>salary</th>\n",
" </tr>\n",
" <tr>\n",
" <th>names</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>John</th>\n",
" <td>80000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Jane</th>\n",
" <td>90000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zoey</th>\n",
" <td>100000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"PyObject salary\n",
"names \n",
"John 80000\n",
"Jane 90000\n",
"Zoey 100000"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = @Py df.set_index(\"names\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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E3r27MmZM2euefxvf/sbL7zwAqNGjXJBVz+tQa1M/VBFRQWjR4/mlltuwcfHh169erFr165r6vbs2cPtt9+On58fPXv25PDhw/Zt06dPp3Pnzvz1r3+ldevWBAQEMGTIEC5evFibUxGRH1m/fj29evUiMDCQZs2akZyczJEjR+zbjx8/jpubG59++il33303fn5+JCQkkJmZ6TDOtm3b6N27N76+vkRERDB69GguXbpU29MRaZC8vLwIDQ11uF24cIHx48czZcoUHnnkEQC++uor7rjjDry9vWnZsiVpaWlUVVXZx7HZbKSnpxMVFYWvry8JCQmsXr0aAGMMt912G/Pnz3c49r59+3BzcyMvL++6em2wYWrixIl88sknLF26lL1793LbbbfRr18/zp8/71A3depUFixYwO7du2nUqBEjR4502H7kyBHWrFlDRkYGGRkZfPXVV8yZM6c2pyIiP3Lp0iXGjh3L7t272bhxI+7u7jz44IPYbDaHuqlTpzJ+/Hj27dtHTEwMQ4cOtf8jfOTIEZKSkkhJSSE7O5v/+7//Y9u2bbz00kuumJJIg1dcXMygQYPo27cvM2fOBOD06dMMGDCA3/zmN2RlZbFo0SI++OADfv/739v3S09P56OPPmLx4sUcOHCAV199lSeeeIKvvvoKNzc3Ro4cyZIlSxyOtWTJEvr06cNtt912fc2ZBmT48OFm0KBBprS01Hh6epply5bZt125csWEhYWZefPmGWOM2bx5swHMl19+aa9Zu3atAczly5eNMca88cYbxs/Pz1gsFnvNhAkTTLdu3WppRiJy1dXX90/597//bQCTk5NjjDHm2LFjBjD//d//ba85cOCAAUxubq4xxpjU1FTz3HPPOYzz9ddfG3d3d/u/ASJSO6xWq+nfv79p3769wzl3ypQpJjY21thsNvtj7777rmncuLGxWq2mvLzc+Pn5mR07djiMl5qaaoYOHWqMMeb06dPGw8PD7Ny50xjzfR5o3ry5+fDDD6+7vwa5MnXkyBEqKyu588477Y95enpyxx13kJub61AbHx9v/33Lli0BKCwstD/WunVrmjRp4lDzw+0iUvu+++47hg4dSnR0NE2bNqV169YAnDhxwqHu517fWVlZfPjhhzRu3Nh+69evHzabjWPHjtXOREQEgClTppCZmcnnn3/ucM7Nzc2lR48euLm52R+78847KS0t5dSpU+Tl5VFWVsa9997r8Fr+6KOP7Jf+w8LCuP/++/mf//kfAP7+979TUVFhv4x4PfQG9F/g6elp//3VP6wfXir44farNT++lCAitWvgwIG0atWK999/n7CwMGw2G506deLKlSsOdT/3+i4tLeX5559n9OjR14wfGRlZg92LyA+tWLGC+fPns3btWtq2bXtD+5aWlgKwdu1awsPDHbZ5e3vbf//MM8/w5JNP8oc//IElS5bw2GOP4efnd93HaZBhqk2bNnh5ebF9+3ZatWoFQGVlJbt27WLMmDEu7k5EqqOoqIjDhw/z/vvv07t3b+D7N5LfqK5du3Lw4MHrf8+EiDjdvn37SE1NZc6cOfTr1++a7e3bt+eTTz7BGGP/D9H27dtp0qQJt956K0FBQXh7e3PixAnuuuuu/3icAQMG4O/vz6JFi1i/fj1bt269oT4bZJjy9/fnxRdfZMKECQQHBxMZGcm8efMoKysjNTXV1e2J2yov+wAABgdJREFUSDUEBQXRrFkz3nvvPVq2bMmJEydIS0u74XEmTZpE9+7deemll3jmmWfw9/fn4MGDbNiwgYULF9ZA5yLyQ+fOnWPw4MH07duXJ554goKCAoftHh4ejBo1ij/+8Y+8/PLLvPTSSxw+fJg33niDsWPH4u7uTpMmTRg/fjyvvvoqNpuNXr16UVJSwvbt22natCnDhw+3j/X0008zefJk2rZtS48ePW6o1wYVpmw2G40afT/lOXPmYLPZePLJJ7l48SK33347X3zxBUFBQS7uUkR+jauvb3d3d1asWMHo0aPp1KkTsbGxvP322/Tt2/eGxouPj+err75i6tSp9O7dG2MMbdq04bHHHquZCYiIg7Vr15Kfn09+fr79PY0/1KpVK44fP866deuYMGECCQkJBAcHk5qaymuvvWavmzlzJi1atCA9PZ2jR48SGBhI165dmTJlisN4qampzJ49mxEjRtxwr27GGHPjU6ybkpKSuO222/S/SpF6SK9vEamOr7/+mnvuuYeTJ08SEhJyQ/s2iJ/mu3DhAhkZGWzZsoXExERXtyMiTqTXt4hUR0VFBadOnWL69Ok88sgjNxykoIFc5hs5ciS7du1i3LhxDBo0yNXtiIgT6fUtItXxv//7v6SmptK5c2c++uijXzVGg7rMJyIiIuJsDeIyn4iIiEhNUZgSERERqQaFKREREZFqUJgSERERqQaFKREREZFqUJgSERERqQaFKREREZFqUJgSkZte3759GT16NBMnTiQ4OJjQ0FCmT59u3/7WW28RFxeHv78/ERERjBo1itLSUvv2Dz/8kMDAQDIyMoiNjcXPz4+HH36YsrIyli5dSuvWrQkKCmL06NFYrVb7fhUVFYwfP57w8HD8/f3p1q0bW7ZssW/Pz89n4MCBBAUF4e/vT8eOHVm3bl1tPCUichNpEJ+ALiJ139KlSxk7diw7d+4kMzOTp59+mjvvvJN7770Xd3d33n77baKiojh69CijRo1i4sSJ/PnPf7bvX1ZWxttvv82KFSu4ePEiDz30EA8++CCBgYGsW7eOo0ePkpKSwp133mn/MuOXXnqJgwcPsmLFCsLCwvjss89ISkoiJyeHtm3b8rvf/Y4rV66wdetW/P39OXjwII0bN3bVUyQiLqJPQBeRm17fvn2xWq18/fXX9sfuuOMOfvvb3zJnzpxr6levXs0LL7zAuXPngO9XpkaMGEFeXh5t2rQB4IUXXuCvf/0rZ8+etQegpKQkWrduzeLFizlx4gTR0dGcOHGCsLAw+9iJiYnccccdzJ49m/j4eFJSUnjjjTdqcvoicpPTypSI1Anx8fEO91u2bElhYSEAX375Jenp6Rw6dAiLxUJVVRXl5eWUlZXh5+cHgJ+fnz1IAYSEhNC6dWuHlaSQkBD7mDk5OVitVmJiYhyOW1FRQbNmzQAYPXo0L774Iv/85z9JTEwkJSXlmj5FpP7Te6ZEpE7w9PR0uO/m5obNZuP48eMkJycTHx/PJ598wp49e3j33XcBuHLlys/u/5/GBCgtLcXDw4M9e/awb98++y03N5c//elPADzzzDMcPXqUJ598kpycHG6//Xbeeecdp89dRG5uWpkSkTptz5492Gw2FixYgLv79/8/XLlyZbXH7dKlC1arlcLCQnr37v0f6yIiInjhhRd44YUXmDx5Mu+//z4vv/xytY8vInWHwpSI1Gm33XYblZWVvPPOOwwcOJDt27ezePHiao8bExPDsGHDeOqpp1iwYAFdunTh3//+Nxs3biQ+Pp7777+fMWPG0L9/f2JiYrhw4QKbN2+mffv2TpiViNQluswnInVaQkICb731FnPnzqVTp04sW7aM9PR0p4y9ZMkSnnrqKcaNG0dsbCyDBw9m165dREZGAmC1Wvnd735H+/btSUpKIiYmxuEnCEWkYdBP84mIiIhUg1amRERERKpBYUpERESkGhSmRERERKpBYUpERESkGhSmRERERKpBYUpERESkGhSmRERERKpBYUpERESkGhSmRERERKpBYUpERESkGhSmRERERKpBYUpERESkGv4/SVBG3vmppAIAAAAASUVORK5CYII=",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7fd11deaad50>)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"PyObject <matplotlib.axes._subplots.AxesSubplot object at 0x7fd11de4a550>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@Py df.iloc[0:2, [\"salary\"]].plot()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 0.6.0",
"language": "julia",
"name": "julia-0.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment