When I run '''sns.histplot(df['price'])''' in pycharm I get the code output but no graph, why is this?

Question:

I’m using pycharm to run some code using Seaborn. I’m very new to python and am just trying to learn the ropes so I’m following a tutorial online. I’ve imported the necessary libraries and have run the below code

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# import the data saved as a csv
df = pd.read_csv('summer-products-with-rating-and-performance_2020-08.csv')

df["has_urgency_banner"] = df["has_urgency_banner"].fillna(0)

df["discount"] = (df["retail_price"] -
df["price"])/df["retail_price"]

df["rating_five_percent"] = df["rating_five_count"]/df["rating_count"]
df["rating_four_percent"] = df["rating_four_count"]/df["rating_count"]
df["rating_three_percent"] = df["rating_three_count"]/df["rating_count"]
df["rating_two_percent"] = df["rating_two_count"]/df["rating_count"]
df["rating_one_percent"] = df["rating_one_count"]/df["rating_count"]

ratings = [
    "rating_five_percent",
    "rating_four_percent",
    "rating_three_percent",
    "rating_two_percent",
    "rating_one_percent"
]

for rating in ratings:
    df[rating] = df[rating].apply(lambda x: x if x>= 0 and x<= 1 else 0)

# Distribution plot on price
sns.histplot(df['price'])

My output is as follows:

Process finished with exit code 0

so I know there are no errors in the code but I don’t see any graphs anywhere as I’m supposed to.
Ive found a way around this by using this at the end

plt.show()

which opens a new tab and uses matplotlib to show me a similar graph.

However in the code I’m using to follow along, matplotlib is not imported or used (I understand that seaborn has built in Matplotlib functionality) as in the plt.show statement is not used but the a visual graph is still achieved.

I’ve also used print which gives me the following

AxesSubplot(0.125,0.11;0.775x0.77)

Last point to mention is that the code im following along with uses the following

import seaborn as sns
# Distribution plot on price
sns.distplot(df['price'])

but distplot has now depreciated and I’ve now used histplot because I think that’s the best alternative vs using displot, If that’s incorrect please let me know.

I feel there is a simple solution as to why I’m not seeing a graph but I’m not sure if it’s to do with pycharm or due to something within the code.

Asked By: 8ull53y3

||

Answers:

matplotlib is a dependency of seaborn. As such, importing matplotlib with import matplotlib.pyplot as plt and calling plt.show() does not add any overhead to your code.

While it is annoying that there is no sns.plt.show() at this time (see this similar question for discussion), I think this is the simplest solution to force plots to show when using PyCharm Community.

Importing matplotlib in this way will not affect how your exercises run as long as you use a namespace like plt.

Answered By: Callum Rollo

Be aware the ‘data’ must be pandas DataFrame object, not: <class ‘pandas.core.series.Series’>
I using this, work finely:

# Distribution plot on price

sns.histplot(df[['price']])

plt.show()
Answered By: Shahram
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.