<jupyter_start><jupyter_text>Київські наземні переходи Тут буде база київських переходів. Оргинально створюється для проєкту [Громадського бюджету](https://gb.kyivcity.gov.ua) по влаштуванню антикишень, але база переходів може бути корисною і для проштовхування інших рішень для безпеки руху. Думаю, що періодично додаватиму переходи та писатиму заяви ЦОДРу, Київавтодору або звернення на [1551](https://1551.gov.ua) по цим переходам.<jupyter_code>#в принципі, можна було б вивантажити ВСІ наземні переходи з OpenStreetMap, але все одно доки немає
#точних координат ДТП, а лише адреси, не вийде автоматично рахувати аварії на кожному переході
#по-хорошому треба якимсь чином просити поліцію додавати координати до кожного запису про ДТП

crossings = [('Урлівська', '32', (50.407000, 30.620662), 'Регульований', (280309903, 701134317), (0, 0, 0)),
             ('Урлівська', '16', (50.406509, 30.620985), 'Регульований', (280309903, 701134317), (0, 0, 0)),
             ('Урлівська', '38', (50.410717, 30.615860), 'Нерегульований', (2407214973, 1621722328), (1, 0, 0)),
             ('Драгоманова', '1а', (50.416171, 30.635754), 'Нерегульований', (2124909741, 846020618), (1, 0, 0)),
             ('<NAME>', '30', (50.522701, 30.501292), 'Регульований', (256496654, 1821300890), (1, 0, 0)),
             ('Кирилівська', '154', (50.492971, 30.462451), 'Регульований', (4436870354, 26409492), (2, 0, 0)),
             ('Полярна', '5', (50.520295, 30.452898), 'Регульований', (376080552, 345768334), (1, 0, 0)),
             ('<NAME>', '26а', (50.512422, 30.500270), 'Нерегульований', (5849930053, 26272857), (0, 0, 0)),
             ('<NAME>', '29', (50.512371, 30.501801), 'Нерегульований', (256557961, 6031977697), (1, 0, 0)),
             ('<NAME>', '49а', (50.448515, 30.443224), 'Регульований', (4768475786, 256574021), (0, 0, 0)),
             ('Бажана', 'Ревуцького', (50.401946, 30.651391), 'Нерегульований', (539170415, 26260473), ('-', '-', '-')),
             ('Бажана', 'Ревуцького', (50.401699, 30.654187), 'Нерегульований', (4775936064, 564690843), ('-', '-', '-')),
             ('Бажана', 'Ревуцького', (50.402115, 30.651970), 'Нерегульований', (26260473, 250665023), ('-', '-', '-')),
             ('Бажана', 'Ревуцького', (50.401586, 30.653511), 'Нерегульований', (26260473, 250665023), ('-', '-', '-')),
             ('Бажана', 'Ревуцького', (50.400037, 30.652101), 'Нерегульований', (26260474, 564671781), ('-', '-', '-')),
             ('Бажана', 'Ревуцького', (50.400719, 30.650790), 'Нерегульований', (564671781, 413696852), ('-', '-', '-')),
             ('Бажана', 'Григоренка', (50.397848, 30.632512), 'Нерегульований', (534470896, 539170215), ('-', '-', '-')),
             ('Хмельницького', '52', (50.44725, 30.50609), 'Нерегульований', (445413679, 445413688), (0, 0, 0)),
             ('Броварський', '25', (50.452927, 30.598813), 'Нерегульований', (26051694, 60376179), (0, 0, 0)),
             ('Васильківська', '8', (50.396281, 30.504344), 'Нерегульований', (282485467, 1834481292), (3, 3, 0)),
             ('Васильківська', '22', (50.394573, 30.496105), 'Нерегульований', (1896824846, 1252752198), (5, 2, 0)),
             ('<NAME>', '2', (50.415121, 30.625362), 'Нерегульований', (26360947, 1857923944), (0, 0, 0)),
             ('<NAME>', '6', (50.416454, 30.630978), 'Нерегульований', (844597667, 844597690), (0, 0, 0))]
from urban_lib import Uber_movement_data
import numpy as np
import pandas as pd

crossing_speed_data = Uber_movement_data()
crossing_speed_data.load_filtered_from_file('kyiv_crossings_2019.csv')

accident_data = pd.read_csv('DTP Kyiv 2016-2019.csv')

#crossing_speed_data = Uber_movement_data()
#crossing_speed_data.load_from_file([(2019, m) for m in range(1, 13)],
#                                   node_ids = [node for cross in crossings for node in cross[-1]])
columns = ['Вулиця', 'Номер', 'latlon', 'Тип', 'nodes', 'Легко трамовані/тяжко травмовані/загиблі пішоходи']
crossings_df = pd.DataFrame(crossings, columns = columns)

speed = crossing_speed_data.data
crossings_df['Середня швидкість'] = crossings_df.apply(lambda row: np.mean(speed.loc[speed['osm_end_node_id'].isin(list(row['nodes'])) &
                                                                                     speed['osm_start_node_id'].isin(list(row['nodes']))]\
                                                                           ['speed_kph_mean'].to_numpy()), axis = 1)
crossings_df.drop(columns = ['latlon', 'nodes'], inplace = True)
crossings_df.sort_values('Середня швидкість', ascending = False, inplace = True, ignore_index = True)<jupyter_output><empty_output><jupyter_text>Таблиця з найнебезпечнішими переходами *через низьку якість даних про ДТП кількості травмованих можуть бути заниженими<jupyter_code>crossings_df<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18212127526568034, 'fraction_numerical': 0.18524692644300897, 'mean_word_length': 3.7337278106508878, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 7, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '361230', 'license': 'MIT', 'n_tokens_mistral': 2528, 'n_tokens_neox': 2125, 'n_words': 390, 'path': 'Kyiv crossings.ipynb', 'repo_name': 'DmytroTym/urban', 'size': '4847'}