一、散点图
用于发现两个数值变量之间的关系,例如正向的线性关系或者趋势性的非线性关系
通过matplotlib模块中的scatter函数
# 读入数据
iris = pd.read_csv(r'F:\iris.csv')
iris.head()
以iris数据集为例,探究花瓣宽度和长度之间关系
# 绘制散点图
plt.scatter(x = iris.Petal_Width, # 指定散点图的x轴数据
y = iris.Petal_Length, # 指定散点图的y轴数据
color = 'steelblue' # 指定散点图中点的颜色
)
# 添加x轴和y轴标签
plt.xlabel('花瓣宽度')
plt.ylabel('花瓣长度')
# 添加标题
plt.title('鸢尾花的花瓣宽度与长度关系')
# 显示图形
plt.show()
二、气泡图
用于展现三个数值变量之间的关系,通过第三个数值型变量控制每个散点的大小,点越大,第三维数值越大
通过matplotlib模块中的scatter函数
# 读取数据
Prod_Category = pd.read_excel(r'F:\SuperMarket.xlsx')
Prod_Category.head()
以某超市的商品类别销售数据为例
# 将利润率标准化到[0,1]之间(因为利润率中有负数),然后加上微小的数值0.001
range_diff = Prod_Category.Profit_Ratio.max()-Prod_Category.Profit_Ratio.min()
Prod_Category['std_ratio'] = (Prod_Category.Profit_Ratio-Prod_Category.Profit_Ratio.min())/range_diff + 0.001
# 绘制办公用品的气泡图
plt.scatter(x = Prod_Category.Sales[Prod_Category.Category == '办公用品'],
y = Prod_Category.Profit[Prod_Category.Category == '办公用品'],
s = Prod_Category.std_ratio[Prod_Category.Category == '办公用品']*1000,
color = 'steelblue', label = '办公用品', alpha = 0.6
)
# 绘制技术产品的气泡图
plt.scatter(x = Prod_Category.Sales[Prod_Category.Category == '技术产品'],
y = Prod_Category.Profit[Prod_Category.Category == '技术产品'],
s = Prod_Category.std_ratio[Prod_Category.Category == '技术产品']*1000,
color = 'indianred' , label = '技术产品', alpha = 0.6
)
# 绘制家具产品的气泡图
plt.scatter(x = Prod_Category.Sales[Prod_Category.Category == '家具产品'],
y = Prod_Category.Profit[Prod_Category.Category == '家具产品'],
s = Prod_Category.std_ratio[Prod_Category.Category == '家具产品']*1000,
color = 'black' , label = '家具产品', alpha = 0.6
)
# 添加x轴和y轴标签
plt.xlabel('销售额')
plt.ylabel('利润')
# 添加标题
plt.title('销售额、利润及利润率的气泡图')
# 添加图例
plt.legend()
# 显示图形
plt.show()
关键参数是s,即散点图中点的大小。如果s参数对应的变量值小于等于0,则对应的气泡点是无法绘制出来的,可以先将该变量标准化为[0,1],再加上一个非常小的值,如0.001,再对s参数扩大500倍才可以突显气泡的大小。
办公用品和家具产品的利润率波动比较大,因为这两类圆点大小不均
三、热力图/交叉填充表
即实现列联表的可视化,通过图形的方式展现两个离散变量之间的组合关系
通过seaborn模块中的heatmap函数
# 读取数据
Sales = pd.read_excel(r'F:\Sales.xlsx')
Sales.head()
以某服装店的交易数据为例
# 根据交易日期,衍生出年份和月份字段
Sales['year'] = Sales.Date.dt.year
Sales['month'] = Sales.Date.dt.month
# 统计每年各月份的销售总额
Summary = Sales.pivot_table(index = 'month', columns = 'year', values = 'Sales', aggfunc = np.sum)
Summary
通过肉眼无法发现销售业绩在各月份中的差异,绘制热力图
# 绘制热力图
sns.heatmap(data = Summary, # 指定绘图数据
cmap = 'PuBuGn', # 指定填充色
linewidths = .1, # 设置每个单元格边框的宽度
annot = True, # 在每个单元上显示数值
fmt = '.1e' # 以科学计算法显示数据
)
#添加标题
plt.title('每年各月份销售总额热力图')
# 显示图形
plt.show()
每个单元格颜色的深浅代表数值的高低,通过颜色判别每年各月份销售情况的好坏