文章目录
8.1 一般绘图:factorplot 和 FacetGrid
8.1.1 根据2个维度变量绘图
8.1.2 可以按照第3个维度绘制不同的关系图
8.1.3 可以从折线图切成柱状图
8.1.4 散点图
8.1.5 绘图的同时还做回归
8.1.6 kde密度绘图
8.1.7 按照2个维度展开画图
8.2 pairplot and PairGrid
8.2.1 多个维度两两组合绘图
8.2.2 组合绘图的时候顺便回归一下
8.3 jointplot and JointGrid
8.3.1 联合绘图
8.3.2 联合绘图(加回归)
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()
来自七月在线数据挖掘算法
本文分享自微信公众号 - 五角钱的程序员(xianglin965)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4594538/blog/4441098