将一个变量的 value_counts() 与另一个变量的 mean() 相关联
Relating value_counts() of a variable with mean() of another variable
我有一个列出消费者投诉的数据框,我正在分析以下列:'Company',具有重复值,'Grade' 由客户提供,是从 1 到 5 的整数。
我长这样:
| Company | Grade |
-------------------------------
0 | Company1 | 5 |
1 | Company64 | 2 |
2 | Company1 | 1 |
3 | Company6 | 3 |
...
我想分析每家公司的投诉数量与客户给每家公司的评分的平均值()之间的关系。
我不确定执行此操作的最佳方法,到目前为止我创建了另一个 df (df2) 来保存这些值:
df2 = pd.DataFrame(columns= ('Complaints','Grade'))
df2['Complaints'] = df2['Company'].value_counts()
df2
| Complaints | Grade |
--------------------------------------
Company1 | 5549 | NaN
Company23 | 5403 | NaN
Company8 | 3883 | NaN
Company30 | 2493 | NaN
我不确定如何在 df2
上为每个公司插入 df.Grade.mean()
的值
有人告诉我,我可以为此使用多重索引,方法是将公司分组到第一个 df
,但我不确定如何进行。
之后,我将用 seaborn 绘制这个 df2
,以一种非常清楚地看到这两个变量之间的关系的方式,所以如果有一个图表可以简化这个,请告诉我。
我会尝试使用更新功能:
df2.update(df1.groupby(['Company']).mean())
既然你说每家公司都有多个等级,你可以groupby
“公司”并找到每家公司的平均等级。
grades = df1.groupby('Company')['Grade'].mean()
然后,在 df2
上做类似的工作,除了,你计算投诉:
complaints = df2.groupby('Company')['Complaints'].count()
现在join
两个:
data = grades.join(complaints)
最后,因为你想看到平均成绩和投诉数量之间的关系,你可以使用散点图:
data.plot(kind='scatter', x='Complaints', y='Grade')
我有一个列出消费者投诉的数据框,我正在分析以下列:'Company',具有重复值,'Grade' 由客户提供,是从 1 到 5 的整数。
我长这样:
| Company | Grade |
-------------------------------
0 | Company1 | 5 |
1 | Company64 | 2 |
2 | Company1 | 1 |
3 | Company6 | 3 |
...
我想分析每家公司的投诉数量与客户给每家公司的评分的平均值()之间的关系。
我不确定执行此操作的最佳方法,到目前为止我创建了另一个 df (df2) 来保存这些值:
df2 = pd.DataFrame(columns= ('Complaints','Grade'))
df2['Complaints'] = df2['Company'].value_counts()
df2
| Complaints | Grade |
--------------------------------------
Company1 | 5549 | NaN
Company23 | 5403 | NaN
Company8 | 3883 | NaN
Company30 | 2493 | NaN
我不确定如何在 df2
df.Grade.mean()
的值
有人告诉我,我可以为此使用多重索引,方法是将公司分组到第一个 df
,但我不确定如何进行。
之后,我将用 seaborn 绘制这个 df2
,以一种非常清楚地看到这两个变量之间的关系的方式,所以如果有一个图表可以简化这个,请告诉我。
我会尝试使用更新功能:
df2.update(df1.groupby(['Company']).mean())
既然你说每家公司都有多个等级,你可以groupby
“公司”并找到每家公司的平均等级。
grades = df1.groupby('Company')['Grade'].mean()
然后,在 df2
上做类似的工作,除了,你计算投诉:
complaints = df2.groupby('Company')['Complaints'].count()
现在join
两个:
data = grades.join(complaints)
最后,因为你想看到平均成绩和投诉数量之间的关系,你可以使用散点图:
data.plot(kind='scatter', x='Complaints', y='Grade')