Я не понял названия атрибутов, и вы не упомянули, по каким возрастным группам вам нужно разделить ваши данные. В своем ответе я буду относиться к данным, как если бы атрибуты были:
index, name, age, friend
Чтобы найти количество друзей по имени, я бы предложил вам использовать groupby .
ввод:
groups = df.groupby([df.iloc[:,0],df.iloc[:,1]]) # grouping by name(0), age(1)
amount_of_friends_df = groups.size() # gathering amount of friends for a person
print(amount_of_friends_df)
выход:
name age
EUNK 25 1
FBFM 26 1
MYYD 30 1
OBBF 28 2
RJCW 25 1
RQTI 21 1
VLIP 16 1
ZCWQ 18 1
ZMQE 27 1
Чтобы узнать количество друзей по возрасту, вы также можете использовать группы
ввод:
groups = df.groupby([df.iloc[:,1]]) # groups by age(1)
age_friends = groups.size()
age_friends=age_friends.reset_index()
age_friends.columns=(['age','amount_of_friends'])
print(age_friends)
выход:
age amount_of_friends
0 16 1
1 18 1
2 21 1
3 25 2
4 26 1
5 27 1
6 28 2
7 30 1
Чтобы рассчитать среднее количество друзей в возрастной группе, вы можете использовать категории и groupby.
ввод:
mean_by_age_group_df = age_friends.groupby(pd.cut(age_friends.age,[20,40,60,72]))\
.agg({'amount_of_friends':'mean'})
print(mean_by_age_group_df)
pd.cut возвращает ряды, которые мы используем для группировки данных. Затем мы используем функцию agg для агрегирования групп в фрейме данных.
выход:
amount_of_friends
age
(20, 40] 1.333333
(40, 60] NaN
(60, 72] NaN