warleagle commited on
Commit
228b1c6
·
1 Parent(s): bc8c611

Upload 3 files

Browse files
Files changed (3) hide show
  1. app.py +184 -0
  2. preprocessed_geodata.xlsx +0 -0
  3. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #%%
2
+ import pandas as pd
3
+ import streamlit as st
4
+ import plotly.graph_objects as go
5
+
6
+ df = pd.read_excel("preprocessed_geodata.xlsx")
7
+ def get_lat_lon(row):
8
+ row = eval(row['result_dadata'])[0]
9
+ lat = row['geo_lat']
10
+ lon = row['geo_lon']
11
+ adress = row['result']
12
+
13
+ return lat, lon, adress
14
+
15
+ def get_colors(row):
16
+ if row > 1200:
17
+ return 'red'
18
+ elif row <= 1200 and row > 800:
19
+ return 'blue'
20
+ elif row <= 800 and row > 400:
21
+ return 'yellow'
22
+ elif row <= 400 and row > 200:
23
+ return 'green'
24
+ elif row <= 200 and row > 100:
25
+ return 'purple'
26
+ elif row <= 100 and row > 30:
27
+ return 'orange'
28
+ else:
29
+ return 'black'
30
+
31
+ df[['lat', 'lon', 'adress']] = df.apply(get_lat_lon, axis=1, result_type='expand')
32
+
33
+ viz_df = df[['lpu_name','lat', 'lon', 'adress', 'Число разных элементов в столбце LETTER_ID']].copy()
34
+ viz_df[['lat','lon']] = viz_df[['lat','lon']].astype(float)
35
+ viz_df['colors'] = viz_df['Число разных элементов в столбце LETTER_ID'].apply(get_colors)
36
+
37
+ text_series ="Название клиники: "+ viz_df['lpu_name'] + "<br>" + "Адрес: " + viz_df["adress"] + "<br>" + "Количество гарантийных писем:" + viz_df['Число разных элементов в столбце LETTER_ID'].astype(str)
38
+ #%%
39
+ fig_bubbles_coords = go.Figure(data=go.Scattermapbox(
40
+ lat=viz_df['lat'],
41
+ lon=viz_df['lon'],
42
+ mode='markers',
43
+ marker=go.scattermapbox.Marker(
44
+ size=viz_df['Число разных элементов в столбце LETTER_ID'],
45
+ color='red',
46
+ sizemode='area',
47
+ sizeref=5,
48
+ opacity=0.6
49
+ ),
50
+ text=text_series,
51
+ ))
52
+
53
+ fig_bubbles_coords.update_layout(
54
+ mapbox_style='open-street-map',
55
+ autosize=True,
56
+ hovermode='closest',
57
+ showlegend=False,
58
+ mapbox=dict(
59
+ center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()),
60
+ zoom=9
61
+ ),
62
+ width=900,
63
+ height=900
64
+ )
65
+
66
+ # fig_bubbles_coords.show()
67
+ #%%
68
+ fig_bubbles = go.Figure(data=go.Scattermapbox(
69
+ lat=viz_df['lat'],
70
+ lon=viz_df['lon'],
71
+ mode='markers',
72
+ marker=go.scattermapbox.Marker(
73
+ size=viz_df['Число разных элементов в столбце LETTER_ID'],
74
+ color='red',
75
+ sizemode='area',
76
+ sizeref=5,
77
+ opacity=0.6,
78
+ ),
79
+ customdata=text_series,
80
+ ))
81
+
82
+ fig_bubbles.update_layout(
83
+ mapbox_style='open-street-map',
84
+ autosize=True,
85
+ hovermode='closest',
86
+ showlegend=False,
87
+ mapbox=dict(
88
+ center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()),
89
+ zoom=9
90
+ ),
91
+ width=900,
92
+ height=900
93
+ )
94
+
95
+ fig_bubbles.update_traces(hovertemplate='<b>%{customdata}</b>')
96
+
97
+ # fig_bubbles.show()
98
+ #%%
99
+ fig_heatbar = go.Figure(data=go.Scattermapbox(
100
+ lat=viz_df['lat'],
101
+ lon=viz_df['lon'],
102
+ mode='markers',
103
+ marker=go.scattermapbox.Marker(
104
+ color=viz_df['Число разных элементов в столбце LETTER_ID'],
105
+ sizemode='area',
106
+ sizeref=5,
107
+ opacity=1,
108
+ colorscale='rdylbu', # Градиент цветов от светло-синего до темно-синего
109
+ colorbar=dict(title='Число разных элементов в столбце LETTER_ID')
110
+ ),
111
+ customdata=text_series,
112
+ ))
113
+
114
+ fig_heatbar.update_layout(
115
+ mapbox_style='open-street-map',
116
+ autosize=True,
117
+ hovermode='closest',
118
+ showlegend=False,
119
+ mapbox=dict(
120
+ center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()),
121
+ zoom=9
122
+ ),
123
+ width=900,
124
+ height=900
125
+ )
126
+
127
+ fig_heatbar.update_traces(hovertemplate='<b>%{customdata}</b>')
128
+
129
+ # fig_heatbar.show()
130
+ #%%
131
+ dct_colors = {'red':'больше 1200',
132
+ 'blue':'1200-800',
133
+ 'yellow':'800-400',
134
+ 'green':'400-200',
135
+ 'purple':'200-100',
136
+ 'orange':'100-30',
137
+ 'black':'меньше 30'}
138
+ colors = ['red', 'blue', 'yellow', 'green','purple','orange','black']
139
+
140
+ fig_colored = go.Figure()
141
+
142
+ for color in colors:
143
+ temp_df = viz_df[viz_df['colors'] == color]
144
+ text_series_temp = "Название клиники: "+ temp_df['lpu_name'] + "<br>" + "Адрес: " + temp_df["adress"] + "<br>" + "Количество гарантийных писем:" + temp_df['Число разных элементов в столбце LETTER_ID'].astype(str)
145
+ fig_colored.add_trace(go.Scattermapbox(
146
+ lat=temp_df['lat'],
147
+ lon=temp_df['lon'],
148
+ mode='markers',
149
+ marker=go.scattermapbox.Marker(
150
+ color=color,
151
+ sizemode='area',
152
+ sizeref=5,
153
+ opacity=1,
154
+ ),
155
+ name=dct_colors[color],
156
+ customdata=text_series_temp,
157
+ ))
158
+
159
+
160
+ fig_colored.update_layout(
161
+ mapbox_style='open-street-map',
162
+ autosize=True,
163
+ hovermode='closest',
164
+ showlegend=True,
165
+ mapbox=dict(
166
+ center=dict(lat=viz_df['lat'].mean(), lon=viz_df['lon'].mean()),
167
+ zoom=9
168
+ ),
169
+ width=900,
170
+ height=900
171
+ )
172
+ fig_colored.update_traces(hovertemplate='<b>%{customdata}</b>')
173
+
174
+
175
+ # fig_colored.show()
176
+ # %%
177
+ viz_df = viz_df.rename(columns={"Число разных элементов в столбце LETTER_ID":"Число_ГП"})
178
+ #%%
179
+ st.dataframe(data=viz_df[['lpu_name', 'Число_ГП', 'adress']])
180
+ # st.plotly_chart(fig_bubbles_coords)
181
+ st.plotly_chart(fig_bubbles)
182
+ st.plotly_chart(fig_heatbar)
183
+ st.plotly_chart(fig_colored)
184
+ # st.table(df)
preprocessed_geodata.xlsx ADDED
Binary file (130 kB). View file
 
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ numpy
2
+ pandas
3
+ matplotlib
4
+ seaborn
5
+ plotly
6
+ openpyxl