pythondatasetiris-dataset

This dataset graph was working withe the line of best fit now it has broke


This code was functioning a has been reverted to the state were it was functioning but is now unfunctionial. Can someone help resolve the error

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

sns.set_theme(style="whitegrid")

iris = sns.load_dataset("iris")

dataset1 = iris

from scipy.stats import linregress

x = np.linspace(0,7,8)
y = a*x + b
plt.plot(x, y, 'r', label='Y = aX + b')

x = dataset1['petal_length'].to_numpy(dtype = float)
y = dataset1['sepal_length'].to_numpy(dtype = float)

a, b, r ,p, stderr = linregress(x,y)
print("\na: {:.4f}".format(a))
print("\nb: {:.4f}".format(b))
print("\nR Sqaured: {:.4f}".format(r**2))


sns.scatterplot(data=dataset1, x = 'petal_length', y = 'sepal_length')
plt.show()

error received

ValueError                                Traceback (most recent call last)
<ipython-input-185-aa2ea9694f18> in <module>
      2 
      3 x = np.linspace(0,7,8)
----> 4 y = a*x + b
      5 plt.plot(x, y, 'r', label='Y = aX + b')
      6 

ValueError: operands could not be broadcast together with shapes (3,4) (8,) 

new error one seaborn was uninstalled and reinstalled

NameError                                 Traceback (most recent call last)
<ipython-input-27-0c657297db5a> in <module>
      2 
      3 x = np.linspace(8,7,8)
----> 4 y = a*x + b (1)
      5 plt.plot(x, y, 'r', label='Y = aX + b')
      6 

NameError: name 'a' is not defined

Solution

  • Would have been useful to show the error you are receiving for simplicity rather than having to run the code. It seems you are facing an error with seaborn as follows:

    ImportError: cannot import name 'remove_na'
    

    This has been asked before and is supposedly caused by the following issue: "The problem is that seaborn seems to be using a private method from pandas". (Ref: I am facing this issue in seaborn import:) Advice is also given here for resolving this error i.e., uninstall seaborn and install it again.

    EDIT FOLLOWING COMMENT:

    The issue with your code is that it is written in an incorrect order (you are calling variable a in y = a*x + b before you have assigned it a value). Run the following (I have just changed the order and commented out the additional x call causing you a shape issue, as per your error above):

    import pandas as pd
    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.stats import linregress
    
    sns.set_theme(style="whitegrid")
    
    iris = sns.load_dataset("iris")
    
    dataset1 = iris
    
    x = dataset1['petal_length'].to_numpy(dtype = float)
    y = dataset1['sepal_length'].to_numpy(dtype = float)
    
    a, b, r ,p, stderr = linregress(x, y)
    y = a * x + b
    
    # x = np.linspace(0,7,8)
    
    plt.plot(x, y, 'r', label='Y = aX + b')
    
    print("\na: {:.4f}".format(a))
    print("\nb: {:.4f}".format(b))
    print("\nR Sqaured: {:.4f}".format(r**2))
    
    
    sns.scatterplot(data=dataset1, x = 'petal_length', y = 'sepal_length')
    plt.show()
    

    And you will receive the following output:

    Code Output