etadevosyan commited on
Commit
c3e7254
·
verified ·
1 Parent(s): 48de789

Update app.py

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