10.2 sns 绘图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.2 sns 绘图相关的知识,希望对你有一定的参考价值。
参考技术A seaborn 常用 基于matplotlib, 解决分组问题。【横轴,纵轴,数据集】往往画的聚合指标图像
barplot() 条形图
scatterplot() 散点图
swarmplot()
sns.violinplot() 琴图
sns.countplot() 统计条形图
sns.pairplot() 成对图像
sns.heatmap() 热力图 用颜色深浅表达大小
sns.boxplot() 箱线图
sns.displot()直方图
数据: tips = sns.load_dataset('tips')
tips.groupby('sex')['total_bill'].mean()
sns.boxplot(x='sex',y='total_bill',data=tips) 横轴,纵轴,数据。
sns.distplot(tips.total_bill)
连续 VS 连续
离散 VS 连续
sns的hue参数:分组因子 hue_order:分组的顺序
例:股票随着时间的变化
人随着每次考试的分数的变化
比较大小
例:在某一时期内两个同学的成绩谁高谁低。(通过高矮或宽窄表示大小)
组与组数据比较大小
算出来的,均值加减标准差得到置信区间。
两个维度表达对应关系(映射关系,函数关系)
例:经纬度
所有样本点自变量和因变量的关系
增加1个维度,气泡的大小,成为气泡图。
描述数据分布。(可看数据异常)
例:看一组数据是否符合正态分布
原理:数据按大小划分几个区域,在哪个区域加1。 分高度和宽度:宽度:数据区域,高度:落在区域里数据个数。(转换成概率称为kde图像)
IQR = Q3- Q1
upper = Q3 + 1.5IQR
bottom = Q1 + 1.5*IQR
sns.boxplot()
描述两组数据关系
注:卡方验证主要是离散数据和离散数据之间的关系
corr()关系函数,默认person系数。
矩阵的值对应两个值的关系。
极浅的点和及深的点需要注意。
使用 scikit wine 数据集制作 sns.pairplot
【中文标题】使用 scikit wine 数据集制作 sns.pairplot【英文标题】:Making a sns.pairplot using scikit wine dataset 【发布时间】:2021-11-06 12:49:44 【问题描述】:这看起来很简单,但是我在网上找不到解决方案。
我正在尝试在 Python 中创建一个 sns.pairplot。我已经下载了 wine 数据集,保留了我需要的功能,并运行了绘图。
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_wine
# Load the wine dataset
wine = datasets.load_wine()
wine = list(zip(wine.data, wine.target))
wine = load_wine()
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
wine = load_wine
data = load_wine()
df = pd.DataFrame(data.data, columns=data.feature_names)
#This is the code that should run the plot
b=sns.pairplot(df, vars = df.columns[1 :], hue = "target", height = 2.5)
但我收到此错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2894 try:
-> 2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'target'
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
<ipython-input-108-1107acc27949> in <module>
----> 1 b=sns.pairplot(df, vars = df.columns[1 :], hue = "target", height = 2.5)
2
3 plt.show()
~\anaconda3\lib\site-packages\seaborn\_decorators.py in inner_f(*args, **kwargs)
44 )
45 kwargs.update(k: arg for k, arg in zip(sig.parameters, args))
---> 46 return f(**kwargs)
47 return inner_f
48
~\anaconda3\lib\site-packages\seaborn\axisgrid.py in pairplot(data, hue, hue_order, palette, vars, x_vars, y_vars, kind, diag_kind, markers, height, aspect, corner, dropna, plot_kws, diag_kws, grid_kws, size)
1923 # Set up the PairGrid
1924 grid_kws.setdefault("diag_sharey", diag_kind == "hist")
-> 1925 grid = PairGrid(data, vars=vars, x_vars=x_vars, y_vars=y_vars, hue=hue,
1926 hue_order=hue_order, palette=palette, corner=corner,
1927 height=height, aspect=aspect, dropna=dropna, **grid_kws)
~\anaconda3\lib\site-packages\seaborn\_decorators.py in inner_f(*args, **kwargs)
44 )
45 kwargs.update(k: arg for k, arg in zip(sig.parameters, args))
---> 46 return f(**kwargs)
47 return inner_f
48
~\anaconda3\lib\site-packages\seaborn\axisgrid.py in __init__(self, data, hue, hue_order, palette, hue_kws, vars, x_vars, y_vars, corner, diag_sharey, height, aspect, layout_pad, despine, dropna, size)
1212 index=data.index)
1213 else:
-> 1214 hue_names = categorical_order(data[hue], hue_order)
1215 if dropna:
1216 # Filter NA from the list of unique hue names
~\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2900 if self.columns.nlevels > 1:
2901 return self._getitem_multilevel(key)
-> 2902 indexer = self.columns.get_loc(key)
2903 if is_integer(indexer):
2904 indexer = [indexer]
~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
-> 2897 raise KeyError(key) from err
2898
2899 if tolerance is not None:
KeyError: 'target'
链接到这个问题的解决方案:How to convert a Scikit-learn dataset to a Pandas dataset 不幸的是在这里似乎不起作用。
我还尝试了“类”而不是目标。会不会是上面的'zip'功能不正常,导致程序无法识别'target'?
提前谢谢你!
【问题讨论】:
【参考方案1】:根据您输入的内容,它的工作原理是这样的。
from sklearn.datasets import load_iris
wine = load_wine
data = load_wine()
df = pd.DataFrame(data.data, columns=data.feature_names)
#This is the code that should run the plot
b=sns.pairplot(df, vars = df.columns[1 :], height = 2.5)
问题是您想如何突出功能,为什么? 您从列表中删除酒精,因此目标根本不会对齐。 第二件事是它是功能明智的配对图而不是目标/类。 所以总而言之,我不明白你在这里要做什么
【讨论】:
以上是关于10.2 sns 绘图的主要内容,如果未能解决你的问题,请参考以下文章