seaborn绘图

  • 导入模块
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

1.关系型绘图

  • 1.先读取文件
"""
total_bill:总金额
tip:小费
sex: 性别
smoker:是否允许吸烟
day: 周几
time: 午餐 晚餐
size: 几个
"""
tips = pd.read_csv('tips.csv')
tips.head()

在这里插入图片描述

1.relplot散点图建立简单使用的介绍

  • 总金额和小费的关系 —>散点图
  • 如果调用 replot 的时候报错,请升级saeborn的版本,如果seaborn升级不上去先升级 numpy
pip install -U seaborn
"""
需求:总金额和小费的关系 --->散点图
结果:正相关
"""
sns.relplot(x="total_bill",y="tip",data=tips)

在这里插入图片描述

2.relplot下 hue 使用的介绍

  • 观察周几出去吃饭人比较多
  • 把不同类别的特征,放在一个图表里面,用不同颜色的点标记出来
  • 加关键词 hue="day"
"""
需求:观察周几出去吃饭人比较多
"""
sns.relplot(x="total_bill",y="tip",
data=tips,hue="day")

在这里插入图片描述

3.relplot下 col 使用的介绍

  • 两个子图 对比午餐和晚餐人数
  • 把不同类别的特征,放在几个图表里面
  • 加关键词 col="time"
"""
需求:两个子图  对比午餐和晚餐人数
"""
sns.relplot(x="total_bill",y="tip",data=tips,
col="time")

在这里插入图片描述

4.relplot下 col, row一起使用的介绍

  • 了解买单是男性还女性
  • 早上买早餐男性,中午买午餐男性,早上买早餐女性,中午买午餐女性,分成四个特征的子图
  • 加关键词 col=“time”,row="sex"
"""
需求:了解买单是男性还女性
"""
sns.relplot(x="total_bill",y="tip",data=tips,
col="time",row="sex")

在这里插入图片描述

5.relplot下 col_wrap, size的介绍

  • col_wrap:控制列数,size:点的大小
sns.relplot(x="total_bill",y="tip",data=tips,
col="time",col_wrap=1,size="size")

在这里插入图片描述

5.relplot下 kind,ci,style的介绍 -->折线图

  • 了解信号值和时间点的变化关系 —> 折线图
  • kind参数:指定图表类型,默认散点图 scatter
"""
subject:主题
timepoint:时间点
event:事件
region:区域
signal:信号
"""
fmri = pd.read_csv('./seaborn-data-master/fmri.csv')
fmri.head()

在这里插入图片描述

  • kind=“line” 选择这个种类绘制折线图, 这个线是很多点的均值(一条竖线上很多点组成)阴影 —置信区间(不加这个ci参数会有阴影) ci = None 不显示,style:不同的线不同的形态
sns.relplot(x="timepoint",y="signal",data=fmri,
kind="line",ci=None,hue="region",col="event",
style="region")

在这里插入图片描述

6.lineplot和relplot区别

  • 1.lineplot 没有kind
    2.lineplot 没有col参数
sns.lineplot(x="timepoint",y="signal",data=fmri)

在这里插入图片描述

7.关系型绘图的数据集

2.分类型绘图

1.catplot分类散点图简单使用的介绍

  • 导入信息
tips = pd.read_csv('tips.csv')
tips.head()
sns.catplot(x="day",y="total_bill",data=tips)
# kind = "strip"
sns.stripplot(x="day",y="total_bill",data=tips)

在这里插入图片描述

2.分簇散点图简单使用的介绍

  • 缺点:数据量巨大 不适用
  • 以上参数方法和关系型绘图一致
sns.catplot(x="day",y="total_bill",data=tips,kind='swarm')

sns.swarmplot(x="day",y="total_bill",data=tips)

在这里插入图片描述

3.分类分布图 ---- 箱线图

sns.boxplot(x="day",y="total_bill",data=tips)

在这里插入图片描述

4.分类分布图 ---- 提琴箱线图

sns.violinplot(x="day",y="total_bill",data=tips)

在这里插入图片描述

5.分类统计图 ---- 柱形图

  • 黑色的线代表 置信区间
sns.catplot(x="day",y="total_bill",data=tips,kind='bar',estimator=sum)

sns.barplot(x="day",y="total_bill",data=tips,estimator=sum)
  • estimator=sum 这一天收入一共多少
    在这里插入图片描述

6.舱位与营救男女的关系 ---- 点线图

  • 导入泰坦尼克号的信息
titanic = pd.read_csv("titanic.csv")
titanic.head()
ax = sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")
ax.figure.set_size_inches(16,9)



plt.figure(figsize=(16,9))
sns.pointplot(x="sex",y="survived",data=titanic,hue="class")

在这里插入图片描述

3.分布型绘图

1.distplot分布型图表简单使用的介绍

  • 导入信息
titanic = pd.read_csv("titanic.csv")
titanic.head()
age_titanic= titanic[~np.isnan(titanic['age'])]
age_titanic.info()
  • kde : 是否展示kde曲线
    bins : 指定组数
    rug : 越密集表示数据集中
    hist : 是否显示直方图
sns.distplot(age_titanic['age'],bins=30,hist=True)

在这里插入图片描述

2.二变量分布图表

  • kind=“hex” 六边形的点
    gridsize 设置点的大小
    height 图形大小 20*20
    ratio 设置主图跟副图之间的比例
    space 设置主图跟副图的间距
sns.jointplot(x="total_bill",y="tip",
data=tips,kind="hex",gridsize=15,height=5,
ratio=3,space=0,marginal_kws={"rug":True,"kde":True},
color="red")

在这里插入图片描述

3.观察4个变量两两之间的关系–pairplot

  • 导入信息
iris = pd.read_csv("iris.csv")
iris.head()
sns.pairplot(iris,hue='species')

在这里插入图片描述

4.关系矩阵图

  • 特征工程 减少特征数量
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn import svm

from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler


# SVR  LinearSVR    回归
# SVC  LinearSVC    分类

# 流程

# 1. 获取数据

data = pd.read_csv(r'data(1).csv',encoding="unicode_escape")


# 2. 数据探索
# print(data.columns)
# print(data.describe())

# 3. 数据清洗

# 特征分为3组
features_mean = list(data.columns[2:12])      # 平均值数据
features_se = list(data.columns[12:22])      # 标准差数据
features_worst = list(data.columns[22:32])      # 最大值

# ID列删除
data.drop('id',axis=1,inplace=True)
# 将B良性替换为0,M恶性替换为1
data['diagnosis'] = data['diagnosis'].map({'M':1,'B':0})

print(data.head(5))

# 4. 特征选择
# 目的  降维
sns.countplot(data['diagnosis'],label='Count')
plt.show()

# 热力图features_mean 字段之间的相关性
corr = data[features_mean].corr()
plt.figure(figsize=(14,14))

sns.heatmap(corr,annot=True)
plt.show()

# 特征选择  平均值这组    10-->6
features_remain = ['radius_mean', 'texture_mean', 'smoothness_mean', 'compactness_mean', 'symmetry_mean',
                   'fractal_dimension_mean']
  • 热力图features_mean 字段之间的相关性
    在这里插入图片描述
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最低调的奢华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值