给定包含字符串值的数据框,如何找到 pandas 数据框列中一组值之间的相关性?

问题描述 投票:0回答:1

我有一个数据框 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

作为一名数据分析师,

  1. 我想找到每个
    Var1
    Var2
    ID
  2. 之间的相关系数值
  3. 我想找出哪个地区包含最高的平均停机时间/事件计数(作为单独的 CSV)

给定包含字符串值的数据列,例如ID/区,请提供米方式编码或分组 st,我可以进行 df.corr() 输出相关矩阵

python dataframe correlation
1个回答
0
投票

为了回答您关于查找每个 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
© www.soinside.com 2019 - 2024. All rights reserved.