我有一个数据框 df:
ID District Var1 (Average Down Time) Var2 (Incident Count)
0206571-017 TSUEN WAN 1.2 4
0206571-017 TSUEN WAN 2.1 6
0206571-017 TSUEN WAN 3.0 7
0206571-017 TSUEN WAN 1.3 8
0206571-019 TSING YI 2.1 9
0206571-018 CENTRAL 3.2 13
作为一名数据分析师,
Var1
的
Var2
和
ID
给定包含字符串值的数据列,例如ID/区,请提供米方式编码或分组 st,我可以进行 df.corr() 输出相关矩阵
为了回答您关于查找每个 ID 的 var1 和 var2 之间的相关系数的问题,这提供了一种如何编码的方法,
corr_coeff = df.groupby('ID')[['Var1', 'Var2']].corr()
print(corr_coeff)
结果,
Var1 Var2
ID
0206571-017 Var1 1.00000 0.30327
Var2 0.30327 1.00000
0206571-018 Var1 NaN NaN
Var2 NaN NaN
0206571-019 Var1 NaN NaN
Var2 NaN NaN
对于第二个问题,查找哪个地区包含最高的平均停机时间/事件计数作为单独的 CSV,
avg_district = df.groupby('District')[['Var1', 'Var2']].mean()
highest_avg_downtime = avg_district['Var1'].idxmax()
highest_avg_incidents = avg_district['Var2'].idxmax()
highest_avg_downtime_df = df[df['District'] == highest_avg_downtime]
highest_avg_incidents_df = df[df['District'] == highest_avg_incidents]
highest_avg_downtime_df.to_csv('highest_avg_downtime.csv', index=False)
highest_avg_incidents_df.to_csv('highest_avg_incidents.csv', index=False)
最高平均停机时间/事件计数将在两个不同的 CSV 文件中提供,名为“highest_avg_downtime.csv”和“highest_avg_incidents.csv”。
为了将分类值(即字符串)编码为数值,我们可以使用标签编码器,
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['ID'] = le.fit_transform(df['ID'])
df['District'] = le.fit_transform(df['District'])
这将提供这样的结果,
ID District Var1 Var2
0 0 2 1.2 4
1 0 2 2.1 6
2 0 2 3.0 7
3 0 2 1.3 8
4 2 1 2.1 9
5 1 0 3.2 13
编码后,如果应用
df.corr()
来查找输出相关矩阵,则结果将是,
ID District Var1 Var2
ID 1.000000 -0.714286 0.273190 0.585800
District -0.714286 1.000000 -0.589516 -0.898227
Var1 0.273190 -0.589516 1.000000 0.648563
Var2 0.585800 -0.898227 0.648563 1.000000