Update app.py
Browse files
app.py
CHANGED
@@ -10,19 +10,36 @@ def plot_real_estate_correlation(state):
|
|
10 |
# Filter for the given state
|
11 |
df = df[df['State'] == state.upper()]
|
12 |
|
13 |
-
# Extract the list of ZIP codes and
|
14 |
zip_codes = df['RegionName'].unique()
|
15 |
-
|
16 |
|
17 |
-
#
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
# Calculate the correlation matrix for ZIP codes
|
21 |
-
corr_matrix =
|
22 |
|
23 |
# Prepare the grid data for 3D plot
|
24 |
-
x_data, y_data = np.meshgrid(zip_codes, zip_codes)
|
25 |
z_data = corr_matrix.values
|
|
|
26 |
|
27 |
# Create the 3D surface plot
|
28 |
fig = go.Figure(data=[go.Surface(z=z_data, x=x_data, y=y_data)])
|
|
|
10 |
# Filter for the given state
|
11 |
df = df[df['State'] == state.upper()]
|
12 |
|
13 |
+
# Extract the list of ZIP codes and dates
|
14 |
zip_codes = df['RegionName'].unique()
|
15 |
+
dates = pd.to_datetime(df.columns[7:]) # Assuming price data starts from the 8th column
|
16 |
|
17 |
+
# Initialize a DataFrame to hold price data for correlation calculation
|
18 |
+
price_matrix = []
|
19 |
+
|
20 |
+
# Loop through each ZIP code in the state
|
21 |
+
for zip_code in zip_codes:
|
22 |
+
df_zip = df[df['RegionName'] == zip_code]
|
23 |
+
|
24 |
+
# Extract only the columns with date data (price values)
|
25 |
+
prices = df_zip.iloc[0, 7:].values # Extract price values starting from the 8th column
|
26 |
+
|
27 |
+
# Append prices to the matrix if there are no missing values
|
28 |
+
if not np.isnan(prices).all():
|
29 |
+
price_matrix.append(prices)
|
30 |
+
|
31 |
+
# Convert to DataFrame for easier manipulation
|
32 |
+
price_matrix_df = pd.DataFrame(price_matrix, index=zip_codes)
|
33 |
+
|
34 |
+
# Transpose to align for correlation calculation (each column = ZIP code)
|
35 |
+
price_matrix_df = price_matrix_df.T.dropna()
|
36 |
|
37 |
# Calculate the correlation matrix for ZIP codes
|
38 |
+
corr_matrix = price_matrix_df.corr()
|
39 |
|
40 |
# Prepare the grid data for 3D plot
|
|
|
41 |
z_data = corr_matrix.values
|
42 |
+
x_data, y_data = np.meshgrid(zip_codes, zip_codes)
|
43 |
|
44 |
# Create the 3D surface plot
|
45 |
fig = go.Figure(data=[go.Surface(z=z_data, x=x_data, y=y_data)])
|