将年龄范围转换为数值以计算CD消费与年龄的相关性

0 投票
1 回答
18 浏览
提问于 2025-04-12 13:50

我已经对这些数值进行了排序。但问题是“до 25”(也就是“到25岁”)。我该怎么把它改成“0-25岁”,并计算年龄组和总体评分之间的相关系数呢?

以下是我的一些数据

年龄组 总体评分
65岁及以上 38.45
55-64岁 17.66
0-25岁 46.56
45-54岁 24.95
35-44岁 33.54
25-34岁 37.21

1 个回答

0

下面是你可以做到的事情。我把你的年龄分类转换成了平均年龄,因为相关性需要两个数字值;单纯的分类是无法进行相关性分析的。你的数据还有一些其他问题。比如,65岁及以上这个分类到底代表什么数字并不清楚。我把它设定为65到100岁,但这可能并不准确。还有,你的分类是25到34岁,比如说,这应该是25到35岁,因为25到35岁这个范围并不包含35岁,而是包含25、26、27、28、29、30、31、32、33和34岁,这才是我认为你想要的结果。我没有更改这个,但如果你想要这样的结果,建议你自己修改一下。

import pandas as pd
from scipy.stats import pearsonr
import warnings
warnings.filterwarnings("ignore")

Agelst=['65 and older','55-64','up to 25','45-54','35-44','25-34']
Ratelst=[38.45,17.66,46.56,24.95,33.54,37.21]

df=pd.DataFrame()
df['Age_Group']=Agelst
df['Overal_Rating']=Ratelst

display(df)

#Change 'up to 25' to '0-25'
df.replace('up to 25', '0-25',inplace=True)
df.replace('65 and older', '65-100',inplace=True)

display(df)

#You will need a numeric age to use for correlation.  We can develop one from the strings in your 'Age_Group'
loweragelst=[]
upperagelst=[]
for i in range(len(df)):
    loweragelst.append(int(((df.iloc[i]['Age_Group']).split('-'))[0]))
    upperagelst.append(int(((df.iloc[i]['Age_Group']).split('-'))[1]))

df['Lower_Age']=loweragelst
df['Upper_Age']=upperagelst

#Sort the df
df.sort_values(by=['Lower_Age'], ascending=True,inplace=True)
display(df)

#Add a mean age column to use for correlation
df['Mean_Age']=(df['Lower_Age']+df['Upper_Age'])/2

display(df)

#Calculate Pearson's Correlation
X=df['Mean_Age']
Y=df['Overal_Rating']
PCor= pearsonr(X, Y)
print(PCor)

得到的df和相关性结果是:

Age_Group   Overal_Rating
0   65 and older    38.45
1   55-64   17.66
2   up to 25    46.56
3   45-54   24.95
4   35-44   33.54
5   25-34   37.21
    Age_Group   Overal_Rating
0   65-100  38.45
1   55-64   17.66
2   0-25    46.56
3   45-54   24.95
4   35-44   33.54
5   25-34   37.21
    Age_Group   Overal_Rating   Lower_Age   Upper_Age
2   0-25    46.56   0   25
5   25-34   37.21   25  34
4   35-44   33.54   35  44
3   45-54   24.95   45  54
1   55-64   17.66   55  64
0   65-100  38.45   65  100
    Age_Group   Overal_Rating   Lower_Age   Upper_Age   Mean_Age
2   0-25    46.56   0   25  12.5
5   25-34   37.21   25  34  29.5
4   35-44   33.54   35  44  39.5
3   45-54   24.95   45  54  49.5
1   55-64   17.66   55  64  59.5
0   65-100  38.45   65  100     82.5

PearsonRResult(statistic=-0.4489402583278369, pvalue=0.37183097344063043)

撰写回答