2.8_seaborn_visualizationSeaborn与可视化


Seaborn与可视化
Seaborn是斯坦福大学出的一个非常好用的可视化包,这一节我们一起来看看这个包和相关的一些用法。

# * coding:utf-8_*_
# 作者     :XiangLin
# 创建时间 :12/02/2020 19:45
# 文件     :2-8_seaborn_visualization.py
# IDE      :PyCharm
import numpy as np
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use("bmh")
plt.rc('font', family='SimHei', size=13) #显示中文
pd.set_option('display.max_columns',1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth',1000)

Populating the interactive namespace from numpy and matplotlib
先用pandas读进来一份数据

names = [
    'mpg'
    , 'cylinders'
    , 'displacement'
    , 'horsepower'
    , 'weight'
    , 'acceleration'
    , 'model_year'
    , 'origin'
    , 'car_name'
]
df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data',sep='\s+',names=names)
print(df.head())
print(df.info())

df['maker'] = df['car_name'].map(lambda x: x.split()[0]) #将car_name第一个字符串切割出来
df['origin'] = df['origin'].map({1: 'America', 2: 'Europe', 3: 'Asia'})
df = df.applymap(lambda x:np.nan if x== '?' else x).dropna()
df['horsepower'] = df.horsepower.astype(float)
print(df.head())
输出:
mpg  cylinders  displacement horsepower  weight  acceleration  model_year  origin                   car_name
0  18.0          8         307.0      130.0  3504.0          12.0          70       1  chevrolet chevelle malibu
1  15.0          8         350.0      165.0  3693.0          11.5          70       1          buick skylark 320
2  18.0          8         318.0      150.0  3436.0          11.0          70       1         plymouth satellite
3  16.0          8         304.0      150.0  3433.0          12.0          70       1              amc rebel sst
4  17.0          8         302.0      140.0  3449.0          10.5          70       1                ford torino
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 398 entries, 0 to 397
Data columns (total 9 columns):
mpg             398 non-null float64
cylinders       398 non-null int64
displacement    398 non-null float64
horsepower      398 non-null object
weight          398 non-null float64
acceleration    398 non-null float64
model_year      398 non-null int64
origin          398 non-null int64
car_name        398 non-null object
dtypes: float64(4), int64(3), object(2)
memory usage: 28.1+ KB
None
    mpg  cylinders  displacement  horsepower  weight  acceleration  model_year   origin                   car_name      maker
0  18.0          8         307.0       130.0  3504.0          12.0          70  America  chevrolet chevelle malibu  chevrolet
1  15.0          8         350.0       165.0  3693.0          11.5          70  America          buick skylark 320      buick
2  18.0          8         318.0       150.0  3436.0          11.0          70  America         plymouth satellite   plymouth
3  16.0          8         304.0       150.0  3433.0          12.0          70  America              amc rebel sst        amc
4  17.0          8         302.0       140.0  3449.0          10.5          70  America                ford torino       ford

8.1 一般绘图:factorplot 和 FacetGrid

8.1.1 根据2个维度变量绘图

画出model_year和mpg的关系图

# plt.figure(figsize=(16, 30))
sns.factorplot(figsize=(10,6),data=df,x='model_year',y='mpg')
plt.show()

在这里插入图片描述

8.1.2 可以按照第3个维度绘制不同的关系图

sns.factorplot(data=df,x='model_year',y='mpg',col = 'origin')
plt.show()

在这里插入图片描述

8.1.3 可以从折线图切成柱状图

sns.factorplot(data=df, x="model_year", y="mpg", col="origin",kind='bar') #折线图转化为柱状图
plt.show()
print(df.head())
sns.factorplot('model_year',data=df,col="origin",kind = 'count')
plt.show()
sns.factorplot("cylinders",data=df, col="origin",kind= 'count') #统计各个国家中cylinders的个数
plt.show()
g = sns.FacetGrid(df,col='origin')
g.map(sns.distplot,"mpg")
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.1.4 散点图

g = sns.FacetGrid(df,col='origin')
g.map(plt.scatter,"horsepower","mpg")
plt.show()

在这里插入图片描述

8.1.5 绘图的同时还做回归

g = sns.FacetGrid(df,col='origin')
g.map(sns.regplot,"horsepower", "mpg")
plt.xlim(0, 250)
plt.ylim(0, 60)
plt.show()

在这里插入图片描述

8.1.6 kde密度绘图

df['tons'] = (df.weight/2000).astype(int)
g = sns.FacetGrid(df,col='origin',row="tons")
g.map(sns.kdeplot,"horsepower", "mpg")
plt.xlim(0, 250)
plt.ylim(0, 60)
plt.show()

在这里插入图片描述

8.1.7 按照2个维度展开画图

g = sns.FacetGrid(df,col='origin',row="tons")
g.map(plt.hist,'mpg',bins = np.linspace(0,50,11))
plt.show()

在这里插入图片描述

8.2 pairplot and PairGrid

8.2.1 多个维度两两组合绘图

g = sns.pairplot(df[["mpg", "horsepower", "weight", "origin"]],hue='origin',diag_kind="hist")
for ax in g.axes.flat:
    plt.setp(ax.get_xticklabels(),rotation=45)
plt.show()

在这里插入图片描述

8.2.2 组合绘图的时候顺便回归一下

g = sns.pairplot(df[["mpg", "horsepower", "weight", "origin"]],hue='origin')
g.map_upper(sns.regplot)
g.map_lower(sns.residplot)
g.map_diag(plt.hist)
for ax in g.axes.flat:
    plt.setp(ax.get_xticklabels(),rotation=45)
g.add_legend()
g.set(alpha=0.5)
plt.show()

在这里插入图片描述

8.3 jointplot and JointGrid

8.3.1 联合绘图

使用jointplot就能作出联合分布图形, 即, x总体和y总体的笛卡尔积分布
jointplot还是非常实用的, 对于两个连续型变量的分布情况, 集中趋势能非常简单的给出.

sns.jointplot("mpg", "horsepower", data=df, kind='kde')
plt.show()

在这里插入图片描述

8.3.2 联合绘图(加回归)

sns.jointplot("horsepower", "mpg", data=df, kind="reg")
plt.show()

g = sns.JointGrid(x="horsepower", y="mpg", data=df)
g.plot_joint(sns.regplot, order=2)
g.plot_marginals(sns.distplot)
plt.show()

在这里插入图片描述
在这里插入图片描述
来自七月在线数据挖掘算法
向林
2020年2月15日于重庆城口
好好学习,天天向上,终有所获

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值