Here’s a really great tour through some advanced Pandas features, by Kevin Markham of Data School.
Here are the tricks that he features:
- Show installed versions
- Create an example DataFrame
- Rename columns
- Reverse row order
- Reverse column order
- Select columns by data type
- Convert strings to numbers
- Reduce DataFrame size
- Build a DataFrame from multiple files (row-wise)
- Build a DataFrame from multiple files (column-wise)
- Create a DataFrame from the clipboard
- Split a DataFrame into two random subsets
- Filter a DataFrame by multiple categories
- Filter a DataFrame by largest categories
- Handle missing values
- Split a string into multiple columns
- Expand a Series of lists into a DataFrame
- Aggregate by multiple functions
- Combine the output of an aggregation with a DataFrame
- Select a slice of rows and columns
- Reshape a MultiIndexed Series
- Create a pivot table
- Convert continuous data into categorical data
- Change display options
- Style a DataFrame
- Bonus: Profile a DataFrame
My favorite tip is #25, on styling a dataframe. The bonus tip on Pandas profiling is also pretty cool!
A Jupyter notebook with example usage is available on GitHub.
If you’re hungry for more best practices in Pandas, you can check out Kevin’s PyCon 2019 workshop presentation or his complete series of videos on YouTube.
Pandas is a widely popular component of the scientific python stack, and it is truly an indispensable part of the data scientist’s toolkit. The name pandas is actually a portmanteau created from panel and data. Of course, most of us are familiar with dataframes. But what’s a panel?
Panel data contain 3-dimensional data. A very common example is a time-series: Imagine a dataset with the
stock (e.g., AAPL, MSFT, etc.) as the index defining the x axis and the
price as the variable defining the y axis. A regular 2-dimensional dataframe works fine if you are only taking a cross-sectional snapshot of stock prices at one point in time. But the moment you want to look at patterns in price over the last few months, then
time becomes a new index defining the z axis. A panel is a specific data structure designed to accommodate this.
Recently, the Pandas team announced the deprecation of the panel data structure (as of version 0.20.0). Rather, they are encouraging the use of dataframes with hierarchical indexing (MultiIndex). Using a MultiIndex, one may easily process 3-dimensional data in a dataframe — and indeed, any number of dimensions becomes possible.
MultiIndex is intuitive once you learn how to use it, but it can be tricky to wrap your head around it at first. Kevin Markham of the Data School released a great tutorial explaining how to use the MultiIndex in Pandas.
Read more about hierarchical indexing in the official Pandas documentation.
The QuantEcon tutorial site provides a “real-world” example that demonstrates the use of MultiIndex for analysis of 3-dimensional data.