Skip to content
    geeksforgeeks
    • Interview Prep
      • DSA
      • Interview Corner
      • Aptitude & Reasoning
      • Practice Coding Problems
      • All Courses
    • Tutorials
      • Python
      • Java
      • ML & Data Science
      • Programming Languages
      • Web Development
      • CS Subjects
      • DevOps
      • Software and Tools
      • School Learning
    • Tracks
      • Languages
        • Python
        • C
        • C++
        • Java
        • Advanced Java
        • SQL
        • JavaScript
        • C#
      • Interview Preparation
        • GfG 160
        • GfG 360
        • System Design
        • Core Subjects
        • Interview Questions
        • Interview Puzzles
        • Aptitude and Reasoning
        • Product Management
        • Computer Organisation and Architecture
      • Data Science
        • Python
        • Data Analytics
        • Complete Data Science
        • Gen AI
        • Agentic AI
      • Dev Skills
        • Full-Stack Web Dev
        • DevOps
        • Software Testing
        • CyberSecurity
        • NextJS
        • Git
      • Tools
        • Computer Fundamentals
        • AI Tools
        • MS Excel & Google Sheets
        • MS Word & Google Docs
      • Maths
        • Maths For Computer Science
        • Engineering Mathematics
        • School Maths
    • Python Tutorial
    • Data Types
    • Interview Questions
    • Examples
    • Quizzes
    • DSA Python
    • Data Science
    • NumPy
    • Pandas
    • Practice
    • Django
    • Flask
    • Projects
    Open In App

    seaborn.countplot() in Python

    Last Updated : 15 Jul, 2025
    Comments
    Improve
    Suggest changes
    10 Likes
    Like
    Report

    seaborn.countplot() is a function in the Seaborn library in Python used to display the counts of observations in categorical data. It shows the distribution of a single categorical variable or the relationship between two categorical variables by creating a bar plot. Example:

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # read a tips.csv file from seaborn library
    df = sns.load_dataset('tips')
    
    # count plot on single categorical variable
    sns.countplot(x ='sex', data = df)
    
    plt.show()
    

    Output :  

    single-categorical-variable
    single categorical variable

    Explanation: This code creates a count plot using Seaborn to display the frequency of male and female individuals in the sex column of the "tips" dataset. It uses sns.countplot() to plot the data and plt.show() to display the plot.

    Syntax

    seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)

    Parameters:

    • x, y: This parameter take names of variables in data or vector data, optional, Inputs for plotting long-form data.
    • hue : (optional) This parameter take column name for colour encoding.
    • data : (optional) This parameter take DataFrame, array, or list of arrays, Dataset for plotting. If x and y are absent, this is interpreted as wide-form. Otherwise it is expected to be long-form.
    • order, hue_order : (optional) This parameter take lists of strings. Order to plot the categorical levels in, otherwise the levels are inferred from the data objects.
    • orient : (optional)This parameter take “v” | “h”, Orientation of the plot (vertical or horizontal). This is usually inferred from the dtype of the input variables but can be used to specify when the “categorical” variable is a numeric or when plotting wide-form data.
    • color : (optional) This parameter take matplotlib color, Color for all of the elements, or seed for a gradient palette.
    • palette : (optional) This parameter take palette name, list, or dict, Colors to use for the different levels of the hue variable. Should be something that can be interpreted by color_palette(), or a dictionary mapping hue levels to matplotlib colors.
    • saturation : (optional) This parameter take float value, Proportion of the original saturation to draw colors at. Large patches often look better with slightly desaturated colors, but set this to 1 if you want the plot colors to perfectly match the input color spec.
    • dodge : (optional) This parameter take bool value, When hue nesting is used, whether elements should be shifted along the categorical axis.
    • ax : (optional) This parameter take matplotlib Axes, Axes object to draw the plot onto, otherwise uses the current Axes.
    • kwargs : This parameter take key, value mappings, Other keyword arguments are passed through to matplotlib.axes.Axes.bar().

    Return Value: Returns the Axes object with the plot drawn onto it.

    Examples of seaborn.countplot()

    Example 1: Show value counts for two categorical variables and using hue parameter

    This code demonstrates how to create a count plot using Seaborn in Python to visualize the distribution of categorical data. We are using the "tips" dataset from Seaborn, and the plot visualizes the frequency of male and female customers (sex) while distinguishing between smokers and non-smokers using the hue parameter.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # read a tips.csv file from seaborn library
    df = sns.load_dataset('tips')
    
    # count plot on two categorical variable
    sns.countplot(x ='sex', hue = "smoker", data = df)
    
    plt.show()
    

    Output:

    two-categorical-variables-and-using-hue-parameter
    two categorical variables and using hue parameter

    Explanation: In this code, sns.countplot() is used to create a count plot where the x-axis represents the sex column, and the hue parameter splits the data by smoker status. The plt.show() function renders the plot, displaying the distribution of male and female customers as well as how many of them smoke or don't smoke.

    Example 2: Plot the bars horizontally

    This code demonstrates how to create a count plot using Seaborn in Python with the "tips" dataset. Unlike the standard vertical count plot, this code uses the y parameter to plot the categorical variable (sex) on the y-axis.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # read a tips.csv file from seaborn library
    df = sns.load_dataset('tips')
    
    # count plot along y axis
    sns.countplot(y ='sex', hue = "smoker", data = df)
    
    plt.show()
    

    Output: 

    horizontal-Bars
    horizontal bars

    Explanation: In this code, sns.countplot() is used with the y parameter to create a horizontal count plot. The y-axis represents the sex column, while the hue parameter divides the data based on whether the customers are smokers or not. The plt.show() function displays the plot, allowing us to compare the number of male and female customers who smoke versus those who do not.

    Example 3: Use different color palette attributes 

    This code shows how to use a custom color palette in a Seaborn count plot. The "tips" dataset is loaded using Seaborn, and the count plot visualizes the distribution of male and female customers (sex). By using the palette parameter with the "Set2" palette, we change the default colors of the plot to create a visually appealing and distinguishable chart.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # read a tips.csv file from seaborn library
    df = sns.load_dataset('tips')
    
    # use a different colour palette in count plot
    sns.countplot(x ='sex', data = df, palette = "Set2")
    
    plt.show()
    

    Output: 

    color-palette-attributes
    color palette attributes

    Explanation: In this code, sns.countplot() is used to create a vertical bar plot of the sex column from the "tips" dataset. The palette parameter is set to "Set2", which is a predefined Seaborn color palette, to style the plot with a specific set of colors. The plot displays the count of male and female customers, and plt.show() is used to render the plot.

    Possible values of palette are:

    Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r,
    GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r,
    Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r,
    Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1,
    Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr,
    YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r,
    cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth,
    gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, 

    Example 4: using a color parameter in the plot.

    This code demonstrates how to create a count plot using Seaborn to visualize the distribution of passengers by class in the Titanic dataset. The plot also differentiates between male and female passengers using the hue parameter.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # Load the Titanic dataset from seaborn library
    df = sns.load_dataset('titanic')
    
    sns.countplot(x='class', hue='sex', data=df, color="salmon")
    
    plt.show()
    

    Output:

    using-a-color-parameter
    color parameter

    Explanation: In this code, sns.countplot() is used to create a count plot that shows the number of passengers in each class (class) from the Titanic dataset. The hue parameter is set to 'sex', which splits the bars based on male and female passengers. The color parameter is set to "salmon" to change the bar colors. The plt.show() function displays the resulting plot.

    Example 5: Using a saturation parameter in the plot.

    This code demonstrates how to create a count plot using Seaborn, visualizing the distribution of male and female passengers from the Titanic dataset. The color parameter is set to "salmon", and the saturation is adjusted to 0.1 for a lighter color tone.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # read a titanic.csv file from seaborn library
    df = sns.load_dataset('titanic')
    
    # class v / s fare barplot 
    sns.countplot(x ='sex', data = df, color="salmon", saturation = 0.1)
    plt.show()
    

    Output:

    saturationParameter

    Explanation: In this code, the sns.countplot() function is used to create a count plot showing the number of male and female passengers (sex) from the Titanic dataset. The color parameter is set to "salmon" to color the bars. The saturation parameter is set to 0.1, which reduces the intensity of the color, making it lighter. The plt.show() function is called to display the plot.

    Example 6: Use matplotlib.axes.Axes.bar() parameters to control the style.

    This code demonstrates how to create a count plot using Seaborn for the 'sex' column in the Titanic dataset. Custom edge colors and transparency are applied to the bars, enhancing the plot's visual appearance.

    Python
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # Load the Titanic dataset from Seaborn
    df = sns.load_dataset('titanic')
    
    # Create a countplot for 'sex' with custom edge colors and transparency
    sns.countplot(
        x='sex',
        data=df,
        color="salmon",
        facecolor=(0, 0, 0, 0),
        linewidth=5,
        edgecolor=sns.color_palette("BrBG", 2)
    )
    
    plt.show()
    

    Output:

    Explanation: In this code, the sns.countplot() function is used to create a count plot for the 'sex' column in the Titanic dataset. The color parameter is set to "salmon", while facecolor=(0, 0, 0, 0) makes the bars transparent. The linewidth is set to 5, making the edges thicker. The edgecolor is customized using a color palette ("BrBG", 2) for a distinct visual appeal. Finally, plt.show() displays the plot.

    Colormap Possible values are:  

    Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r,  
    CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r,  
    OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r,  
    Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd,
    PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r,
    RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral,

    Create Quiz

    A

    ankthon
    Improve

    A

    ankthon
    Improve
    Article Tags :
    • Python
    • Python-Seaborn

    Explore

      Python Fundamentals

      Python Introduction

      2 min read

      Input and Output in Python

      4 min read

      Python Variables

      4 min read

      Python Operators

      4 min read

      Python Keywords

      2 min read

      Python Data Types

      8 min read

      Conditional Statements in Python

      3 min read

      Loops in Python - For, While and Nested Loops

      5 min read

      Python Functions

      5 min read

      Recursion in Python

      4 min read

      Python Lambda Functions

      5 min read

      Python Data Structures

      Python String

      5 min read

      Python Lists

      4 min read

      Python Tuples

      4 min read

      Python Dictionary

      3 min read

      Python Sets

      6 min read

      Python Arrays

      7 min read

      List Comprehension in Python

      4 min read

      Advanced Python

      Python OOP Concepts

      11 min read

      Python Exception Handling

      5 min read

      File Handling in Python

      4 min read

      Python Database Tutorial

      4 min read

      Python MongoDB Tutorial

      3 min read

      Python MySQL

      9 min read

      Python Packages

      10 min read

      Python Modules

      3 min read

      Python DSA Libraries

      15 min read

      List of Python GUI Library and Packages

      3 min read

      Data Science with Python

      NumPy Tutorial - Python Library

      3 min read

      Pandas Tutorial

      4 min read

      Matplotlib Tutorial

      5 min read

      Python Seaborn Tutorial

      3 min read

      StatsModel Library - Tutorial

      3 min read

      Learning Model Building in Scikit-learn

      6 min read

      TensorFlow Tutorial

      2 min read

      PyTorch Tutorial

      6 min read

      Web Development with Python

      Flask Tutorial

      8 min read

      Django Tutorial | Learn Django Framework

      7 min read

      Django ORM - Inserting, Updating & Deleting Data

      4 min read

      Templating With Jinja2 in Flask

      6 min read

      Django Templates

      5 min read

      Build a REST API using Flask - Python

      3 min read

      Building a Simple API with Django REST Framework

      3 min read

      Python Practice

      Python Quiz

      1 min read

      Python Coding Practice

      1 min read

      Python Interview Questions and Answers

      15+ min read
    top_of_element && top_of_screen < bottom_of_element) || (bottom_of_screen > articleRecommendedTop && top_of_screen < articleRecommendedBottom) || (top_of_screen > articleRecommendedBottom)) { if (!isfollowingApiCall) { isfollowingApiCall = true; setTimeout(function(){ if (loginData && loginData.isLoggedIn) { if (loginData.userName !== $('#followAuthor').val()) { is_following(); } else { $('.profileCard-profile-picture').css('background-color', '#E7E7E7'); } } else { $('.follow-btn').removeClass('hideIt'); } }, 3000); } } }); } $(".accordion-header").click(function() { var arrowIcon = $(this).find('.bottom-arrow-icon'); arrowIcon.toggleClass('rotate180'); }); }); window.isReportArticle = false; function report_article(){ if (!loginData || !loginData.isLoggedIn) { const loginModalButton = $('.login-modal-btn') if (loginModalButton.length) { loginModalButton.click(); } return; } if(!window.isReportArticle){ //to add loader $('.report-loader').addClass('spinner'); jQuery('#report_modal_content').load(gfgSiteUrl+'wp-content/themes/iconic-one/report-modal.php', { PRACTICE_API_URL: practiceAPIURL, PRACTICE_URL:practiceURL },function(responseTxt, statusTxt, xhr){ if(statusTxt == "error"){ alert("Error: " + xhr.status + ": " + xhr.statusText); } }); }else{ window.scrollTo({ top: 0, behavior: 'smooth' }); $("#report_modal_content").show(); } } function closeShareModal() { const shareOption = document.querySelector('[data-gfg-action="share-article"]'); shareOption.classList.remove("hover_share_menu"); let shareModal = document.querySelector(".hover__share-modal-container"); shareModal && shareModal.remove(); } function openShareModal() { closeShareModal(); // Remove existing modal if any let shareModal = document.querySelector(".three_dot_dropdown_share"); shareModal.appendChild(Object.assign(document.createElement("div"), { className: "hover__share-modal-container" })); document.querySelector(".hover__share-modal-container").append( Object.assign(document.createElement('div'), { className: "share__modal" }), ); document.querySelector(".share__modal").append(Object.assign(document.createElement('h1'), { className: "share__modal-heading" }, { textContent: "Share to" })); const socialOptions = ["LinkedIn", "WhatsApp","Twitter", "Copy Link"]; socialOptions.forEach((socialOption) => { const socialContainer = Object.assign(document.createElement('div'), { className: "social__container" }); const icon = Object.assign(document.createElement("div"), { className: `share__icon share__${socialOption.split(" ").join("")}-icon` }); const socialText = Object.assign(document.createElement("span"), { className: "share__option-text" }, { textContent: `${socialOption}` }); const shareLink = (socialOption === "Copy Link") ? Object.assign(document.createElement('div'), { role: "button", className: "link-container CopyLink" }) : Object.assign(document.createElement('a'), { className: "link-container" }); if (socialOption === "LinkedIn") { shareLink.setAttribute('href', `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`); shareLink.setAttribute('target', '_blank'); } if (socialOption === "WhatsApp") { shareLink.setAttribute('href', `https://api.whatsapp.com/send?text=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } if (socialOption === "Twitter") { shareLink.setAttribute('href', `https://twitter.com/intent/tweet?url=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } shareLink.append(icon, socialText); socialContainer.append(shareLink); document.querySelector(".share__modal").appendChild(socialContainer); //adding copy url functionality if(socialOption === "Copy Link") { shareLink.addEventListener("click", function() { var tempInput = document.createElement("input"); tempInput.value = window.location.href; document.body.appendChild(tempInput); tempInput.select(); tempInput.setSelectionRange(0, 99999); // For mobile devices document.execCommand('copy'); document.body.removeChild(tempInput); this.querySelector(".share__option-text").textContent = "Copied" }) } }); // document.querySelector(".hover__share-modal-container").addEventListener("mouseover", () => document.querySelector('[data-gfg-action="share-article"]').classList.add("hover_share_menu")); } function toggleLikeElementVisibility(selector, show) { document.querySelector(`.${selector}`).style.display = show ? "block" : "none"; } function closeKebabMenu(){ document.getElementById("myDropdown").classList.toggle("show"); }
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Campus Training Program
  • Explore
  • POTD
  • Job-A-Thon
  • Blogs
  • Nation Skill Up
  • Tutorials
  • Programming Languages
  • DSA
  • Web Technology
  • AI, ML & Data Science
  • DevOps
  • CS Core Subjects
  • Interview Preparation
  • Software and Tools
  • Courses
  • ML and Data Science
  • DSA and Placements
  • Web Development
  • Programming Languages
  • DevOps & Cloud
  • GATE
  • Trending Technologies
  • Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
  • Preparation Corner
  • Interview Corner
  • Aptitude
  • Puzzles
  • GfG 160
  • System Design
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.
See More

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences