- PVSM.RU - https://www.pvsm.ru -

Folium — пример изображения времени работы мировых бирж

Всем привет!

Для работы нам потребуется Jupyter Notebook, библиотеки Folium, Pandas и хорошее настроение.

Мануал для новобранцев по библиотеке Folium смотрим здесь [1].

Данные мы возьмем с сайта [2]. Я воспользовался Википедией и нашел координаты всех городов.

# http://stocktime.ru/info.htm
import pandas as pd

df = pd.DataFrame({"lines":"""
New Zealand Exchange - NZX
ВЕЛЛИНГТОН  10:00 - 16:45   UTC +12     UTC +13     
Australian Securities Exchange - ASX
СИДНЕЙ  10:00 - 16:00   UTC +10     UTC +11     
Japan Exchange Group - JPX
ТОКИО   09:00 - 15:00   UTC +9  -   
Singapore Exchange - SGX
СИНГАПУР    09:00 - 17:00   UTC +8  -   
Hong Kong - HKEX
Гонконг     09:30 - 16:00   UTC +8  -   
Shanghai Stock Exchange - SSE
ШАНХАЙ  09:30 - 15:00   UTC +8  -   
National Stock Exchange of India - NSE
Мумбай  09:15 - 15:30   UTC +5:30   -   
Moscow Exchange - MOEX
МОСКВА  09:30 - 19:00   UTC +3  -   
Dubai Financial Market’s - DFM
ДУБАЙ   10:00 - 14:00   UTC +4  -   
Saudi Stock Exchange - Tadawul
ЭР-РИЯД     10:00 - 15:00   UTC +3  -   
Johannesburg Stock Exchange - JSE
ЙОХАННЕСБУРГ    09:00 - 17:00   UTC +2  -   
Frankfurt Stock Exchange - FWB
ФРАНКФУРТ   09:00 - 17:30   UTC +1  UTC +2  
Swiss Exchange - SIX
ЦЮРИХ   09:00 - 17:30   UTC +1  UTC +2  
London Stock Exchange - LSE
ЛОНДОН  08:00 - 16:30   UTC 0   UTC +1  
BM&FBOVESPA
САН-ПАУЛУ Бразилия  10:00 - 17:20   UTC -3  UTC -2  
New York Stock Exchange - NYSE
НЬЮ-ЙОРК    09:30 - 16:00   UTC -5  UTC -4  
Toronto Stock Exchange - TSX
ТОРОНТО     09:30 - 16:00   UTC -5  UTC -4  
Chicago Stock Exchange - CHX
ЧИКАГО  08:30 - 15:00   UTC -6  UTC -5  """.split("tn")})
df.reindex()
df["id"] = df.index
df["фондовая биржа"] = df["lines"].apply(lambda s: s.split('t')[0].replace("n", " "))
df["время торговой сессии"] = df["lines"].apply(lambda s: s.split('t')[1].replace("n", " ") if len(s.split('t')) > 1 else "")
df["часовой пояс"] = df["lines"].apply(lambda s: s.split('t')[2].replace("n", " ") if len(s.split('t')) > 2 else "")
df["при переходе на летнее время"] = df["lines"].apply(lambda s: s.split('t')[3].replace("n", " ") if len(s.split('t')) > 3 else "")
df["в данный момент действует время"] = df["lines"].apply(lambda s: s.split('t')[4].replace("n", " ") if len(s.split('t')) > 4 else "")
m = {0: (-41.1720,174.4638) # Веллингтон
    ,1: (-33.5210,151.1230) # Сидней
    ,2: (35.41,139.41) # Токио
    ,3: (1.17,103.50) # Сингапур
    ,4: (22.3,114.2) # Гонг Конг
    ,5: (31.2014,121.1313) # Шан Хай
    ,6: (18.58,72.50) # Мумбаи
    ,7: (55.4521, 37.3704) # Москва
    ,8: (25.1611, 55.1834) # Дубаи
    ,9: (24.3900, 46.4236) # Эр-рияд
    ,10: (-26.0842, 28.0301) # ЙОХАННЕСБУРГ
    ,11: (50.0649, 8.4047) # Франкфурт
    ,12: (47.2230, 8.3230) # ЦЮРИХ
    ,13: (51.3026, -0.0739) # ЛОНДОН
    ,14: (-23.30, -46.37) # САН-ПАУЛУ
    ,15: (40.4342, -73.5939) # НЬЮ ЙОРК
    ,16: (43.3855, -79.2307) # ТОРОНТО
    ,17: (41.54, -87.39)} # ЧИКАГО
df["lat"] = df["id"].apply(lambda i: m[i][0] if i >= 0 else 56.0)
df["lon"] = df["id"].apply(lambda i: m[i][1] if i >= 0 else 37.0)

print(len(df))
display(df)

lines id фондовая биржа время торговой сессии часовой пояс при переходе на летнее время в данный момент действует время lat lon 0 nNew Zealand Exchange - NZXnВЕЛЛИНГТОН t10:... 0 New Zealand Exchange - NZX ВЕЛЛИНГТОН 10:00 - 16:45 UTC +12 UTC +13 -41.1720 174.4638 1 Australian Securities Exchange - ASXnСИДНЕЙ ... 1 Australian Securities Exchange - ASX СИДНЕЙ 10:00 - 16:00 UTC +10 UTC +11 -33.5210 151.1230 2 Japan Exchange Group - JPXnТОКИО t09:00 - 15... 2 Japan Exchange Group - JPX ТОКИО 09:00 - 15:00 UTC +9 - 35.4100 139.4100 3 Singapore Exchange - SGXnСИНГАПУР t09:00 - 1... 3 Singapore Exchange - SGX СИНГАПУР 09:00 - 17:00 UTC +8 - 1.1700 103.5000 4 Hong Kong - HKEXnГонконг t09:30 - 16:00 tUT... 4 Hong Kong - HKEX Гонконг 09:30 - 16:00 UTC +8 - 22.3000 114.2000 5 Shanghai Stock Exchange - SSEnШАНХАЙ t09:30 ... 5 Shanghai Stock Exchange - SSE ШАНХАЙ 09:30 - 15:00 UTC +8 - 31.2014 121.1313 6 National Stock Exchange of India - NSEnМумбай... 6 National Stock Exchange of India - NSE Мумбай 09:15 - 15:30 UTC +5:30 - 18.5800 72.5000 7 Moscow Exchange - MOEXnМОСКВА t09:30 - 19:00... 7 Moscow Exchange - MOEX МОСКВА 09:30 - 19:00 UTC +3 - 55.4521 37.3704 8 Dubai Financial Market’s - DFMnДУБАЙ t10:00 ... 8 Dubai Financial Market’s - DFM ДУБАЙ 10:00 - 14:00 UTC +4 - 25.1611 55.1834 9 Saudi Stock Exchange - TadawulnЭР-РИЯД t10:0... 9 Saudi Stock Exchange - Tadawul ЭР-РИЯД 10:00 - 15:00 UTC +3 - 24.3900 46.4236 10 Johannesburg Stock Exchange - JSEnЙОХАННЕСБУР... 10 Johannesburg Stock Exchange - JSE ЙОХАННЕСБУРГ 09:00 - 17:00 UTC +2 - -26.0842 28.0301 11 Frankfurt Stock Exchange - FWBnФРАНКФУРТ t09... 11 Frankfurt Stock Exchange - FWB ФРАНКФУРТ 09:00 - 17:30 UTC +1 UTC +2 50.0649 8.4047 12 Swiss Exchange - SIXnЦЮРИХ t09:00 - 17:30 t... 12 Swiss Exchange - SIX ЦЮРИХ 09:00 - 17:30 UTC +1 UTC +2 47.2230 8.3230 13 London Stock Exchange - LSEnЛОНДОН t08:00 - ... 13 London Stock Exchange - LSE ЛОНДОН 08:00 - 16:30 UTC 0 UTC +1 51.3026 -0.0739 14 BM&FBOVESPAnСАН-ПАУЛУ Бразилия t10:00 - 17:2... 14 BM&FBOVESPA САН-ПАУЛУ Бразилия 10:00 - 17:20 UTC -3 UTC -2 -23.3000 -46.3700 15 New York Stock Exchange - NYSEnНЬЮ-ЙОРК t09:... 15 New York Stock Exchange - NYSE НЬЮ-ЙОРК 09:30 - 16:00 UTC -5 UTC -4 40.4342 -73.5939 16 Toronto Stock Exchange - TSXnТОРОНТО t09:30 ... 16 Toronto Stock Exchange - TSX ТОРОНТО 09:30 - 16:00 UTC -5 UTC -4 43.3855 -79.2307 17 Chicago Stock Exchange - CHXnЧИКАГО t08:30 -... 17 Chicago Stock Exchange - CHX ЧИКАГО 08:30 - 15:00 UTC -6 UTC -5 41.5400 -87.3900

