您现在的位置是:首页 >学无止境 >AI机器学习-Seaborn 数据可视化库网站首页学无止境

AI机器学习-Seaborn 数据可视化库

有欣欣在就好 2025-02-12 12:01:02
简介AI机器学习-Seaborn 数据可视化库

Seaborn 数据可视化库

一、介绍

Seaborn 是一个基于 Matplotlib 的 Python 数据可视化库,它专注于统计图表的绘制。相比于原生的 Matplotlib,Seaborn 提供了更高级的接口,使得创建具有吸引力的统计图形变得更加容易。它内置了许多预设的主题和调色板,能够快速生成美观、专业的数据可视化图表,帮助用户更直观地理解数据中的统计关系,在商业数据分析、市场调研等多个领域有广泛应用。

二、安装与使用

安装

使用 pip 这个 Python 包管理工具可以轻松安装 Seaborn,在命令行中执行以下命令:

pip install seaborn

使用

在 Python 脚本中,我们需要导入 Seaborn 库,通常将其重命名为 sns 以方便使用,同时还会导入 pandas 用于数据处理,导入 matplotlib.pyplot 用于显示图形。以下是导入库的代码:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体,否则控制台报找不到字体错误
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

三、常用图表类型

1. 散点图

使用场景

散点图用于显示两个变量之间的关系,非常适合探索数据中的相关性。

在商业场景中,比如分析广告投入与产品销售额之间的关系,通过散点图可以直观地看出两者是否存在正相关、负相关或者无明显关联。

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 模拟商业数据:广告投入与产品销售额
data = {
    'Advertising_Spend': [1000, 2000, 1500, 3000, 2500, 3500, 4000, 4500, 5000, 5500],
    'Sales': [20000, 35000, 28000, 50000, 42000, 55000, 60000, 65000, 70000, 75000]
}
df = pd.DataFrame(data)

# 绘制散点图
sns.scatterplot(x='Advertising_Spend', y='Sales', data=df)
plt.title('广告投入与产品销售额的关系')
plt.xlabel('广告投入(元)')
plt.ylabel('产品销售额(元)')
plt.show()
sns.scatterplot() 常用参数详细解释
  • x:指定作为 x 轴数据的列名。

  • y:指定作为 y 轴数据的列名。

  • data:数据源,通常是一个 DataFrame 对象。Seaborn 会从这个 DataFrame 中根据 xy 指定的列名获取数据。

    x 轴的数据取自 df 中的 ‘Advertising_Spend’ 列,表示广告投入金额。

    y 轴的数据取自 df 中的 ‘Sales’ 列,表示产品销售额。

  • hue:根据某一列的值对点进行颜色编码。例如,如果数据集中还有一个 ‘Region’ 列表示销售地区,设置 hue=‘Region’,不同地区的数据点就会用不同的颜色表示,方便我们区分不同地区广告投入与销售额的关系。

  • style:根据某一列的值对点的形状进行编码。比如设置 style=‘Product_Type’,不同产品类型的数据点会以不同的形状显示,进一步增强数据的区分度。

2. 折线图

使用场景

折线图用于显示数据随时间或其他连续变量的变化趋势,特别适合时间序列数据。

在商业中,常见的应用是展示公司的月度销售额、股票价格的每日走势等,帮助分析业务的发展趋势。

代码示例

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 模拟商业数据:某公司每月销售额
data = {
    'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    'Sales': [12000, 13000, 15000, 14000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000]
}
df = pd.DataFrame(data)

# 绘制折线图
sns.lineplot(x='Month', y='Sales', data=df)
plt.title('某公司月度销售额走势')
plt.xlabel('月份')
plt.ylabel('销售额(元)')
plt.show()
sns.lineplot() 常用参数详细解释
  • x:指定作为 x 轴数据的列名,代表时间或其他连续变量。x 轴是 ‘Month’ 列,表示月份。
  • y:指定作为 y 轴数据的列名,代表随 x 变化的数值。这里 y 轴是 ‘Sales’ 列,表示销售额。
  • data:数据源 DataFrame
  • hue:根据某一列的值对线进行颜色编码。比如有多个产品线的数据,设置 hue=‘Product_Line’,不同产品线的销售额趋势线就会用不同颜色显示,便于比较各产品线的销售情况。
  • style:根据某一列的值对线的样式进行编码。例如设置 style=‘Region’,不同地区的销售额趋势线会以不同的线条样式(如实线、虚线等)展示。

3. 柱状图

使用场景

柱状图用于比较不同类别的数据分布,适合分类数据的可视化。

在商业场景中,可用于比较不同部门的业绩、不同产品的销量等。

代码示例

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 模拟商业数据:不同产品的季度销量
data = {
    'Product': ['Product A', 'Product B', 'Product C', 'Product D'],
    'Q1_Sales': [100, 150, 200, 120],
    'Q2_Sales': [120, 180, 220, 150],
    'Q3_Sales': [130, 200, 250, 160],
    'Q4_Sales': [150, 220, 280, 180]
}
df = pd.DataFrame(data)

# 转换数据格式以适应柱状图绘制
melted_df = pd.melt(df, id_vars=['Product'], var_name='Quarter', value_name='Sales')

