Pandas Extension Arrays with Tom Augspurger

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 03 Jun 2018 23:00:00 -0400

<h3>Summary</h3> <p>Pandas is a swiss army knife for data processing in Python but it has long been difficult to customize. In the latest release there is now an extension interface for adding custom data types with namespaced APIs. This allows for building and combining domain specific use cases and alternative storage mechanisms. In this episode Tom Augspurger describes how the new ExtensionArray works, how it came to be, and how you can start building your own extensions today.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.&#95;&#95;init&#95;&#95;, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app you&#8217;ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you&#8217;ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">podcastinit.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>To get worry-free releases download GoCD, the open source continous delivery server built by Thoughworks. You can use their pipeline modeling and value stream map to build, control and monitor every step from commit to deployment in one place. And with their new Kubernetes integration it&#8217;s even easier to deploy and scale your build agents. Go to <a href="https://www.pythonpodcast.com/gocd?utm_source=rss&amp;utm_medium=rss">podcastinit.com/gocd</a> to learn more about their professional support services and enterprise add-ons.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/podcastinit?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@Podcast&#95;&#95;init&#95;&#95;</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, or <a href="https://play.google.com/music/m/I7ogju4xv6adasgqz6545jndgsy?t=Podcastinit_-_Python_and_the_people_who_make_it_great&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google Play Music</a>, tell your friends and co-workers, and share it on social media.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Tom Augspurger about the extension interface for Pandas data frames and the use cases that it enables</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Most people are familiar with Pandas, but can you describe at a high level the new extension interface? <ul> <li>What is the story behind the implementation of this functionality?</li> <li>Prior to this interface what was the option for anyone who wanted to extend Pandas?</li> </ul> </li> <li>What are some of the new data types that are available as external packages? <ul> <li>What are some of the unique use cases that they enable?</li> </ul> </li> <li>How is the new interface implemented within Pandas?</li> <li>What were the most challenging or difficult aspects of building this new functionality?</li> <li>What are some of the more interesting possibilities that you are aware of for new extension types?</li> <li>What are the limitations of the interface for libraries that add new array functionality?</li> <li>What is the next major change or improvement that you would like to add in Pandas?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="http://tomaugspurger.github.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">tomaugspurger</a> on GitHub</li> <li><a href="https://twitter.com/TomAugspurger?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@TomAugspurger</a> on Twitter</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://www.imdb.com/title/tt1825683/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Black Panther</a></li> </ul> </li> <li>Tom <ul> <li><a href="http://dask-ml.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dask-ML</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="http://pandas.pydata.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Pandas</a></li> <li><a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.api.extensions.ExtensionArray.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ExtensionArray</a></li> <li><a href="https://github.com/pandas-dev/pandas/issues/18767?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Original IP Address proposal</a></li> <li><a href="http://tomaugspurger.github.io/pandas-extension-arrays.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Mid-implementation blog post</a></li> <li><a href="http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dataframe</a></li> <li><a href="http://www.numpy.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Numpy</a></li> <li><a href="https://cyberpandas.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Cyberpandas</a></li> <li><a href="http://geopandas.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Geopandas</a></li> <li><a href="https://en.wikipedia.org/wiki/Geographic_information_system?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">GIS</a></li> <li><a href="http://arrow.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Arrow</a></li> <li><a href="https://cupy.chainer.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CuPy</a></li> <li><a href="https://stedolan.github.io/jq/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">JQ</a></li> <li><a href="http://wesmckinney.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Wes McKinney</a></li> <li><a href="https://docs.scipy.org/doc/numpy-1.13.0/user/basics.subclassing.html#array-ufunc-for-ufuncs?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Array ufunc</a></li> <li><a href="https://matplotlib.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Matplotlib</a></li> <li><a href="https://altair-viz.github.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Altair</a></li> <li><a href="http://seaborn.pydata.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Seaborn</a></li> <li><a href="https://bokeh.pydata.org/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Bokeh</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-22-bryan-van-de-ven-on-bokeh/?utm_source=rss&amp;utm_medium=rss">Podcast.&#95;&#95;init&#95;&#95; Interview</a></li> </ul> </li> <li><a href="http://dask.pydata.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Dask</a> <ul> <li><a href="https://www.dataengineeringpodcast.com/episode-2-dask-with-matthew-rocklin/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Data Engineering Interview</a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fpandas-extension-arrays-with-tom-augspurger-episode-164%2F&amp;action_name=Pandas+Extension+Arrays+with+Tom+Augspurger+-+Episode+164&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>