将年龄范围转换为数值以计算CD消费与年龄的相关性
我已经对这些数值进行了排序。但问题是“до 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)