5 Striking Pandas Tips and Tricks for Analysts and Data Scientists
Introduction
If you‘re a data analyst or data scientist, chances are pandas is one of your go-to tools for exploring and manipulating data in Python. Pandas is a powerful open-source library that provides easy-to-use data structures and functions for working with structured data. It‘s a foundational part of the data science and machine learning stack.
Consider these statistics:
- Pandas is downloaded over 16 million times per month from the Python Package Index (PyPI)
- It‘s the 5th most starred Python project on GitHub with over 34,000 stars
- In the Stack Overflow 2022 Developer Survey, pandas ranked as the 5th most commonly used technology among professional developers
- Searches for "pandas" on Stack Overflow have grown nearly 500% in the past five years
- Over 25,000 companies use pandas, including tech giants like Google, Airbnb, Netflix, and IBM
Clearly, pandas is a big deal in the data world. But while getting started with pandas basics is straightforward, there‘s a lot of depth to the library that only reveals itself with time and practice.
In this article, I‘ll share five striking pandas tips and tricks that I believe every analyst and data scientist should have in their toolkit. I‘ve personally used these techniques in countless data science and machine learning projects to streamline my workflow and generate valuable insights. My goal is to help you become a more efficient and effective pandas user.
We‘ll cover:
- Mastering data selection with loc and iloc
- Reshaping data with melt and pivot
- Handling missing data gracefully
- Combining datasets with merge, join, and concat
- Styling DataFrames for maximum impact
Along the way, I‘ll provide concrete examples and use cases, discuss best practices, and relate these tips to common data science and machine learning tasks. Whether you‘re a pandas novice or a seasoned pro, I hope you‘ll learn something new!
Let‘s dive in.
1. Master loc and iloc for Selecting Data
One of the first things you need to grasp when working with pandas is how to select the data you want from a DataFrame. Pandas provides two primary methods for selection: loc and iloc.
Use df.loc[] to select rows and columns by label:
df.loc[row_labels, column_labels]
Use df.iloc[] to select rows and columns by integer position:
df.iloc[row_positions, column_positions]
Here‘s a concrete example. Let‘s say we have the following DataFrame of student grades:
| Name | Subject | Score |
|---|---|---|
| Alice | Math | 85 |
| Bob | Math | 92 |
| Alice | Science | 93 |
| Bob | Science | 88 |
| Alice | English | 90 |
| Bob | English | 85 |
To select Alice‘s grades using loc, we do:
df.loc[‘Alice‘]
| Subject | Score |
|---|---|
| Math | 85 |
| Science | 93 |
| English | 90 |
To select the first two students‘ math scores using iloc, we do:
df.iloc[:2, df.columns.get_loc(‘Math‘)]
| Name | Math |
|---|---|
| Alice | 85 |
| Bob | 92 |
In general, loc is label-based and more semantic, while iloc is index-based and useful for relative positioning.
When I first started with pandas, I constantly mixed up loc and iloc (and still do occasionally). But with practice, you‘ll develop a sense of which to reach for in different scenarios.
Here are some rules of thumb I follow:
- Use loc most of the time, especially for readability and chainability
- Use loc when you have meaningful row and column labels
- Use iloc when you need to select by absolute or relative position
- Use iloc for more programmatic or iterative access patterns
- When in doubt, try both and see which gets the job done!
Mastering loc and iloc will make selecting data in pandas a breeze and is a key milestone on your journey to pandas proficiency.
2. Reshape Your Data with Melt and Pivot
Data is often delivered to us in less than ideal formats for analysis. A common data wrangling pattern is converting between wide and long formats, also known as melting and pivoting.
Pandas has built-in melt() and pivot() functions to make these transformations straightforward.
Let‘s illustrate with an example. Suppose we have a DataFrame containing monthly sales data across product categories:
| Store | Category | Jan | Feb | Mar |
|---|---|---|---|---|
| North | Hardware | 200 | 150 | 225 |
| North | Software | 350 | 400 | 380 |
| South | Hardware | 100 | 120 | 140 |
| South | Software | 250 | 200 | 350 |
To melt this from wide to long format, we use melt():
melted_df = df.melt(id_vars=[‘Store‘, ‘Category‘],
var_name=‘Month‘,
value_name=‘Sales‘)
| Store | Category | Month | Sales |
|---|---|---|---|
| North | Hardware | Jan | 200 |
| North | Hardware | Feb | 150 |
| North | Hardware | Mar | 225 |
| North | Software | Jan | 350 |
| … | … | … | … |
In the melted DataFrame, each row represents a single observation of store sales per category per month. This long format is often better for plotting, aggregation, and further analysis.
To go from long back to wide, we use pivot():
pivoted_df = melted_df.pivot(index=[‘Store‘, ‘Category‘],
columns=‘Month‘,
values=‘Sales‘)
The original wide format DataFrame is restored.
Knowing how and when to reshape your data with melt and pivot is a key skill for any pandas user. Some specific use cases:
- Preparing data for machine learning models that expect a specific shape
- Transforming data for time series analysis and forecasting
- Creating multi-dimensional data cubes for business intelligence and reporting
- Calculating summary statistics and aggregations along different dimensions
Pivoting is also a useful mental model for understanding SQL and relational databases. In fact, you can think of a pandas DataFrame as an in-memory SQL table. Mastering melt and pivot will level up your data manipulation abilities across tools and domains.
3. Handle Missing Data Gracefully
Most real-world datasets have missing or null values. These could represent data entry errors, uncollected information, redacted values, or other anomalies. Knowing how to diagnose and treat missing data is a core data science competency.
In pandas, missing data is represented by NaN (Not a Number) values. Pandas provides a suite of functions for detecting, filtering, and imputing NaNs.
To check for null values in a DataFrame, use isnull() or isna():
df.isnull()
This returns a boolean mask indicating the location of NaN values.
Here are some common strategies for handling nulls:
- Drop rows or columns containing nulls with
dropna():
df.dropna() # Drop rows with any nulls
df.dropna(how=‘all‘) # Drop rows with all nulls
df.dropna(thresh=5) # Drop rows with < 5 non-nulls
df.dropna(subset=[‘price‘]) # Drop rows where ‘price‘ is null
- Fill nulls with a specified value using
fillna():
df.fillna(0) # Fill all nulls with 0
df[‘age‘].fillna(df[‘age‘].mean()) # Fill ‘age‘ nulls with mean age
- Forward or backward fill nulls with surrounding values:
df.fillna(method=‘ffill‘) # Forward fill
df.fillna(method=‘bfill‘) # Backward fill
- Interpolate nulls using a mathematical function:
df.interpolate() # Fill nulls with linear interpolation
df.interpolate(method=‘time‘) # Interpolate according to time index
The appropriate treatment depends on the nature and distribution of missingness in your data. Some key considerations from a data science perspective:
- Is the data missing completely at random (MCAR), missing at random (MAR), or missing not at random (MNAR)? Different assumptions warrant different approaches.
- What percentage of values are null? At a high threshold (>50%), dropping may severely limit your sample size.
- Will nulls cause issues for downstream models and algorithms? Some models (like decision trees) are robust to missingness while others (like neural networks) require complete data.
- Is there a meaningful default value for a given feature? For example, filling a null ‘has_purchased‘ field with 0 might make business sense.
- Can surrounding values be used to impute nulls? Time series data often justifies forward or backward filling.
When in doubt, experiment! It‘s good practice to test different treatments and see how they impact your exploratory analysis and model performance. The pandas missing data tools make it easy to simulate different scenarios.
4. Combine Datasets with Merge, Join, and Concat
A superpower of pandas is the ability to easily combine disparate data sources. This is a common need in data science workflows – for example, joining user data with transaction logs, or merging sales data across regions.
The three primary ways to combine DataFrames are merge(), join(), and concat().
pd.merge() combines DataFrames horizontally based on a shared key column:
merged_df = df1.merge(df2, on=‘user_id‘)
This performs an inner join by default, keeping only rows where the key appears in both DataFrames. Other join types can be specified with the how parameter:
how=‘left‘: Keep all rows from the left DataFramehow=‘right‘: Keep all rows from the right DataFramehow=‘outer‘: Keep all rows from both DataFrames
Here‘s a visual of the different merge types:

