【问题标题】:correlation matrix between cities城市间相关矩阵
【发布时间】:2019-02-09 07:07:25
【问题描述】:

我想找到 corr btw 城市和 Rainfall。请注意,“城市”是分类的,而不是数字的。 我想比较他们的降雨量。

我该怎么做?我在这里没有看到任何关于如何处理具有不同数据的重复城市的内容 喜欢

    Date    Location    MinTemp MaxTemp Rainfall
12/1/2008   Albury     13.4     22.9    0.6
12/2/2008   Albury      7.4     25.1    0
12/3/2008   Albury      12.9    25.7    0
12/5/2008   Brisbane    20.5     29    9.6
12/6/2008   Brisbane    22.1    33.4    7.8
12/7/2008   Brisbane    22.6    33.4    12.4
12/8/2008   Brisbane    21.9    26.7    0
12/9/2008   Brisbane    19.5    27.6    0.2
12/10/2008  Brisbane    22.1    30.3    0.6
3/30/2011   Tuggeranong 9.8     25.2    0.4
3/31/2011   Tuggeranong 10.3    18.5    2.8
5/1/2011    Tuggeranong 5.5     20.8    0
5/2/2011    Tuggeranong 11      16.1    0
5/3/2011    Tuggeranong 7.3     17.5    0.6
8/29/2016   Woomera     15      22.9    0
8/30/2016   Woomera     12.5    22.1    12.8
8/31/2016   Woomera     8       20  0
9/1/2016    Woomera     11.6    21.4    0
9/2/2016    Woomera     11.2    19.6    0.3
9/3/2016    Woomera      7.1    20.4    0
9/4/2016    Woomera      6.5    18.6    0
9/5/2016    Woomera      7.3    21.5    0

【问题讨论】:

  • 分类变量和数值变量之间不存在相关性。您究竟希望测量什么?
  • 预期输出是什么?

标签: python pandas


【解决方案1】:

如果我理解正确(基于 OP 的标题),一个可能的解决方案是:

第 1 步

准备以Locations 为列和Rainfall 为行的数据集(注意,您将在此处丢失最短降雨系列的信息)

df2=df.groupby("Location")[["Location", "Rainfall"]].head(3) # head(3) is first 3 observations
df2.loc[:,"col"] = 4*["x1","x2","x3"] # 4 is number of unique cities
df3 = df2.pivot_table(index="col",columns="Location",values="Rainfall")
df3
Location    Albury  Brisbane    Tuggeranong Woomera
col             
x1          0.6      9.6         0.4          0.0
x2          0.0      7.8         2.8         12.8
x3          0.0      12.4        0.0          0.0

第 2 步 对得到的数据集做相关矩阵

df3.corr()

Location      Albury    Brisbane    Tuggeranong Woomera
Location                
Albury       1.000000   -0.124534   -0.381246   -0.500000
Brisbane    -0.124534   1.000000    -0.869799   -0.797017
Tuggeranong -0.381246   -0.869799   1.000000    0.991241
Woomera     -0.500000   -0.797017   0.991241    1.000000

另一种稍微复杂一点的解决方案是保留最长的序列并用均值或中位数估算缺失值。

但即使您将更多数据输入算法,它也无法解决主要问题:您的数据似乎未对齐。我的意思是,要正确进行相关性分析,您应该确保比较可比较的值,例如夏季降雨量与另一个城市的夏季降雨量。要以这种方式进行分析,您应该确保每个城市的可比降雨量相等:例如冬天春天夏天秋天;或者,一月、二月、...、十二月。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-11
    • 2012-11-04
    • 1970-01-01
    • 2017-02-12
    • 2018-10-19
    • 2013-04-13
    • 2019-04-15
    相关资源
    最近更新 更多