城市间相关矩阵

2024-06-17 10:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到城市和降雨量。请注意,“城市”是绝对的,而不是数字。 我想比较一下他们的降雨量

我该怎么办?我在这里没有看到任何关于如何处理不同数据的重复城市的讨论 就像

    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

Tags: 数据date数字locationrainfall降雨量brisbanemaxtemp
1条回答
网友
1楼 · 发布于 2024-06-17 10:08:10

如果我理解正确(基于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

另一种稍微复杂一些的解决方案是保留最长的序列,并用均值或中位数来插补缺失值

但是,即使您将更多的数据输入到您的算法中,它也不能解决主要问题:您的数据似乎没有对齐。我的意思是,为了正确地进行相关性分析,你应该确保,你比较了可比较的数值,例如夏季的降雨量和另一个城市夏季的降雨量。要用这种方法进行分析,你应该确保每个城市都有相同数量的可比降雨:例如冬季、春季、夏季、秋季;或者,一月,二月,…,十二月

相关问题 更多 >