# 绘制柱状图
sns.barplot(x='Product', y='Sales', hue='Quarter', data=melted_df)
plt.title('不同产品各季度销量对比')
plt.xlabel('产品')
plt.ylabel('销量')
plt.show()
sns.barplot() 常用参数详细解释
  • x:指定作为 x 轴数据的列名,通常是分类变量。x** 轴是 ‘Product’ 列,表示不同的产品。
  • y:指定作为 y 轴数据的列名,代表要比较的数值。这里 y 轴是 ‘Sales’ 列,表示销量。
  • data:数据源 DataFrame
  • hue:根据某一列的值对柱进行颜色编码。在上述示例中,hue=‘Quarter’,不同季度的柱子会用不同颜色表示,方便比较同一产品在不同季度的销量。

4. 箱线图

使用场景

箱线图用于显示数据的分布情况,特别是中位数、四分位数和异常值,适合数据分布分析。在商业中,可用于分析不同地区客户的消费金额分布、不同部门员工的绩效评分分布等。

代码示例

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 模拟商业数据:不同地区客户的消费金额
data = {
    'Region': ['East', 'East', 'West', 'West', 'North', 'North', 'South', 'South'],
    'Spending': [100, 150, 200, 250, 300, 350, 400, 450]
}
df = pd.DataFrame(data)

# 绘制箱线图
sns.boxplot(x='Region', y='Spending', data=df)
plt.title('不同地区客户消费金额分布')
plt.xlabel('地区')
plt.ylabel('消费金额(元)')
plt.show()
sns.boxplot() 常用参数详细解释
  • x:指定作为 x 轴数据的列名,通常是分类变量。这里 x 轴是 ‘Region’ 列,表示不同的地区。
  • y:指定作为 y 轴数据的列名,代表要分析分布的数值。y 轴是 ‘Spending’ 列,表示客户消费金额。
  • data:数据源 DataFrame
  • hue:根据某一列的值对箱线进行颜色编码。例如,如果数据集中还有一个 ‘Customer_Type’ 列,设置 hue=‘Customer_Type’,不同客户类型在各地区的消费金额箱线图会用不同颜色区分。

5. 热力图

使用场景

热力图用于显示矩阵数据中的数值大小,适合相关性分析或矩阵数据的可视化。在商业中,可用于分析不同产品之间的销售相关性、不同时间段不同地区的销售热度等。

代码示例

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 模拟商业数据:不同产品在不同月份的销售相关性
products = ['Product A', 'Product B', 'Product C', 'Product D']
months = ['Jan', 'Feb', 'Mar', 'Apr']
data = np.random.rand(4, 4)
df = pd.DataFrame(data, index=products, columns=months)

# 绘制热力图
sns.heatmap(df, annot=True, cmap='coolwarm')
plt.title('不同产品在不同月份的销售相关性热力图')
plt.xlabel('月份')
plt.ylabel('产品')
plt.show()
sns.heatmap() 常用参数详细解释
  • data:数据源矩阵,通常是一个二维的 DataFramenumpy 数组。在上述示例中,data 是不同产品在不同月份的销售相关性矩阵。
  • annot:是否在热力图上显示数值。设置为 True 时,每个单元格会显示对应的数值,方便查看具体数据。
  • cmap:颜色映射,用于指定热力图的颜色方案。‘coolwarm’ 是一种常用的颜色映射,数值小的区域显示为蓝色,数值大的区域显示为红色。
  • linewidths:单元格之间的线宽。可以通过调整这个参数来控制单元格之间的分隔线粗细。

6. 读取 CSV 文件进行可视化

使用场景

在实际商业分析中,数据通常存储在 CSV 文件中。我们可以使用 Seaborn 读取 CSV 文件并进行可视化分析。

代码示例

假设我们有一个名为 sales_data.csv 的文件,包含 ‘Advertising_Spend’‘Sales’‘Product_Category’ 三列数据。

生成sales_data.csv文件代码

import pandas as pd
import numpy as np

# 定义产品类别
product_categories = ['Category A', 'Category B', 'Category C']

# 生成模拟数据
np.random.seed(42)
num_rows = 100
data = {
    'Advertising_Spend': np.random.randint(100, 1000, num_rows),
    'Sales': np.random.randint(1000, 5000, num_rows),
    'Product_Category': np.random.choice(product_categories, num_rows)
}

# 创建 DataFrame
df = pd.DataFrame(data)

# 将 DataFrame 保存为 CSV 文件
df.to_csv('sales_data.csv', index=False)

读取 sales_data.csv 的文件
在这里插入图片描述

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
#设置字体
from pylab import mpl

# 设置显示中文字体,根据电脑或者下载字体diff文件设置
mpl.rcParams["font.sans-serif"] = ["SimSong"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 读取 CSV 文件
df = pd.read_csv('sales_data.csv')

# 绘制散点图,并根据 Product_Category 列进行颜色编码
sns.scatterplot(x='Advertising_Spend', y='Sales', hue='Product_Category', data=df)
plt.title('CSV 数据中广告投入与销售额关系(按产品类别区分)')
plt.xlabel('广告投入(元)')
plt.ylabel('销售额(元)')
plt.show()

通过上述代码示例,我们可以看到 Seaborn 在商业数据可视化方面的强大功能,能够帮助我们更直观地理解数据、发现数据中的规律和问题。

喜欢那就别犹豫啦,赶紧点赞👍 收藏🌟 加关注👀 吧!后续仍然会持续分享相关内容哦!!!!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。