首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在pandas数据框中找到混合分类变量的均值?

如何在pandas数据框中找到混合分类变量的均值?
EN

Stack Overflow用户
提问于 2019-03-01 08:28:12
回答 4查看 3.5K关注 0票数 0

我有关于使用各种社交媒体平台的不同年龄段的人的调查数据集。我想计算一下使用社交媒体应用程序的平均人数。下面是示例数据的外观:

以下是可重现的熊猫数据帧:

代码语言:javascript
复制
df=pd.DataFrame({'age': np.random.randint(10,100,size=10),
                'web1a': np.random.choice([1, 2], size=(10,)),
                'web1b': np.random.choice([1, 2], size=(10,), p=[1./3, 2./3]),
                'web1c': np.random.choice([1, 2], size=(10,)),
                'web1d': np.random.choice([1, 2], size=(10,))})

这是我尝试过的:

代码语言:javascript
复制
df.pivot_table(df, values='web1a', index='age', aggfunc='mean')

但是它的效率不高,并且没有产生我想要的输出。你有办法把这事做完吗?谢谢

更新

对我来说,这样做的方法是,首先在每一列中选择分类值,并获取它的平均值,其他值也可以是相同的。如果我这样做了,我怎么能很好地绘制它们呢?

请注意,在列web1aweb1bweb1cweb1d1表示用户,2表示非用户。我想计算用户和非用户的平均年龄。我该怎么做呢?谁能给我一个可行的点子来实现这一点?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-01 09:28:47

使用

代码语言:javascript
复制
df.melt('age').set_index(['variable','value']).mean(level=[0,1]).unstack().plot(kind='bar')

票数 2
EN

Stack Overflow用户

发布于 2019-03-01 08:40:40

您可以按“web*”列分组,并计算“age”列的平均值。

您还可以绘制条形图(颜色可以在子图中定义)。我不确定饼图在这种情况下是否有意义。

我尝试了你的data,只取了以“web”开头的列。有比‘1’和‘2’更多的值,所以我假设你只想分析用户和非用户,而不是其他。你可以用同样的方式在图表中更改这些值或添加其他值,只要你知道你想要绘制什么值。

代码语言:javascript
复制
df = df.filter(regex=('web|age'),axis=1)

userNr = '1'
nonUserNr = '2'
users = list()
nonUsers = list()
labels = [x for x in df.columns.tolist() if 'web' in x]
for col in labels:
    users.append(df.loc[:,['age',col]].groupby(col).mean().loc[userNr][0])
    nonUsers.append(df.loc[:,['age',col]].groupby(col).mean().loc[nonUserNr][0])

from matplotlib import pyplot as plt
x = np.arange(1, len(labels)+1)
ax = plt.subplot(111)
ax.bar(x-0.1, users, width=0.2,color='g')
ax.bar(x+0.1,nonUsers, width=0.2,color='r')
plt.xticks(x, labels)
plt.legend(['users','non-users'])
plt.show()

票数 2
EN

Stack Overflow用户

发布于 2019-03-01 08:40:09

这可以使用groupby方法来完成:

代码语言:javascript
复制
df.groupby(['web1a', 'web1b', 'web1c', 'web1d']).mean()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54936290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档