【发布时间】:2020-08-18 07:35:48
【问题描述】:
我在 csv 文件中有 3 列。 “Pclass”、“性别”、“年龄”。 Pclass 具有 3 个分类值:1、2 和 3。Sex 具有值“男性”和“女性”,Age 具有从 0 到 75 的值。 现在,我想根据 pclass 和性别计算六个不同的平均年龄。所以会有6个平均值。 (1-男性) (2-男) (3-男性) (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)
请告诉我其中有什么问题。
【问题讨论】:
-
你能在问题中提供
dataset.to_string()和prediction_set.to_string()吗? -
问题是“年龄”列中有一些空值,因此导致了问题。我用一个额外的'if'语句纠正了它。但现在我想知道你是否可以使用字典来做同样的事情。请指教。谢谢
-
你能在问题中提供 dataset.to_string() 和 prediction_set.to_string() 吗?
标签: python pandas scikit-learn