如何解决如何利用字典从数据框中计算多个平均值
csv文件中有3列。 “ Pclass”,“性别”,“年龄”。 Pclass具有3个分类值:1、2和3。性别的值分别为“男”和“女”,年龄的值介于0到75之间。 现在,我想根据pclass和性别计算六个不同的平均年龄。因此会有6个平均值 (1位男性) (2男) (三男) (1-女) (2-女) (3位女性)
我编写了以下程序。但是我想知道是否可以使用字典来做同样的事情。dict = {}键会给我m1,m2等等...,然后以某种方式用平均值替换键的值。
dataset = pd.read_csv('train.csv')
prediction_set = pd.read_csv('test.csv')
dataset.isnull().sum()
prediction_set.isnull().sum()
'''Dealing with Missing Age'''
# we are going to catogorise age by Pclass and Sex
m1 = m2 = m3 = f1 = f2 = f3 = 0
count_m1 = count_m2 = count_m3 = count_f1 = count_f2 = count_f3 = 0
for i in range(0,891):
if np.isnull(dataset['Age'][i]
continue
if dataset['Pclass'][i]==1:
if dataset['Sex'][i]=='male':
m1 = m1 + dataset['Age'][i]
count_m1 = count_m1 + 1
if dataset['Pclass'][i]==2:
if dataset['Sex'][i]=='male':
m2 = m2 + dataset['Age'][i]
count_m2 = count_m2 + 1
if dataset['Pclass'][i]==3:
if dataset['Sex'][i]=='male':
m3 = m3 + dataset['Age'][i]
count_m3 = count_m3 + 1
if dataset['Pclass'][i]==1:
if dataset['Sex'][i]=='female':
f1 = f1 + dataset['Age'][i]
count_f1 = count_f1 + 1
if dataset['Pclass'][i]==2:
if dataset['Sex'][i]=='female':
f2 = f2 + dataset['Age'][i]
count_f2 = count_f2 + 1
if dataset['Pclass'][i]==3:
if dataset['Sex'][i]=='female':
f3 = f3 + dataset['Age'][i]
count_f3 = count_f3 + 1
m1 = m1/count_m1
m2 = m2/count_m2
m3 = m3/count_m3
f1 = f1/count_f1
f2 = f2/count_f2
f3 = f3/count_f3
print('m1 = ',m1)
print('m2 = ',m2)
print('m3 = ',m3)
print('f1 = ',f1)
print('f2 = ',f2)
print('f3 = ',f3)
请告诉我其中有什么问题。
解决方法
要获得6组(3个pclass类别x 2个性别类别)的平均年龄,可以尝试使用:
dataset.groupby(['Pclass','Sex'])['Age'].mean()
希望我没有误解你的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。