【问题标题】:How to show the correlation between counts and rate?如何显示计数和速率之间的相关性?
【发布时间】:2020-06-16 20:06:30
【问题描述】:

我的数据集

Name rate  counts
A    10.3  3
B    15.4  9
C    21.9  11
D    9.11  4
E    2.21  5
F    7.7   21
G    18.9  20
H    55.1  41

数据集显示了不同名字的人数和比率。

我想知道速率与计数的相关性。

例如,如果计数高,则比率高或低。

哪种方法最适合显示两者之间的联系?..

【问题讨论】:

  • 这个问题我不清楚
  • Pandas 有一个correlation function。你试过了吗?
  • @YOBEN_S 我想查看根据计数的速率变化。例如,如果计数很高,比率会更高还是更低?就这样,我想分析一下两者之间的相关性,但是不知道怎么接近
  • @MarkMeyer 是的,但它并不直观。

标签: python pandas matplotlib analytics correlation


【解决方案1】:

检查此代码:

# import requires packages
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# read the data file
df = pd.read_csv('data.csv')

# calculate correlation matrix
corr = df.corr()

# prepare the plot
sns.heatmap(corr, annot = True, vmin = 0, vmax = 1)

# show the plot
plt.show()

这给了我以下相关矩阵:

您可以看到ratecount 之间的相关性非常高:0.85。但是考虑到我只使用了您上面报告的数据,只有 8 行,也许您应该使用更高的样本以获得更可靠的结果。

【讨论】:

    【解决方案2】:

    您只需要使用 Pandas 函数来计算相关性:

    df.rate.corr(df.counts)
    

    它支持三种方法:“pearson”(默认)、“kendall”和“spearman”。更多详情请见here

    【讨论】:

    【解决方案3】:

    您可以尝试使用 numpy 来获取两个变量之间的系数。

    import numpy
    a = [10.3, 15.4, 21.9, 9.11, 2.21, 7.7, 18.9, 55.1]
    b = [3, 9, 11, 4, 5, 21, 20, 41]
    print(numpy.corrcoef(a,b))
    

    如果反对角线中的值为正且更接近 1,则它们的相关性更高。 结果是

    [[1.         0.84965646] 
     [0.84965646 1.        ]]
    

    系数值约为 0.85。这意味着它们是高度正相关的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2020-01-21
      • 2023-01-30
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多