Взял московское время с шагом по 20 минут и нарисовал биржи зеленым, желтым, красным и синим в соответствии с тем сколько времени прошло с открытия: ноль, четверть, две четверти или три.

#README http://python-visualization.github.io/folium/docs-v0.5.0/quickstart.html#Markers

import folium

m = folium.Map(location=[55.5236, 37.6750],tiles='Mapbox Bright',zoom_start=1)
for k in range(0, len(df)):
    color='green'
    folium.Marker(location=[df.at[k,"lat"], df.at[k,"lon"]]
        ,popup=df.at[k,"фондовая биржа"],icon=folium.Icon(color=color)).add_to(m)
m.save("C:\code\_.htm")
display(m)

for i in range(0, 24):
    for j in range(0, 3):
        print("%02d:%02d"%(i,j*20))
        utc_hh = (i - 3) % 24
        utc_mm = j * 20
        m = folium.Map(location=[55.5236, 37.6750],tiles='Mapbox Bright',zoom_start=1)
        for k in range(0, len(df)):
            delta_hh = int(df.at[k,"часовой пояс"].split(" ")[1].replace(":30",""))
            delta_mm = 0
            cur_hh = (utc_hh + delta_hh) % 24
            cur_mm = (utc_mm + delta_mm) % 60
            min_hh = int(df.at[k,"время торговой сессии"].split("-")[0].split(":")[0])
            min_mm = int(df.at[k,"время торговой сессии"].split("-")[0].split(":")[1])
            max_hh = int(df.at[k,"время торговой сессии"].split("-")[1].split(":")[0])
            max_mm = int(df.at[k,"время торговой сессии"].split("-")[1].split(":")[1])
            step_mm = (max_hh - min_hh) * 15
            if cur_hh*60+cur_mm >= min_hh*60+min_mm and cur_hh*60+cur_mm < max_hh*60+max_mm:
                color='green'
                if cur_hh*60+cur_mm >= min_hh*60+min_mm+step_mm and cur_hh*60+cur_mm < min_hh*60+min_mm+step_mm*2:
                    color='orange'
                if cur_hh*60+cur_mm >= min_hh*60+min_mm+step_mm*2 and cur_hh*60+cur_mm < min_hh*60+min_mm+step_mm*3:
                    color='red'
                if cur_hh*60+cur_mm >= min_hh*60+min_mm+step_mm*3 and cur_hh*60+cur_mm < min_hh*60+min_mm+step_mm*4:
                    color='blue'
                folium.Marker(location=[df.at[k,"lat"], df.at[k,"lon"]]
                          ,popup=df.at[k,"фондовая биржа"]+df.at[k,"время торговой сессии"]+df.at[k,"часовой пояс"]
                          ,icon=folium.Icon(color=color)).add_to(m)
        m.save("C:\code\%02d_%02d.htm"%(i,j*20))
        display(m)

Получилась интересная картина.

Много картинок

Folium — пример изображения времени работы мировых бирж - 1

Folium — пример изображения времени работы мировых бирж - 2

Folium — пример изображения времени работы мировых бирж - 3

Folium — пример изображения времени работы мировых бирж - 4

Folium — пример изображения времени работы мировых бирж - 5

Folium — пример изображения времени работы мировых бирж - 6

Folium — пример изображения времени работы мировых бирж - 7

Folium — пример изображения времени работы мировых бирж - 8

Folium — пример изображения времени работы мировых бирж - 9

