代码之家  ›  专栏  ›  技术社区  ›  Rachel

与seaborn(ndim)有关的问题

  •  0
  • Rachel  · 技术社区  · 7 年前

    我在用 seaborn 绘制一个非常简单的数据集。以下是我的工作:

    import seaborn as sns
    import pandas as pd
    
    df = pd.read_excel('myfile.xlsx')
    
    sns.set(style="white")
    
    g = sns.PairGrid(df, diag_sharey=False)
    g.map_lower(sns.kdeplot)
    g.map_upper(sns.scatterplot)
    g.map_diag(sns.kdeplot, lw=3)
    

    AttributeError: 'NoneType' object has no attribute 'ndim' . 奇怪的是,这个情节是分部分绘制的(见下文)。

    enter image description here

    你知道为什么会这样吗?我能做些什么来解决这个问题?

    编辑:

    数据帧具有以下属性:

    plan_change          int64
    user_login         float64
    new_act_ratio      float64
    on_time              int64
    

    很遗憾,我无法上载数据集。不过,我可以说,绘制其他海生图形工作得很好。

    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-16-2dbc61abd2bd> in <module>()
          3 g = sns.PairGrid(df, diag_sharey=False)
          4 g.map_lower(sns.kdeplot)
    ----> 5 g.map_upper(sns.scatterplot)
          6 g.map_diag(sns.kdeplot, lw=3)
          7 
    
    /anaconda/lib/python3.5/site-packages/seaborn/axisgrid.py in map_upper(self, func, **kwargs)
       1488                 color = self.palette[k] if kw_color is None else kw_color
       1489                 func(data_k[x_var], data_k[y_var], label=label_k,
    -> 1490                      color=color, **kwargs)
       1491 
       1492             self._clean_axis(ax)
    
    /anaconda/lib/python3.5/site-packages/seaborn/relational.py in scatterplot(x, y, hue, style, size, data, palette, hue_order, hue_norm, sizes, size_order, size_norm, markers, style_order, x_bins, y_bins, units, estimator, ci, n_boot, alpha, x_jitter, y_jitter, legend, ax, **kwargs)
       1333         x_bins=x_bins, y_bins=y_bins,
       1334         estimator=estimator, ci=ci, n_boot=n_boot,
    -> 1335         alpha=alpha, x_jitter=x_jitter, y_jitter=y_jitter, legend=legend,
       1336     )
       1337 
    
    /anaconda/lib/python3.5/site-packages/seaborn/relational.py in __init__(self, x, y, hue, size, style, data, palette, hue_order, hue_norm, sizes, size_order, size_norm, dashes, markers, style_order, x_bins, y_bins, units, estimator, ci, n_boot, alpha, x_jitter, y_jitter, legend)
        850 
        851         plot_data = self.establish_variables(
    --> 852             x, y, hue, size, style, units, data
        853         )
        854 
    
    /anaconda/lib/python3.5/site-packages/seaborn/relational.py in establish_variables(self, x, y, hue, size, style, units, data)
        155                 units=units
        156             )
    --> 157             plot_data = pd.DataFrame(plot_data)
        158 
        159         # Option 3:
    
    /anaconda/lib/python3.5/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
        264                                  dtype=dtype, copy=copy)
        265         elif isinstance(data, dict):
    --> 266             mgr = self._init_dict(data, index, columns, dtype=dtype)
        267         elif isinstance(data, ma.MaskedArray):
        268             import numpy.ma.mrecords as mrecords
    
    /anaconda/lib/python3.5/site-packages/pandas/core/frame.py in _init_dict(self, data, index, columns, dtype)
        400             arrays = [data[k] for k in keys]
        401 
    --> 402         return _arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
        403 
        404     def _init_ndarray(self, values, index, columns, dtype=None, copy=False):
    
    /anaconda/lib/python3.5/site-packages/pandas/core/frame.py in _arrays_to_mgr(arrays, arr_names, index, columns, dtype)
       5382 
       5383     # don't force copy because getting jammed in an ndarray anyway
    -> 5384     arrays = _homogenize(arrays, index, dtype)
       5385 
       5386     # from BlockManager perspective
    
    /anaconda/lib/python3.5/site-packages/pandas/core/frame.py in _homogenize(data, index, dtype)
       5693                 v = lib.fast_multiget(v, oindex.values, default=NA)
       5694             v = _sanitize_array(v, index, dtype=dtype, copy=False,
    -> 5695                                 raise_cast_failure=False)
       5696 
       5697         homogenized.append(v)
    
    /anaconda/lib/python3.5/site-packages/pandas/core/series.py in _sanitize_array(data, index, dtype, copy, raise_cast_failure)
       2917 
       2918     # scalar like
    -> 2919     if subarr.ndim == 0:
       2920         if isinstance(data, list):  # pragma: no cover
       2921             subarr = np.array(data, dtype=object)
    
    AttributeError: 'NoneType' object has no attribute 'ndim'
    
    0 回复  |  直到 7 年前