import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
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的介绍
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)
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
data = pd.read_csv(r'data(1).csv',encoding="unicode_escape")
features_mean = list(data.columns[2:12])
features_se = list(data.columns[12:22])
features_worst = list(data.columns[22:32])
data.drop('id',axis=1,inplace=True)
data['diagnosis'] = data['diagnosis'].map({'M':1,'B':0})
print(data.head(5))
sns.countplot(data['diagnosis'],label='Count')
plt.show()
corr = data[features_mean].corr()
plt.figure(figsize=(14,14))
sns.heatmap(corr,annot=True)
plt.show()
features_remain = ['radius_mean', 'texture_mean', 'smoothness_mean', 'compactness_mean', 'symmetry_mean',
'fractal_dimension_mean']
- 热力图features_mean 字段之间的相关性