Creating a Histogram from an Ordinal Rank in Python

What will you learn?

In this tutorial, you will master the art of creating a histogram based on an ordinal ranking system using Python. This skill is essential for effective data visualization and analysis, especially when dealing with categorical data that has a natural order.

Introduction to the Problem and Solution

When working with ordinally ranked data, such as satisfaction levels or race positions, visualizing this information accurately can be challenging. Unlike numerical data that fits neatly into bins, ordinal data requires special handling to represent it effectively in graphical form. Fortunately, Python offers powerful libraries like Matplotlib and Pandas to simplify this task.

To tackle this challenge efficiently, we first need to understand our dataset and ensure that our ordinal ranks are correctly encoded. By harnessing the plotting capabilities of Matplotlib, we can generate histograms that faithfully represent our ordinal data. This process involves leveraging categorization techniques and visualization tools to create insightful visualizations.


import pandas as pd
import matplotlib.pyplot as plt

# Sample Data: Satisfaction levels for a survey
data = {'Satisfaction': ['Very Satisfied', 'Satisfied', 'Neutral', 'Unsatisfied', 'Very Unsatisfied'],
        'Counts': [50, 75, 60, 30, 10]}

df = pd.DataFrame(data)

# Converting Satisfaction into an ordered categorical type
satisfaction_order = ['Very Unsatisfied', 'Unsatisfied', 'Neutral', 'Satisfied', 'Very Satisfied']
df['Satisfaction'] = pd.Categorical(df['Satisfaction'], categories=satisfaction_order, ordered=True)

# Plotting the Histogram['Satisfaction'], df['Counts'])
plt.xlabel('Satisfaction Level')
plt.title('Histogram of Satisfaction Levels')

# Copyright PHD


The code snippet above demonstrates how to visualize ordinal rank data through a histogram in Python:

  1. Data Preparation: We created sample survey results indicating different levels of satisfaction along with their corresponding counts.
  2. Categorical Conversion: Using Pandas library, we converted the satisfaction column into an ordered categorical type to maintain the inherent order within our data.
  3. Visualization: By utilizing Matplotlib’s bar() function, we plotted the satisfaction categories against their counts to generate a meaningful histogram representation.

This approach ensures that each category is not only treated as separate entities but also respects their intrinsic order for accurate interpretation when visualizing ordinal data.

  1. How do I install Matplotlib and Pandas?

  2. You can install Matplotlib and Pandas using the following command:

  3. pip install matplotlib pandas
  4. # Copyright PHD
  5. Can I use Seaborn instead of Matplotlib for plotting?

  6. Yes! Seaborn is built on top of Matplotlib and offers aesthetically pleasing plots with less code.

  7. What are ordered categorical variables?

  8. Ordered categorical variables have natural orders like grades (A

  9. Why convert strings to categories before plotting?

  10. Converting strings to categories helps manage memory better for large datasets and enables logical ordering not possible with mere strings.

  11. Can I customize my plot further?

  12. Absolutely! Both Pandas’ .plot() method and Matplotlib offer extensive customization options for colors, labels, plot styles, etc.

  13. How do I handle missing values in my dataset?

  14. You can either remove missing values using .dropna() or fill them using .fillna() before plotting depending on your requirements.


Creating histograms from ordinal rank systems involves understanding your dataset structure and effectively utilizing Python’s libraries. By encoding data through categorized types and leveraging robust visualization tools like Matplotlib, you can gain valuable insights represented through tailored histograms designed specifically for displaying inherently ordered information such as satisfaction surveys showcased here.

Leave a Comment