您现在的位置是:首页 >学无止境 >AI机器学习-Seaborn 数据可视化库网站首页学无止境
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 中根据 x 和 y 指定的列名获取数据。
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:数据源矩阵,通常是一个二维的 DataFrame 或 numpy 数组。在上述示例中,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 在商业数据可视化方面的强大功能,能够帮助我们更直观地理解数据、发现数据中的规律和问题。
喜欢那就别犹豫啦,赶紧点赞👍 收藏🌟 加关注👀 吧!后续仍然会持续分享相关内容哦!!!!