df.join() also performs a merge-like operation but joins on the DataFrame index instead of an explicit key:
joined_df = df1.join(df2, lsuffix=‘_left‘, rsuffix=‘_right‘)
Lastly, pd.concat() stacks DataFrames vertically (adding rows) or horizontally (adding columns):
stacked_df = pd.concat([df1, df2]) # Vertical stack
wide_df = pd.concat([df1, df2], axis=1) # Horizontal stack
Some things to keep in mind when combining data in pandas:
- Merging on columns is more common than joining on indices
- Be sure to specify suffixes if columns overlap between merging DataFrames
- Reset the index after concatenating to avoid duplicate indices
- When in doubt, inspect the shape and contents of your merged data to validate it
Merging and joining are everyday occurrences in data science projects. A few examples:
- Combining store-level sales data into a company-wide dataset for financial reporting and forecasting
- Joining clickstream data with user profiles to analyze conversion funnels
- Merging product reviews with item attributes to build a recommendation engine
- Relating patient records across hospital database tables for clinical studies
Pandas makes these data integration tasks intuitive. Its machine learning cousin scikit-learn integrates seamlessly with DataFrames, so merged data can flow directly into models.
Learning the intricacies of merging, joining, and concatenating will make you a nimble data wrangler. You‘ll be able to mix and match data with ease to generate novel features and insights.
5. Make Your DataFrames Shine with Styling
While pandas is primarily a data manipulation library, it also provides a powerful API for styling rendered DataFrames. Thoughtful styling can make your data more understandable and engaging, especially when presenting to non-technical stakeholders.
The pandas styling API is accessed through the df.style attribute, which returns a Styler object. This object has dozens of built-in methods for modifying colors, formats, and layouts.
Here are a few examples of how you can use the pandas styling API:
- Highlight the maximum value in each row:
df.style.highlight_max(axis=1)
- Color a DataFrame based on a condition:
df.style.applymap(lambda x: ‘background-color: yellow‘ if x < 0 else ‘‘)
- Format values to two decimal places:
df.style.format("{:.2f}")
- Create a heatmap based on data values:
df.corr().style.background_gradient(cmap=‘coolwarm‘)
- Hide the index or headers:
df.style.hide_index()
df.style.hide_columns()
These methods are just the beginning – I encourage you to explore the full scope of the API in the pandas documentation.
Some best practices I follow when styling DataFrames:
- Use styling to guide attention and tell a story, not just for flair
- Be judicious with color – a little goes a long way
- Ensure your styled DataFrames are accessible and readable
- Experiment with different styles and get feedback from your audience
- When in doubt, keep it simple!
Styling DataFrames has many applications in data science workflows:
- Creating executive dashboards and reports
- Highlighting key performance indicators (KPIs)
- Visualizing correlations and patterns in data
- Formatting model outputs and evaluation metrics
- Enhancing documentation and tutorials with visuals
At the end of the day, data science is a communication task as much as a technical one. Clear, engaging presentation of your data and findings is essential to driving impact. Pandas styling lets you do this without having to resort to another tool.
Conclusion
We‘ve covered a lot of ground in this deep dive on pandas tips and tricks! To recap, we learned how to:
- Select data with loc and iloc
- Reshape data with melt and pivot
- Handle missing values
- Combine datasets with merge, join, and concat
- Style DataFrames for presentation
I hope these tips have given you a sense of the depth and power of the pandas library. Pandas is an essential part of the data science and machine learning toolkit for good reason – it makes data manipulation intuitive and efficient.
But as with any tool, mastering pandas takes practice. I encourage you to try out these techniques on your own datasets. Explore the nooks and crannies of the API. Read the documentation and other tutorials. And most importantly, have fun! Data wrangling can be a creative and rewarding process.
As you continue on your pandas journey, remember these key principles:
- Be deliberate about your data structures and transformations
- Optimize for readability and simplicity in your code
- Validate your assumptions and results at each step
- Present your data thoughtfully and accessibly
- Never stop learning and experimenting
Happy wrangling, and may your DataFrames be ever tidy and insightful!