You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列关联可视化为类回归图表?分析满意度与评分准确性关系

条件

我有两列1-5的评分数据:Shopping_Satisfaction(购物满意度)和Rating_Accuracy(评分准确性),相关代码如下:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

path = '/kaggle/input/amazon-consumer-behaviour-dataset/Amazon Customer Behavior Survey.csv'
df = pd.read_csv(path)
df.groupby(['Shopping_Satisfaction', 'Rating_Accuracy']).count()['age']

分组统计结果:

Shopping_Satisfaction  Rating_Accuracy
1                      1                   37
                       2                   47
                       3                   24
                       4                    6
                       5                    1
2                      1                   10
                       2                   92
                       3                   79
                       4                    9
                       5                    3
3                      1                   10
                       2                   34
                       3                  145
                       4                   18
                       5                    2
4                      1                    1
                       2                    5
                       3                   34
                       4                   21
                       5                    6
5                      2                    1
                       3                    5
                       4                    2
                       5                    9
Name: age, dtype: int64

两列的相关系数为0.514387(即51%),相关矩阵如下:

Shopping_Satisfaction   Rating_Accuracy
Shopping_Satisfaction   1.000000                0.514387
Rating_Accuracy         0.514387                1.000000
问题

需要基于上述分析回答:

  • 购物满意度越高,评分准确性也越高?
  • 或 购物满意度越高,评分准确性未必越高?

我尝试用Regression Plot(回归图)展示,但效果很差,生成的图表如下:

5    o   o   o   o   o
4    o   o   o   o   o
3    o   o   o   o   o
2    o   o   o   o   o
1    o   o   o   o   o
0    1   2   3   4   5

请问有什么解决办法?

解决方案

一、核心疑问解答

从数据和统计结果来看:

  1. 整体趋势上,购物满意度越高,评分准确性的平均水平越高:
    • 满意度为1时,评分准确性集中在1-3区间(占比88.6%),高分段(4-5)占比极低;
    • 满意度提升到5时,评分准确性集中在3-5区间(占比88.9%),低分段几乎消失;
    • 结合0.51的正相关系数,足以证明两者存在正向关联。
  2. 但个体层面存在例外:比如满意度5的用户里有准确性为2的情况,满意度1的用户里也有准确性为5的情况,所以不能说“必然越高”,而是整体呈正相关趋势,存在个体差异。

二、可视化优化方案(替代回归图)

你的数据是有序分类数据(1-5评分),回归图不适合展示这类数据,推荐以下几种更合适的可视化方式:

1. 热力图:展示交叉分组的计数密度

把分组统计结果转换成矩阵,用热力图直观呈现高计数单元格的分布:

# 将分组结果转换为透视表
heatmap_data = df.groupby(['Shopping_Satisfaction', 'Rating_Accuracy']).count()['age'].unstack()
# 绘制热力图
plt.figure(figsize=(8,6))
sns.heatmap(heatmap_data, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Rating_Accuracy')
plt.ylabel('Shopping_Satisfaction')
plt.title('Response Counts by Shopping Satisfaction & Rating Accuracy')
plt.show()

这种图能清晰看到:满意度1时,准确性1-2的计数最高;满意度5时,准确性5的计数最高,直接体现正相关趋势。

2. 箱线图:展示各满意度分组下的准确性分布

按满意度分组,查看准确性的中位数、四分位数范围:

plt.figure(figsize=(8,6))
sns.boxplot(x='Shopping_Satisfaction', y='Rating_Accuracy', data=df)
plt.xlabel('Shopping_Satisfaction')
plt.ylabel('Rating_Accuracy')
plt.title('Rating Accuracy Distribution by Shopping Satisfaction')
plt.show()

箱线图能直观看到:随着满意度提升,准确性的中位数逐步上升,明确呈现整体趋势。

3. 条形图:展示各满意度分组的准确性平均值

计算每个满意度分组的准确性均值,用条形图直观展示趋势:

mean_accuracy = df.groupby('Shopping_Satisfaction')['Rating_Accuracy'].mean().reset_index()
plt.figure(figsize=(8,6))
sns.barplot(x='Shopping_Satisfaction', y='Rating_Accuracy', data=mean_accuracy)
plt.xlabel('Shopping_Satisfaction')
plt.ylabel('Average Rating Accuracy')
plt.title('Average Rating Accuracy by Shopping Satisfaction')
plt.show()

这种图最直接地呈现:满意度从1到5,准确性的平均值逐步上升,清晰验证正相关趋势。

内容的提问来源于stack exchange,提问作者Yudha Hartono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:16:32