I have searched S/O but I couldn't find a answer for this.
When I try to plot a distribution plot using seaborn I am getting a futurewarning. I was wondering what could be the issue here.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
% matplotlib inline
from sklearn import datasets
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['class'] = iris.target
df['species'] = df['class'].map({idx:s for idx, s in enumerate(iris.target_names)})
fig, ((ax1,ax2),(ax3,ax4))= plt.subplots(2,2, figsize =(13,9))
sns.distplot(a = df.iloc[:,0], ax=ax1)
sns.distplot(a = df.iloc[:,1], ax=ax2)
sns.distplot(a = df.iloc[:,2], ax=ax3)
sns.distplot(a = df.iloc[:,3], ax=ax4)
plt.show()
This is the warning:
C:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py:1713:
FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated;
use `arr[tuple(seq)]` instead of `arr[seq]`.
In the future this will be interpreted as an array index, `arr[np.array(seq)]`,
which will result either in an error or a different result.
return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval
Any help? You can run the above code. You'll get the warning.
Pandas : 0.23.4
, seaborn : 0.9.0
, matplotlib : 2.2.3
, scipy : 1.1.0
, numpy: 1.15.0'
I came across the same warning. I updated scipy,pandas and numpy. I still get it.I get it when i use
seaborn.pairplot
with kde, which underneath usesseaborn.kdeplot
.If you want to get rid off the warning you can use warnings library. Ex:
A fuller traceback would be nice. My guess is that
seaborn.distplot
is usingscipy.stats
to calculate something. The error occurs inSo in this last line, the list
indexer
is used to slicesorted
.Using a list of slices works, but the plan is to depreciate in the future. Indexes that involve several dimensions are supposed to be tuples. The use of lists in the context is an older style that is being phased out.
So the
scipy
developers need to fix this. This isn't something end users should have to deal with. But for now, don't worry about thefuturewarning
. It doesn't affect the calculations or plotting. There is a way of suppressing future warnings, but I don't know it off hand.FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated use `arr[tuple(seq)]` instead of `arr[seq]`
For
python>=3.7
you need to upgrade yourscipy>=1.2
.I was running seaborn.regplot, and got rid of the warning by upgrading scipy 1.2 as NetworkMeister suggested.
If you still get warnings in other seaborn plots, you can run the following beforehand. This is helpful in Jupyter Notebook because the warnings kind of make the report look bad even if your plots are great.