微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Seaborn pairplot和NaN值

我试图理解为什么会失败,即使文档说:

dropna : boolean, optional
Drop missing values from the data before plotting.

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
sns.__version__
# '0.7.dev'
# generate an example DataFrame
a = pd.DataFrame(data={
    'a': np.random.normal(size=(100,)),
    'b': np.random.lognormal(size=(100,)),
    'c': np.random.exponential(size=(100,))})
sns.pairplot(a) # this works as expected
# snip
b = a.copy()
b.iloc[5,2] = np.nan # replace one value in col 'c' by a NaN
sns.pairplot(b) # this fails with error 
                # "AttributeError: max must be larger than min in range parameter."
                # in histogram(a, bins, range, normed, weights, density)"
> sns.pairplot(b, dropna=True) # same error as above

解决方法:

当你直接使用数据时,即

sns.pairplot(b) #Same as sns.pairplot(b, x_vars=['a','b','c'] , y_vars=['a','b','c'],dropna=True)

您正在绘制DataFrame中的所有列,然后确保所有列中的行数相同.

sns.pairplot(b, x_vars=['a','c'] , y_vars=['a','b','c'],dropna=True)

在这种情况下,它工作正常,但图表中将有一个微小的差异,以删除’NaN值’.

So, If you want to plot with the whole Data then :-

>必须使用“fillna()”替换空值,
>或者必须删除包含’nan values’的整行

b = b.drop(b.index[5])
sns.pairplot(b)

pairplot for dropped values

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