Folium — пример изображения времени работы мировых бирж - 10

Folium — пример изображения времени работы мировых бирж - 11

Folium — пример изображения времени работы мировых бирж - 12

Folium — пример изображения времени работы мировых бирж - 13

Folium — пример изображения времени работы мировых бирж - 14

Folium — пример изображения времени работы мировых бирж - 15

Folium — пример изображения времени работы мировых бирж - 16

Folium — пример изображения времени работы мировых бирж - 17

Folium — пример изображения времени работы мировых бирж - 18

Folium — пример изображения времени работы мировых бирж - 19

Folium — пример изображения времени работы мировых бирж - 20

Folium — пример изображения времени работы мировых бирж - 21

Folium — пример изображения времени работы мировых бирж - 22

Folium — пример изображения времени работы мировых бирж - 23

Folium — пример изображения времени работы мировых бирж - 24

Folium — пример изображения времени работы мировых бирж - 25

Folium — пример изображения времени работы мировых бирж - 26

Folium — пример изображения времени работы мировых бирж - 27

Folium — пример изображения времени работы мировых бирж - 28

Folium — пример изображения времени работы мировых бирж - 29

Folium — пример изображения времени работы мировых бирж - 30

Folium — пример изображения времени работы мировых бирж - 31

Folium — пример изображения времени работы мировых бирж - 32

Folium — пример изображения времени работы мировых бирж - 33

Folium — пример изображения времени работы мировых бирж - 34

Folium — пример изображения времени работы мировых бирж - 35

Folium — пример изображения времени работы мировых бирж - 36

Folium — пример изображения времени работы мировых бирж - 37

Folium — пример изображения времени работы мировых бирж - 38

Folium — пример изображения времени работы мировых бирж - 39

Folium — пример изображения времени работы мировых бирж - 40

Folium — пример изображения времени работы мировых бирж - 41

Folium — пример изображения времени работы мировых бирж - 42

Folium — пример изображения времени работы мировых бирж - 43

Folium — пример изображения времени работы мировых бирж - 44

Folium — пример изображения времени работы мировых бирж - 45

Folium — пример изображения времени работы мировых бирж - 46

Folium — пример изображения времени работы мировых бирж - 47

Folium — пример изображения времени работы мировых бирж - 48

Folium — пример изображения времени работы мировых бирж - 49

Folium — пример изображения времени работы мировых бирж - 50

Folium — пример изображения времени работы мировых бирж - 51

Folium — пример изображения времени работы мировых бирж - 52

Folium — пример изображения времени работы мировых бирж - 53

Folium — пример изображения времени работы мировых бирж - 54

Folium — пример изображения времени работы мировых бирж - 55

Folium — пример изображения времени работы мировых бирж - 56

Folium — пример изображения времени работы мировых бирж - 57

Folium — пример изображения времени работы мировых бирж - 58

Folium — пример изображения времени работы мировых бирж - 59

Folium — пример изображения времени работы мировых бирж - 60

Folium — пример изображения времени работы мировых бирж - 61

Folium — пример изображения времени работы мировых бирж - 62

Folium — пример изображения времени работы мировых бирж - 63

Folium — пример изображения времени работы мировых бирж - 64

Folium — пример изображения времени работы мировых бирж - 65

Folium — пример изображения времени работы мировых бирж - 66

Folium — пример изображения времени работы мировых бирж - 67

Folium — пример изображения времени работы мировых бирж - 68

Folium — пример изображения времени работы мировых бирж - 69

Folium — пример изображения времени работы мировых бирж - 70

Folium — пример изображения времени работы мировых бирж - 71

Folium — пример изображения времени работы мировых бирж - 72

Folium — пример изображения времени работы мировых бирж - 73

Очень рекомендую вам не полениться, установить себе Anaconda и тоже попробовать.

Успехов вам!

Автор: разработчик 80-го уровня

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/294796

Ссылки в тексте:

[1] смотрим здесь: http://python-visualization.github.io/folium/docs-v0.5.0/quickstart.html

[2] сайта: http://stocktime.ru/info.htm

[3] Источник: http://habrahabr.ru/sandbox/124103/