Язык программирования Python все больше находит свое применение в научных расчетах рачётах и анализе данных.
Среди причин популярности языка является его лаконичность и удобство чтения кода, который, учитывая его синтаксис и рекомендации по написанию кода pep8, просто не может оказаться плохо читаемым.
Воспроизведение приводимых ниже экспериментов предполагает установленный Python интерпретатор (код протестирован на Python 3.5.2), с установленным пакетом Pandas. Дополнительно, для фильтрации данных по сложным географическим областям, предполагается, что в системе установлены пакеты: pyshp (для чтения shape файлов), shapely (для определения принадлежности точки полигону), geopy (для вычисления расстояний на геоиде/сфере Земли).
Для пользователей Windows рекомендуется установить дистрибутив Anaconda, который включает Pandas, а также большое число других пакетов для организации вычислений.
Выполняемый код в приводимом документе содержится в блоках, имеющих вид In[xxx]
; его можно выполнить с использованием интерпретатора Python, либо интерактивном режиме, либо предварительно сохранив в файл Python скрипта -- текстовой файл с расширением .py
.
Данный документ создан при помощи Jupyter, он входит в последние дистрибутивы Anaconda.
Импортируем пакет Pandas. Данный пакет содержит большое количество полезных функций для выполнения операций загрузки и предварительной обработки данных, имеющих различную структуру.
import pandas as pd
Определим переменную HERBARIUM_SEARCH_URL
, которая будет указывать на URL, по которому следует посылать поисковые запросы к электронному гербарному каталогу.
HERBARIUM_SEARCH_URL = 'http://botsad.ru/hitem/json/'
Название переменной намерено выбрано интуитивно понятным, можно было бы ограничиться и более простым названием, например, URL
. Тем не менее, крайне рекомендуется давать понятные и лаконичные названия переменным, особенно, если описываемая программой вычислительная процедура состоит из большого числа действий/присвоений/вычислений.
Формирование поисковых запросов допускается как по шифрованному HTTPS протоколу, так и без шифрования HTTP. В случае использования HTTPS, это следует указать в переменной HERBARIUM_SEARCH_URL
, т.е. заменить "http://" на "https://".
Зададим поисковые параметры и их значения в виде списка: (полный перечень поисковых параметров можно посмотреть по ссылке
search_parameters = (('collectedby', 'Крестов'),
('identifiedby', 'Крестов'),
('colstart', '2016-01-01'),
('colend', '2016-12-30')
)
Импортируем необходимые библиотеки для выполнения HTTP-запроса к серверу. В зависимости от используемой версии Python импортирование выполняется по разному. И хотя Python 2.x в скором будущем официально перестанет поддерживаться, ниже дается фрагмент кода (импорт необходимых в дальнейшем библиотек), подходящий как для Python 2.x, так и Python 3.x:
try:
# Python 3.x
from urllib.parse import quote
from urllib.request import urlopen
except ImportError:
# Python 2.x
from urllib import quote
from urllib import urlopen
Создадим текущий поисковый url, используя значения поисковых параметров search_parameters
:
search_request_url = HERBARIUM_SEARCH_URL + '?' + '&'.join(map(lambda x: x[0] + '=' + quote(x[1].strip()), search_parameters))
Поскольку в соответствии со спецификацией URI не должен содержать не ASCII-символы, каковыми в частности являются буквы русского алфавита, участвующие в поисковом запросе, здесь используется вспомогательная функция quote
, которая берет на себя операцию кодирования таких символов.
В случе несложных запросов, поисковый URI можно записать одной строкой и не вводить вспомогательную структуру search_parameters
. Однако, схема с использованием search_parameters
более общая, позволяет структурировать поисковые запросы, создавав предварительно их массив, например:
list_of_search_pars = [search_parameters1, search_parameters2, search_parameters3,]
Вот так выглядит поисковый url (search_request_url
).
search_request_url
'http://botsad.ru/hitem/json/?collectedby=%D0%9A%D1%80%D0%B5%D1%81%D1%82%D0%BE%D0%B2&identifiedby=%D0%9A%D1%80%D0%B5%D1%81%D1%82%D0%BE%D0%B2&colstart=2016-01-01&colend=2016-12-30'
import json
server_response = urlopen(search_request_url)
data = json.loads(server_response.read().decode('utf-8'))
server_response.close()
Теперь переменная data
представляeт собой Python-словарь с полями, определенными в документе, описывающим спецификацию json-ответа сервера на поисковый запрос.
Прежде чем начать работать с полученными данными, важно проверить, прошла ли загрузка данных без ошибок и предупреждений.
Для этого следует посмотреть значения полей errors
и warnings
структуры data
. В случае успешно выполненного запроса, поля должны быть пустыми.
data['errors'], data['warnings']
([], [])
Следует отметить, что наличие предупреждений warnings
, не является критичным; более того, при некоторых видах поисковых запросов, наличие warnings
неизбежно; Таким образом, обработку данных следует продолжать и при не пустом значении поля warnings
.
Тем не менее, полностью игнорировать warnings
не следует; данный параметр может содержать полезную информацию о результатах поиска и\или корректности поискового запроса.
print("Количество записей, удовлетворящих Вашему поисковому запросу равно:", len(data['data']))
Количество записей, удовлетворящих Вашему поисковому запросу равно: 173
Для большего удобстав работы с данными, рекомендуется преобразовать их в DataFrame-объект из пакета Pandas. Для этого, достаточно подать на вход конструктора DataFrame словарь data['data']
:
search_df = pd.DataFrame(data['data'])
Общую информацию о созданном DataFrame-объекте можно получить используя методы .info()
или .describe()
:
search_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 173 entries, 0 to 172 Data columns (total 41 columns): acronym 173 non-null object additionals 173 non-null object altitude 173 non-null object branch 173 non-null object collection_finished 173 non-null object collection_started 173 non-null object collectors 173 non-null object country 173 non-null object country_id 173 non-null int64 created 173 non-null object details 173 non-null object dethistory 173 non-null object devstage 173 non-null object district 173 non-null object family 173 non-null object family_authorship 173 non-null object fieldid 173 non-null object genus 173 non-null object genus_authorship 173 non-null object gpsbased 173 non-null bool id 173 non-null int64 identification_finished 173 non-null object identification_started 173 non-null object identifiers 173 non-null object images 173 non-null object infraspecific_authorship 173 non-null object infraspecific_epithet 173 non-null object infraspecific_rank 173 non-null object itemcode 173 non-null object latitude 173 non-null float64 longitude 173 non-null float64 note 173 non-null object region 173 non-null object short_note 173 non-null object significance 173 non-null object species_authorship 173 non-null object species_epithet 173 non-null object species_fullname 173 non-null object species_id 173 non-null int64 species_status 173 non-null object updated 173 non-null object dtypes: bool(1), float64(2), int64(3), object(35) memory usage: 54.3+ KB
Так выглядит сокращенный вариант таблицы гербарных данных:
search_df
acronym | additionals | altitude | branch | collection_finished | collection_started | collectors | country | country_id | created | ... | note | region | short_note | significance | species_authorship | species_epithet | species_fullname | species_id | species_status | updated | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | VBGI | [] | 2016-07-31 | 2016-07-31 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | L. | compactum | Rheum compactum L. | 463887 | From plantlist | 2017-06-13 | |||||
1 | VBGI | [] | 2016-07-30 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | (Pall.) Regel | pumila | Pinus pumila (Pall.) Regel | 430118 | From plantlist | 2017-06-13 | |||||
2 | VBGI | [] | 2016-07-30 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | молодое дерево 8 м высотой | Хабаровский край | Siebold & Zucc. | koraiensis | Pinus koraiensis Siebold & Zucc. | 430060 | From plantlist | 2017-06-13 | ||||
3 | VBGI | [] | 551 | 2016-08-10 | 2016-08-10 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | дерево высотой 14 м | Хабаровский край | (Trautv. ex Maxim.) Maxim. | nephrolepis | Abies nephrolepis (Trautv. ex Maxim.) Maxim. | 429823 | From plantlist | 2017-06-13 | |||
4 | VBGI | [] | 1000 | 2016-08-11 | 2016-08-11 | Корзников К.А., Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | (L.) R.Br. | repens | Goodyera repens (L.) R.Br. | 397192 | From plantlist | 2017-06-13 | ||||
5 | VBGI | [] | 1687 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | Willd. ex Schult. & Schult.f. | splendens | Allium splendens Willd. ex Schult. & Schult.f. | 18583 | From plantlist | 2017-06-13 | ||||
6 | VBGI | [] | 1687 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | (Franch. & Sav.) Jacobsen | rosea | Rhodiola rosea (Franch. & Sav.) Jacobsen | 190849 | From plantlist | 2017-06-13 | ||||
7 | VBGI | [] | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-22 | ... | Хабаровский край | (Fisch. & C.A. Mey. ex Turcz.) Hiroë | seseloides | Seseli seseloides (Fisch. & C.A. Mey. ex Turcz... | 588165 | From plantlist | 2017-06-13 | |||||
8 | VBGI | [] | 543 | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (L.) R.Br. | repens | Goodyera repens (L.) R.Br. | 397192 | From plantlist | 2017-06-13 | ||||
9 | VBGI | [] | 543 | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (L.) House | secunda | Orthilia secunda (L.) House | 223419 | From plantlist | 2017-06-13 | ||||
10 | VBGI | [] | 1478 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (L.) Nied. | alpina | Arctous alpina (L.) Nied. | 220205 | From plantlist | 2017-06-13 | |||||
11 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Trautv. & C.A.Mey. | gigantea | Corydalis gigantea Trautv. & C.A.Mey. | 422189 | From plantlist | 2017-06-13 | ||||||
12 | VBGI | [] | 551 | 2016-08-10 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Fisch. & C.A. Mey. | davurica | Smilacina davurica Fisch. & C.A. Mey. | 58614 | From plantlist | 2017-06-13 | |||||
13 | VBGI | [] | 1000 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | A.Gray | uniflora | Moneses uniflora A.Gray | 223313 | Approved | 2017-06-13 | |||||
14 | VBGI | [] | 1650 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | L. | farinosa | Primula farinosa L. | 479002 | From plantlist | 2017-06-13 | |||||
15 | VBGI | [] | 1650 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | L. | palustris | Parnassia palustris L. | 115798 | From plantlist | 2017-06-13 | |||||
16 | VBGI | [] | 1687 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Maxim. | redowskianum | Rhododendron redowskianum Maxim. | 224959 | From plantlist | 2017-06-13 | |||||
17 | VBGI | [] | 1422 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | DC. | erianthum | Geranium erianthum DC. | 242710 | From plantlist | 2017-06-13 | |||||
18 | VBGI | [] | 1430 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Biehler) Fisch. | gmelinii | Adenophora gmelinii (Biehler) Fisch. | 101301 | From plantlist | 2017-06-13 | |||||
19 | VBGI | [] | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Michx. | scirpoides | Equisetum scirpoides Michx. | 219648 | From plantlist | 2017-06-13 | |||||
20 | VBGI | [] | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Lam. | punctata | Campanula punctata Lam. | 101961 | From plantlist | 2017-06-13 | |||||
21 | VBGI | [] | 2016-08-13 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Kom. | ussuriensis | Carex ussuriensis Kom. | 199952 | From plantlist | 2017-06-13 | |||||
22 | VBGI | [] | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (L.) Fenzl | lateriflora | Moehringia lateriflora (L.) Fenzl | 110809 | Approved | 2017-06-13 | ||||||
23 | VBGI | [] | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Maxim.) Pax | sylvatica | Pseudostellaria sylvatica (Maxim.) Pax | 111296 | Approved | 2017-06-13 | ||||||
24 | VBGI | [] | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Nakai | neoserrata | Saussurea neoserrata Nakai | 169440 | From plantlist | 2017-06-13 | ||||||
25 | VBGI | [] | 543 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Sw. | pallescens | Luzula pallescens Sw. | 265836 | From plantlist | 2017-06-13 | |||||
26 | VBGI | [] | 1200 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Trautv. & C.A. Mey. | ukurunduense | Acer ukurunduense Trautv. & C.A. Mey. | 588172 | From plantlist | 2017-06-13 | |||||
27 | VBGI | [] | 1200 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Kom.) L.H.Bailey | suavis | Weigela suavis (Kom.) L.H.Bailey | 107629 | From plantlist | 2017-06-13 | |||||
28 | VBGI | [] | 1200 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Fisch. ex Trevir.) Pimenov | terebinthacea | Kitagawia terebinthacea (Fisch. ex Trevir.) Pi... | 588202 | From plantlist | 2017-06-13 | |||||
29 | VBGI | [] | 1000 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Fisch. ex Besser) DC. | lagocephala | Artemisia lagocephala (Fisch. ex Besser) DC. | 125884 | From plantlist | 2017-06-13 | |||||
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
143 | VBGI | [] | 1200 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A. Mey. | ukurunduense | Acer ukurunduense Trautv. & C.A. Mey. | 588172 | From plantlist | 2017-06-13 | |||||
144 | VBGI | [] | 1500 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | узколистная форма | Хабаровский край | Regel & Tiling | ajanensis | Tilingia ajanensis Regel & Tiling | 34270 | From plantlist | 2017-06-13 | ||||
145 | VBGI | [] | 1200 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (Fisch. ex Trevir.) Pimenov | terebinthacea | Kitagawia terebinthacea (Fisch. ex Trevir.) Pi... | 588202 | From plantlist | 2017-06-13 | |||||
146 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (F.Schmidt) Benth. ex Maxim. | maximowiczii | Angelica maximowiczii (F.Schmidt) Benth. ex Ma... | 28096 | From plantlist | 2017-06-13 | ||||||
147 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (F.Schmidt) Benth. ex Maxim. | maximowiczii | Angelica maximowiczii (F.Schmidt) Benth. ex Ma... | 28096 | From plantlist | 2017-06-13 | ||||||
148 | VBGI | [] | 2016-08-09 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Miq. | keiskei | Convallaria keiskei Miq. | 56562 | From plantlist | 2017-06-13 | ||||||
149 | VBGI | [] | 1500 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A.Mey. | middendorffii | Hemerocallis middendorffii Trautv. & C.A.Mey. | 585041 | From plantlist | 2017-06-13 | |||||
150 | VBGI | [] | 1500 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A.Mey. | middendorffii | Hemerocallis middendorffii Trautv. & C.A.Mey. | 585041 | From plantlist | 2017-06-13 | |||||
151 | VBGI | [] | 2016-07-31 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | M.Bieb. | verticillata | Paris verticillata M.Bieb. | 350346 | From plantlist | 2017-06-13 | ||||||
152 | VBGI | [] | 1378 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (Trautv. & C.A.Mey.) Takeda & Miyake | anticleoides | Veratrum anticleoides (Trautv. & C.A.Mey.) Tak... | 350453 | From plantlist | 2017-06-13 | |||||
153 | VBGI | [] | 1687 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Willd. ex Schult. & Schult.f. | splendens | Allium splendens Willd. ex Schult. & Schult.f. | 18583 | From plantlist | 2017-06-13 | ||||
154 | VBGI | [] | 551 | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Fisch. & C.A. Mey. | davurica | Smilacina davurica Fisch. & C.A. Mey. | 58614 | From plantlist | 2017-06-13 | |||||
155 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A.Mey. | gigantea | Corydalis gigantea Trautv. & C.A.Mey. | 422189 | From plantlist | 2017-06-13 | ||||||
156 | VBGI | [] | 2016-07-31 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Turcz. | schelichowii | Astragalus schelichowii Turcz. | 291178 | From plantlist | 2017-06-13 | ||||||
157 | VBGI | [] | 550 | 2016-07-31 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (Rupr.) Regel | maximowiczii | Lonicera maximowiczii (Rupr.) Regel | 106030 | From plantlist | 2017-06-13 | |||||
158 | VBGI | [] | 550 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | L. | racemosa | Sambucus racemosa L. | 9060 | From plantlist | 2017-06-13 | |||||
159 | VBGI | [] | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (Gorodkov) V.I.Krecz. | rigidioides | Carex rigidioides (Gorodkov) V.I.Krecz. | 199502 | From plantlist | 2017-06-13 | ||||||
160 | VBGI | [] | 551 | 2016-08-10 | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | дерево высотой 14 м | Хабаровский край | (Trautv. ex Maxim.) Maxim. | nephrolepis | Abies nephrolepis (Trautv. ex Maxim.) Maxim. | 429823 | From plantlist | 2017-06-13 | |||
161 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | (Trevir.) Griseb. | latifolia | Cinna latifolia (Trevir.) Griseb. | 446416 | From plantlist | 2017-06-13 | ||||||
162 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | A.P. Khokhr. | sudetica | Rhizomatopteris sudetica A.P. Khokhr. | 204221 | From plantlist | 2017-06-13 | ||||||
163 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | A.P. Khokhr. | sudetica | Rhizomatopteris sudetica A.P. Khokhr. | 204221 | From plantlist | 2017-06-13 | ||||||
164 | VBGI | [] | 700 | 2016-08-09 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | Tzvelev | amurensis | Leptorumohra amurensis Tzvelev | 215409 | From plantlist | 2017-06-13 | |||||
165 | VBGI | [] | 700 | 2016-08-09 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | (Maxim.) Ching | spinulosa | Pseudocystopteris spinulosa (Maxim.) Ching | 588188 | From plantlist | 2017-06-13 | |||||
166 | VBGI | [] | 700 | 2016-08-09 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | (Maxim.) Ching | spinulosa | Pseudocystopteris spinulosa (Maxim.) Ching | 588188 | From plantlist | 2017-06-13 | |||||
167 | VBGI | [] | 700 | 2016-08-09 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | (L.) Kuhn | aquilinum | Pteridium aquilinum (L.) Kuhn | 205696 | From plantlist | 2017-06-13 | |||||
168 | VBGI | [] | 2016-07-31 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | (L.) Schott | fragrans | Dryopteris fragrans (L.) Schott | 212858 | From plantlist | 2017-06-13 | ||||||
169 | VBGI | [] | 1300 | 2016-07-30 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | Regel & Tiling | ajanensis | Tilingia ajanensis Regel & Tiling | 34270 | From plantlist | 2017-06-13 | |||||
170 | VBGI | [] | 2016-08-10 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | Dewey | disperma | Carex disperma Dewey | 198160 | From plantlist | 2017-06-13 | ||||||
171 | VBGI | [] | 600 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | L. | sylvaticum | Equisetum sylvaticum L. | 219650 | From plantlist | 2017-06-13 | |||||
172 | VBGI | [] | 600 | 2016-08-13 | Крестов П.В. | Russia | 162 | 2017-02-16 | ... | Хабаровский край | L. | sylvaticum | Equisetum sylvaticum L. | 219650 | From plantlist | 2017-06-13 |
173 rows × 41 columns
Отфильтруем полученную таблицу, оставив только те записи, в которых определена высота:
altitude_only = search_df[search_df.altitude != ''].copy()
altitude_only.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 123 entries, 3 to 172 Data columns (total 41 columns): acronym 123 non-null object additionals 123 non-null object altitude 123 non-null object branch 123 non-null object collection_finished 123 non-null object collection_started 123 non-null object collectors 123 non-null object country 123 non-null object country_id 123 non-null int64 created 123 non-null object details 123 non-null object dethistory 123 non-null object devstage 123 non-null object district 123 non-null object family 123 non-null object family_authorship 123 non-null object fieldid 123 non-null object genus 123 non-null object genus_authorship 123 non-null object gpsbased 123 non-null bool id 123 non-null int64 identification_finished 123 non-null object identification_started 123 non-null object identifiers 123 non-null object images 123 non-null object infraspecific_authorship 123 non-null object infraspecific_epithet 123 non-null object infraspecific_rank 123 non-null object itemcode 123 non-null object latitude 123 non-null float64 longitude 123 non-null float64 note 123 non-null object region 123 non-null object short_note 123 non-null object significance 123 non-null object species_authorship 123 non-null object species_epithet 123 non-null object species_fullname 123 non-null object species_id 123 non-null int64 species_status 123 non-null object updated 123 non-null object dtypes: bool(1), float64(2), int64(3), object(35) memory usage: 39.5+ KB
Как оказалось, таких записей оказалось 123.
Найдем их среднюю высоту сбора:
print('Средняя высота сбора данных составляет {} м над уровнем моря'.format(altitude_only.altitude.astype(float).mean()))
Средняя высота сбора данных составляет 1065.0325203252032 м над уровнем моря
Для рассчёта средней высоты было использовано преобразование данных из строкового формата в числовой (с плавающей точкой). Это было сделано при помощи метода .astype
; важно отметить, что такой подход может использоваться не всегда, например, в случае интервально заданных высот, таких как "750-800", следует применять более тонкие методы преобразования данных в числовой формат.
Добавим еще условия фильтрации: найдем данные, у которых определены высоты, большие километра, и которые были собраны в августе 2016 года.
Для этого используем созданный DataFrame altitude_only
, предварительно преобразовав его колонки collection_started
и altitude
к типам, описывающим даты и числа соответственно.
altitude_only.altitude = altitude_only.altitude.astype(float)
altitude_only.collection_started = pd.to_datetime(altitude_only.collection_started)
deadline = pd.to_datetime('2016-08-01')
altitude_only[(altitude_only.altitude > 1000) & (altitude_only.collection_started>deadline)]
acronym | additionals | altitude | branch | collection_finished | collection_started | collectors | country | country_id | created | ... | note | region | short_note | significance | species_authorship | species_epithet | species_fullname | species_id | species_status | updated | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
5 | VBGI | [] | 1687.0 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | Willd. ex Schult. & Schult.f. | splendens | Allium splendens Willd. ex Schult. & Schult.f. | 18583 | From plantlist | 2017-06-13 | ||||
6 | VBGI | [] | 1687.0 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-20 | ... | Хабаровский край | (Franch. & Sav.) Jacobsen | rosea | Rhodiola rosea (Franch. & Sav.) Jacobsen | 190849 | From plantlist | 2017-06-13 | ||||
10 | VBGI | [] | 1478.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (L.) Nied. | alpina | Arctous alpina (L.) Nied. | 220205 | From plantlist | 2017-06-13 | |||||
14 | VBGI | [] | 1650.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | L. | farinosa | Primula farinosa L. | 479002 | From plantlist | 2017-06-13 | |||||
15 | VBGI | [] | 1650.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | L. | palustris | Parnassia palustris L. | 115798 | From plantlist | 2017-06-13 | |||||
16 | VBGI | [] | 1687.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | Maxim. | redowskianum | Rhododendron redowskianum Maxim. | 224959 | From plantlist | 2017-06-13 | |||||
17 | VBGI | [] | 1422.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | DC. | erianthum | Geranium erianthum DC. | 242710 | From plantlist | 2017-06-13 | |||||
18 | VBGI | [] | 1430.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2016-12-30 | ... | Хабаровский край | (Biehler) Fisch. | gmelinii | Adenophora gmelinii (Biehler) Fisch. | 101301 | From plantlist | 2017-06-13 | |||||
46 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Regel & Tiling | ajanensis | Tilingia ajanensis Regel & Tiling | 34270 | From plantlist | 2017-06-13 | |||||
47 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | узколистная форма | Хабаровский край | Regel & Tiling | ajanensis | Tilingia ajanensis Regel & Tiling | 34270 | From plantlist | 2017-06-13 | ||||
48 | VBGI | [] | 1378.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Zdor. & Schapoval | woroschilowii | Aster woroschilowii Zdor. & Schapoval | 127224 | From plantlist | 2017-06-13 | |||||
49 | VBGI | [] | 1378.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | (Trautv. & C.A.Mey.) Takeda & Miyake | anticleoides | Veratrum anticleoides (Trautv. & C.A.Mey.) Tak... | 350453 | From plantlist | 2017-06-13 | |||||
50 | VBGI | [] | 1378.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Fisch. ex DC. | radiata | Scorzonera radiata Fisch. ex DC. | 170104 | From plantlist | 2017-06-13 | |||||
51 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Fisch. ex DC. | radiata | Scorzonera radiata Fisch. ex DC. | 170104 | From plantlist | 2017-06-13 | |||||
52 | VBGI | [] | 1472.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Trautv. & C.A. Mey. | middendorffii | Betula middendorffii Trautv. & C.A. Mey. | 588182 | From plantlist | 2017-06-13 | |||||
53 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | L. | uliginosum | Vaccinium uliginosum L. | 226563 | From plantlist | 2017-06-13 | |||||
54 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-03 | ... | Хабаровский край | Fisch. ex Herder | spiraeifolia | Solidago spiraeifolia Fisch. ex Herder | 174602 | From plantlist | 2017-06-13 | |||||
70 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (L.) Asch. & Graebn. | canadense | Chamaepericlymenum canadense (L.) Asch. & Graebn. | 588184 | From plantlist | 2017-06-13 | |||||
72 | VBGI | [] | 1439.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Fisch. ex DC. | radiata | Scorzonera radiata Fisch. ex DC. | 170104 | From plantlist | 2017-06-13 | |||||
73 | VBGI | [] | 1439.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (Trautv. & C.A.Mey.) Takeda & Miyake | anticleoides | Veratrum anticleoides (Trautv. & C.A.Mey.) Tak... | 350453 | From plantlist | 2017-06-13 | |||||
74 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Fisch. ex Herder | spiraeifolia | Solidago spiraeifolia Fisch. ex Herder | 174602 | From plantlist | 2017-06-13 | |||||
75 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Trautv. & C.A.Mey. | middendorffii | Hemerocallis middendorffii Trautv. & C.A.Mey. | 585041 | From plantlist | 2017-06-13 | |||||
76 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Trautv. & C.A. Mey. | middendorffii | Betula middendorffii Trautv. & C.A. Mey. | 588182 | From plantlist | 2017-06-13 | |||||
77 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Burgsd. | sibirica | Juniperus sibirica Burgsd. | 588185 | From plantlist | 2017-06-13 | |||||
78 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (Trautv. & C.A.Mey.) Takeda & Miyake | anticleoides | Veratrum anticleoides (Trautv. & C.A.Mey.) Tak... | 350453 | From plantlist | 2017-06-13 | |||||
79 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Zdor. & Schapoval | woroschilowii | Aster woroschilowii Zdor. & Schapoval | 127224 | From plantlist | 2017-06-13 | |||||
80 | VBGI | [] | 1493.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Fisch. ex DC. | radiata | Scorzonera radiata Fisch. ex DC. | 170104 | From plantlist | 2017-06-13 | |||||
81 | VBGI | [] | 1493.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Kom. | tomentosa | Saussurea tomentosa Kom. | 169678 | From plantlist | 2017-06-13 | |||||
82 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (L.) Nied. | alpina | Arctous alpina (L.) Nied. | 220205 | From plantlist | 2017-06-13 | |||||
83 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Maxim. | redowskianum | Rhododendron redowskianum Maxim. | 224959 | From plantlist | 2017-06-13 | |||||
84 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (Pall.) D.Don | ericoides | Cassiope ericoides (Pall.) D.Don | 220479 | Approved | 2017-06-13 | |||||
85 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (Sw.) Roem. & Schult. | alpina | Hierochloe alpina (Sw.) Roem. & Schult. | 450128 | From plantlist | 2017-06-13 | |||||
86 | VBGI | [] | 1478.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (L.) Bab. | caerulea | Phyllodoce caerulea (L.) Bab. | 223519 | Approved | 2017-06-13 | |||||
87 | VBGI | [] | 1478.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | (Sw.) Roem. & Schult. | alpina | Hierochloe alpina (Sw.) Roem. & Schult. | 450128 | From plantlist | 2017-06-13 | |||||
88 | VBGI | [] | 1472.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | L. | globularis | Carex globularis L. | 198400 | From plantlist | 2017-06-13 | |||||
89 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | Kom. | tomentosa | Saussurea tomentosa Kom. | 169678 | From plantlist | 2017-06-13 | |||||
127 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-01-08 | ... | Хабаровский край | DC. | sibirica | Ligularia sibirica DC. | 159894 | From plantlist | 2017-06-13 | |||||
131 | VBGI | [] | 1687.0 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | (Franch. & Sav.) Jacobsen | rosea | Rhodiola rosea (Franch. & Sav.) Jacobsen | 190849 | From plantlist | 2017-06-13 | ||||
133 | VBGI | [] | 1687.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | Maxim. | redowskianum | Rhododendron redowskianum Maxim. | 224959 | From plantlist | 2017-06-13 | |||||
134 | VBGI | [] | 1687.0 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | Maxim. | redowskianum | Rhododendron redowskianum Maxim. | 224959 | From plantlist | 2017-06-13 | |||||
135 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | DC. | sibirica | Ligularia sibirica DC. | 159894 | From plantlist | 2017-06-13 | |||||
136 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | DC. | sibirica | Ligularia sibirica DC. | 159894 | From plantlist | 2017-06-13 | |||||
137 | VBGI | [] | 1493.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | Kom. | tomentosa | Saussurea tomentosa Kom. | 169678 | From plantlist | 2017-06-13 | |||||
138 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | Kom. | tomentosa | Saussurea tomentosa Kom. | 169678 | From plantlist | 2017-06-13 | |||||
141 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-14 | ... | Хабаровский край | Zdor. & Schapoval | woroschilowii | Aster woroschilowii Zdor. & Schapoval | 127224 | From plantlist | 2017-06-13 | |||||
144 | VBGI | [] | 1500.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | узколистная форма | Хабаровский край | Regel & Tiling | ajanensis | Tilingia ajanensis Regel & Tiling | 34270 | From plantlist | 2017-06-13 | ||||
149 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A.Mey. | middendorffii | Hemerocallis middendorffii Trautv. & C.A.Mey. | 585041 | From plantlist | 2017-06-13 | |||||
150 | VBGI | [] | 1500.0 | 2016-08-02 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Trautv. & C.A.Mey. | middendorffii | Hemerocallis middendorffii Trautv. & C.A.Mey. | 585041 | From plantlist | 2017-06-13 | |||||
152 | VBGI | [] | 1378.0 | 2016-08-08 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | (Trautv. & C.A.Mey.) Takeda & Miyake | anticleoides | Veratrum anticleoides (Trautv. & C.A.Mey.) Tak... | 350453 | From plantlist | 2017-06-13 | |||||
153 | VBGI | [] | 1687.0 | 2016-08-11 | 2016-08-11 | Крестов П.В. | Russia | 162 | 2017-02-15 | ... | Хабаровский край | Willd. ex Schult. & Schult.f. | splendens | Allium splendens Willd. ex Schult. & Schult.f. | 18583 | From plantlist | 2017-06-13 |
50 rows × 41 columns
В текущей редакции HTTP API (см. Описание) электронного гербария не поддерживает запросы типа "ИЛИ", т.е. путем задания поискового URI невозможно задать, например, такой запрос: Найти все образцы, у которых дата сбора была либо весной, либо осенью 2016 года.
Однако, такие запросы легко выполнить разбив их на несколько последовательных запросов с последующей склейкой результатов средствами пакета Pandas
(проблема, связанная с "большими данными" в этом случе не возникнет, поскольку вряд ли приходится ожидать, что объем базы данных будет превышать, например, 10М записей).
Приведем пример формирования 'ИЛИ' запроса с последующей склейкой результатов.
Для этого рассмотрим пару посковых запросов search_query1
и search_query2
, и скомбинируем их, чтобы получить результаты, удовлетворяющие либо первому, либо второму запросу (т.е. search_query1
OR search_query2
):
search_query1 = (('collectedby', 'Крестов'),
('identifiedby', 'Крестов')
)
search_query2 = (('collectedby', 'Баркалов'),
('identifiedby', 'Пименова')
)
from functools import reduce # `reduce` was moved into functools in Python3
# Make search queries consequently...
datastore = []
for sp in [search_query1, search_query2]:
search_request_url = HERBARIUM_SEARCH_URL + '?' + '&'.join(map(lambda x: x[0] + '=' + quote(x[1].strip()), sp))
server_response = urlopen(search_request_url)
data = json.loads(server_response.read().decode('utf-8'))
data = pd.DataFrame(data['data'])
datastore.append(data)
server_response.close()
# Combine the result using Pandas:
df_combined = pd.concat(datastore).drop_duplicates('id').reset_index()
df_combined.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 536 entries, 0 to 535 Data columns (total 42 columns): index 536 non-null int64 acronym 536 non-null object additionals 536 non-null object altitude 536 non-null object branch 536 non-null object collection_finished 536 non-null object collection_started 536 non-null object collectors 536 non-null object country 536 non-null object country_id 534 non-null float64 created 536 non-null object details 536 non-null object dethistory 536 non-null object devstage 536 non-null object district 536 non-null object family 536 non-null object family_authorship 536 non-null object fieldid 536 non-null object genus 536 non-null object genus_authorship 536 non-null object gpsbased 536 non-null bool id 536 non-null int64 identification_finished 536 non-null object identification_started 536 non-null object identifiers 536 non-null object images 536 non-null object infraspecific_authorship 536 non-null object infraspecific_epithet 536 non-null object infraspecific_rank 536 non-null object itemcode 536 non-null object latitude 536 non-null float64 longitude 536 non-null float64 note 536 non-null object region 536 non-null object short_note 536 non-null object significance 536 non-null object species_authorship 536 non-null object species_epithet 536 non-null object species_fullname 536 non-null object species_id 536 non-null int64 species_status 536 non-null object updated 536 non-null object dtypes: bool(1), float64(3), int64(3), object(35) memory usage: 172.3+ KB
df_combined.shape
(536, 42)
Исходные размерности запросов:
datastore[0].shape, datastore[1].shape
((179, 41), (359, 41))
При формировании запросов о месте сбора можно только указывать прямоугольные области, в которых выполняется поиск. Это связано прежде всего с тем, что система управления базой данных, работающая на сервере, не поддерживает географических запросов. Тем не менее, поиск по области достаточно просто эмулировать средствами языка программировния Python
, с помощью какого-либо пакета для обработки географических данных.
Рассмотрим задачу сравнения растительности о. Сахалин и 200-км области вокруг г. Петропавловск-Камчатский. Для этого будем работать с shp-файлами, представляющими контура данных территорий. Для работы с shp-файлами в Python потребуется установить пакет pyshp, а также нам будет удобен пакет shapely -- для работы с географически распределенными данными.
Если предположить, что в текущем каталоге, где запускается скрипт Python, находится папка с shаpe-файлами, то чтение данных из таких файлов будет выглядеть следующим образом:
import shapefile
import numpy as np # Note: numpy is a part of Pandas pack: you can access numpy via pandas.np or pd.np
sakhalin_shp = shapefile.Reader("shapefiles/sakhalin.shp")
Преобразуем данные из прочитанного файла в numpy массив координат точек контура. Это необходимо для удобства визуализации с помощью пакета matplotlib.
contour_sakhalin = np.array(sakhalin_shp.shapes()[0].points)
Удостоверимся, что загруженный контур действительно представляет собой о. Сахалин:
from pylab import *
plot(contour_sakhalin[:,0], contour_sakhalin[:,1])
gca().set_aspect('equal')
title('Sakhalin Island')
show()
Контур представлен 835 точками.
contour_sakhalin.shape
(835, 2)
Ограничивающий область прямоугольник легко может быть найден из спецификации shape-файла:
sakhalin_shp.bbox
[141.63803100585938, 45.88860321044922, 144.75164794921875, 54.424713134765625]
В соответствии с формой поисковых запросов, создадим запрос к базе данных
query_sakhalin_bbox = tuple(zip(['lonl', 'latl', 'lonu', 'latu'], map(str, sakhalin_shp.bbox)))
print(query_sakhalin_bbox)
(('lonl', '141.63803100585938'), ('latl', '45.88860321044922'), ('lonu', '144.75164794921875'), ('latu', '54.424713134765625'))
within_sakhalin_request_url = HERBARIUM_SEARCH_URL + '?' + '&'.join(map(lambda x: x[0] + '=' + quote(x[1].strip()), query_sakhalin_bbox))
within_sakhalin_request_url
'http://botsad.ru/hitem/json/?lonl=141.63803100585938&latl=45.88860321044922&lonu=144.75164794921875&latu=54.424713134765625'
Получение данных:
server_response = urlopen(within_sakhalin_request_url)
sakhalin_data_in_bbox = pd.DataFrame(json.loads(server_response.read().decode('utf-8'))['data'])
Импортирование модуля shapely для тонкой проверки принадлежности точек контуру о. Сахалин
from shapely.geometry import Polygon, Point
closed_sakhalin_contour = np.vstack([contour_sakhalin, contour_sakhalin[-1]])
sakhalin_poly = Polygon(closed_sakhalin_contour)
sakhalin_filtered = sakhalin_data_in_bbox[[sakhalin_poly.contains(Point(x,y)) for x,y in zip(sakhalin_data_in_bbox.longitude, sakhalin_data_in_bbox.latitude)]]
sakhalin_filtered
acronym | additionals | altitude | branch | collection_finished | collection_started | collectors | country | country_id | created | ... | note | region | short_note | significance | species_authorship | species_epithet | species_fullname | species_id | species_status | updated | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | VBGI | [] | 792 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | F.Schmidt | ssiori | Prunus ssiori F.Schmidt | 506834 | From plantlist | 2017-06-13 | |||||
1 | VBGI | [] | 1042 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Nakai | axillare | Vaccinium axillare Nakai | 225901 | From plantlist | 2017-06-13 | |||||
2 | VBGI | [] | 792 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | F.Schmidt | rugosa | Ilex rugosa F.Schmidt | 44334 | From plantlist | 2017-06-13 | |||||
3 | VBGI | [] | 1042 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | (Koidz.) H.Ohba | nipponica | Cerasus nipponica (Koidz.) H.Ohba | 499916 | From plantlist | 2017-06-13 | |||||
4 | VBGI | [] | 1042 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | (Cham. & Schltdl.) M.Roem. | sambucifolia | Sorbus sambucifolia (Cham. & Schltdl.) M.Roem. | 518523 | From plantlist | 2017-06-13 | |||||
5 | VBGI | [] | 1042 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | A.Gray | smallii | Vaccinium smallii A.Gray | 226494 | From plantlist | 2017-06-13 | |||||
6 | VBGI | [] | 792 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Jancz. | latifolium | Ribes latifolium Jancz. | 251865 | From plantlist | 2017-06-13 | |||||
7 | VBGI | [] | 1042 | 2016-10-01 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Hult‚n | beauverdiana | Spiraea beauverdiana Hult‚n | 518694 | From plantlist | 2017-06-13 | |||||
8 | VBGI | [] | 192 | 2016-09-29 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Cham. | ermanii | Betula ermanii Cham. | 68288 | From plantlist | 2017-06-13 | |||||
9 | VBGI | [] | 192 | 2016-09-29 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Cham. | ermanii | Betula ermanii Cham. | 68288 | From plantlist | 2017-06-13 | |||||
10 | VBGI | [] | 26 | 2016-09-30 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Blume | crispula | Quercus crispula Blume | 588219 | Recently added | 2017-06-13 | |||||
11 | VBGI | [] | 26 | 2016-09-30 | Пименова Е.А. | Russia | 162 | 2017-01-16 | ... | Сахалинская обл. | Blume | crispula | Quercus crispula Blume | 588219 | Recently added | 2017-06-13 | |||||
12 | VBGI | [] | 250 | 2016-09-29 | Пименова Е.А. | Russia | 162 | 2017-02-09 | ... | одиночное крупное дерево | Сахалинская обл., | L. | regia | Juglans regia L. | 265223 | From plantlist | 2017-06-13 | ||||
13 | VBGI | [] | 250 | 2016-09-29 | Пименова Е.А. | Russia | 162 | 2017-02-09 | ... | одиночное крупное дерево | Сахалинская обл., | L. | regia | Juglans regia L. | 265223 | From plantlist | 2017-06-13 | ||||
14 | VBGI | [] | 170 | 2016-06-09 | 2016-06-09 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (L.) Scop. | odoratum | Galium odoratum (L.) Scop. | 523442 | From plantlist | 2017-06-13 | ||||
15 | VBGI | [] | 120 | 2016-06-21 | 2016-06-21 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область | Rupr. | macroptera | Euonymus macroptera Rupr. | 588266 | Approved | 2017-06-13 | ||||
16 | VBGI | [] | 160 | 2016-06-16 | 2016-06-16 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область | (F.Schmidt) Maxim. | sachalinensis | Euonymus sachalinensis (F.Schmidt) Maxim. | 114805 | From plantlist | 2017-06-13 | ||||
18 | VBGI | [] | 50 | 2015-06-28 | 2015-06-28 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (L.) Schott | fragrans | Dryopteris fragrans (L.) Schott | 212858 | From plantlist | 2017-06-13 | ||||
19 | VBGI | [] | 380 | 2015-08-13 | 2015-08-13 | Корзников К.А., Попова К.Б. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (Kunze) C. Presl | tripteron | Polystichum tripteron (Kunze) C. Presl | 216977 | From plantlist | 2017-06-13 | ||||
20 | VBGI | [] | 40 | 2016-07-16 | 2016-07-16 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | H. Lév. | fauriei | Cardamine fauriei H. Lév. | 588274 | Recently added | 2017-06-13 | ||||
21 | VBGI | [] | 40 | 2016-07-16 | 2016-07-16 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | H. Lév. | fauriei | Cardamine fauriei H. Lév. | 588274 | Recently added | 2017-06-13 | ||||
22 | VBGI | [] | 40 | 2016-07-16 | 2016-07-16 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | H. Lév. | fauriei | Cardamine fauriei H. Lév. | 588274 | Recently added | 2017-06-13 | ||||
23 | VBGI | [] | 70 | 2015-06-27 | 2015-06-27 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (L.) DC. | amplexifolius | Streptopus amplexifolius (L.) DC. | 330252 | From plantlist | 2017-06-13 | ||||
24 | VBGI | [] | 140 | 2015-07-12 | 2015-07-12 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (Thunb.) Makino | cordatum | Cardiocrinum cordatum (Thunb.) Makino | 329621 | From plantlist | 2017-06-13 | ||||
25 | VBGI | [] | 15 | 2015-06-26 | 2015-06-26 | Корзников К.А. | Russia | 162 | 2017-02-10 | ... | Сахалинская область / Sakhalin Oblast | (L.) Ker Gawl. | camschatcensis | Fritillaria camschatcensis (L.) Ker Gawl. | 329686 | From plantlist | 2017-06-13 | ||||
27 | VBGI | [] | 30 | 2015-06-28 | 2015-06-28 | Корзников К.А. | Russia | 162 | 2017-02-12 | ... | Сахалинская область / Sakhalin Oblast | (L.) Sw. | lunaria | Botrychium lunaria (L.) Sw. | 381813 | From plantlist | 2017-06-13 | ||||
28 | VBGI | [] | 150 | 2016-06-21 | 2016-06-21 | Корзников К.А. | Russia | 162 | 2017-02-12 | ... | Сахалинская область / Sakhalin Oblast | (F. Schmidt) Sarg. | sachalinense | Phellodendron sachalinense (F. Schmidt) Sarg. | 537480 | From plantlist | 2017-06-13 | ||||
29 | VBGI | [] | 60 | 2016-07-17 | 2016-07-17 | Корзников К.А. | Russia | 162 | 2017-02-12 | ... | Сахалинская область / Sakhalin Oblast | (F. Schmidt) Sarg. | sachalinense | Phellodendron sachalinense (F. Schmidt) Sarg. | 537480 | From plantlist | 2017-06-13 | ||||
30 | VBGI | [] | 60 | 2016-07-17 | 2016-07-17 | Корзников К.А. | Russia | 162 | 2017-02-12 | ... | Сахалинская область / Sakhalin Oblast | (F. Schmidt) Sarg. | sachalinense | Phellodendron sachalinense (F. Schmidt) Sarg. | 537480 | From plantlist | 2017-06-13 | ||||
31 | VBGI | [] | 70 | 2016-09-17 | 2016-09-17 | Корзников К.А. | Russia | 162 | 2017-02-12 | ... | Сахалинская область / Sakhalin Oblast | Nakai | repens | Skimmia repens Nakai | 537822 | From plantlist | 2017-06-13 | ||||
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
536 | VBGI | [] | 2016-07-07 | Храпко О.В. | Russia | 162 | 2017-10-12 | ... | Сахалинская область / Sakhalin Oblast | (C. Presl) Fraser-Jenk. & Jermy | expansa | Dryopteris expansa (C. Presl) Fraser-Jenk. & J... | 212819 | From plantlist | 2017-10-12 | ||||||
537 | VBGI | [] | 2008-07-25 | Храпко О.В. | Russia | 162 | 2017-10-12 | ... | Сахалинская область / Sakhalin Oblast | (L.) Kuhn | aquilinum | Pteridium aquilinum (L.) Kuhn | 205696 | From plantlist | 2017-10-12 | ||||||
538 | VBGI | [] | 2014-07-04 | Храпко О.В. | Russia | 162 | 2017-10-13 | ... | Сахалинская область / Sakhalin Oblast | (L.) Roth | filix-femina | Athyrium filix-femina (L.) Roth | 61481 | From plantlist | 2017-10-13 | ||||||
539 | VBGI | [] | 2008-07-15 | Храпко О.В., Царенко Н.А. | Russia | 162 | 2017-10-13 | ... | Сахалинская область / Sakhalin Oblast | Rupr. | sinense | Athyrium sinense Rupr. | 61829 | From plantlist | 2017-10-13 | ||||||
540 | VBGI | [] | 2008-07-15 | Храпко О.В., Царенко Н.А. | Russia | 162 | 2017-10-13 | ... | Сахалинская область | Rupr. | sinense | Athyrium sinense Rupr. | 61829 | From plantlist | 2017-10-13 | ||||||
541 | VBGI | [] | 1995-07-10 | Дудкин Р.В., Тесленко В.В. | Russia | 162 | 2017-10-13 | ... | Сахалинская область / Sakhalin Oblast | (L.) Schott | fragrans | Dryopteris fragrans (L.) Schott | 212858 | From plantlist | 2017-10-13 | ||||||
542 | VBGI | [] | 2012-07-09 | Храпко О.В. | Russia | 162 | 2017-10-16 | ... | Сахалинская область / Sakhalin Oblast | (Fern.) Tagawa | asiaticum | Osmundastrum asiaticum (Fern.) Tagawa | 591052 | Approved | 2017-10-16 | ||||||
543 | VBGI | [] | 2017-07-04 | Храпко О.В. | Russia | 162 | 2017-10-16 | ... | Сахалинская область / Sakhalin Oblast | (Fern.) Tagawa | asiaticum | Osmundastrum asiaticum (Fern.) Tagawa | 591052 | Approved | 2017-10-16 | ||||||
544 | VBGI | [] | 2008-07-12 | Храпко О.В., Царенко Н.А., Богачева А.В. | Russia | 162 | 2017-10-16 | ... | Сахалинская область / Sakhalin Oblast | (Fern.) Tagawa | asiaticum | Osmundastrum asiaticum (Fern.) Tagawa | 591052 | Approved | 2017-10-16 | ||||||
547 | SAKH | [] | 52-112 | Herbarium of Vascular Plants | 1994-06-10 | А. Таран | Russia | 162 | 2017-10-18 | ... | Сахалинская область / Sakhalin Oblast | Ching | chinensis | Huperzia chinensis Ching | 336147 | From plantlist | 2017-10-18 | ||||
548 | SAKH | [] | 52-112 | Herbarium of Vascular Plants | А. Таран | Russia | 162 | 2017-10-18 | ... | Сахалинская область / Sakhalin Oblast | L. | annotinum | Lycopodium annotinum L. | 336427 | From plantlist | 2017-10-18 | |||||
551 | VBGI | [] | 382 | 1995-07-11 | Дудкин Р.В., Тесленко В.В. | Russia | 162 | 2017-10-19 | ... | Сахалинская область / Sakhalin Oblast | Huds. | viride | Asplenium viride Huds. | 60611 | From plantlist | 2017-10-19 | |||||
552 | VBGI | [] | 2012-07-09 | Храпко О.В. | Russia | 162 | 2017-10-19 | ... | Сахалинская область / Sakhalin Oblast | (C. Presl) Fraser-Jenk. & Jermy | expansa | Dryopteris expansa (C. Presl) Fraser-Jenk. & J... | 212819 | From plantlist | 2017-10-19 | ||||||
553 | VBGI | [] | 2016-07-07 | Храпко О.В. | Russia | 162 | 2017-10-19 | ... | Сахалинская область / Sakhalin Oblast | (C. Presl) Fraser-Jenk. & Jermy | expansa | Dryopteris expansa (C. Presl) Fraser-Jenk. & J... | 212819 | From plantlist | 2017-10-19 | ||||||
554 | VBGI | [] | 2012-07-09 | Храпко О.В. | Russia | 162 | 2017-10-19 | ... | Сахалинская область / Sakhalin Oblast | (C. Presl) Fraser-Jenk. & Jermy | expansa | Dryopteris expansa (C. Presl) Fraser-Jenk. & J... | 212819 | From plantlist | 2017-10-19 | ||||||
558 | VBGI | [] | 1997-10-03 | Недолужко В.А., Денисов Н.И. | Russia | 162 | 2017-10-19 | ... | Сахалинская область / Sakhalin Oblast | Tzvelev | amurensis | Leptorumohra amurensis Tzvelev | 215409 | From plantlist | 2017-10-19 | ||||||
560 | VBGI | [] | 1980-06-24 | Недолужко В.А. | Russia | 162 | 2017-10-20 | ... | Сахалинская область / Sakhalin Oblast | (L.) Sw. | lunaria | Botrychium lunaria (L.) Sw. | 381813 | From plantlist | 2017-10-20 | ||||||
561 | VBGI | [] | 1980-06-25 | Недолужко В.А. | Russia | 162 | 2017-10-20 | ... | Сахалинская область / Sakhalin Oblast | (Rupr.) Underw. | robustum | Botrychium robustum (Rupr.) Underw. | 381844 | From plantlist | 2017-10-20 | ||||||
562 | VBGI | [] | 1966-07-27 | Недолужко В.А., Стародубцев В.Н. | Russia | 162 | 2017-10-20 | ... | Сахалинская область / Sakhalin Oblast | (L.) Bernh. | fragilis | Cystopteris fragilis (L.) Bernh. | 204147 | From plantlist | 2017-10-20 | ||||||
563 | VBGI | [] | 1991-07-22 | Храпко О.В. | Russia | 162 | 2017-10-20 | ... | Сахалинская область / Sakhalin Oblast | (L.) Newman | dryopteris | Gymnocarpium dryopteris (L.) Newman | 204208 | From plantlist | 2017-10-20 | ||||||
564 | VBGI | [] | 2015-07-18 | Храпко О.В. | Russia | 162 | 2017-10-20 | ... | Сахалинская область / Sakhalin Oblast | (L.) Newman | dryopteris | Gymnocarpium dryopteris (L.) Newman | 204208 | From plantlist | 2017-10-20 | ||||||
565 | VBGI | [] | 2006-08-14 | Галанин А.В. | Russia | 162 | 2017-10-20 | ... | Сахалинская обл. | (Spenn.) Fée | braunii | Polystichum braunii (Spenn.) Fée | 216417 | From plantlist | 2017-10-20 | ||||||
566 | VBGI | [] | 1966-08-24 | Павлова Н.С., Панков | Russia | 162 | 2017-10-31 | ... | Сахалинская область / Sakhalin Oblast | R. Br. | acrostichoides | Cryptogramma acrostichoides R. Br. | 485069 | From plantlist | 2017-10-31 | ||||||
567 | VBGI | [] | 1971-07-11 | Егорова Е.М. | Russia | 162 | 2017-11-08 | ... | Сахалинская область / Sakhalin Oblast | (Turcz. ex Kunze) Sa. Kurata | sibiricum | Diplazium sibiricum (Turcz. ex Kunze) Sa. Kurata | 62611 | From plantlist | 2017-11-08 | ||||||
568 | VBGI | [] | 1980-06-24 | Недолужко В.А. | Russia | 162 | 2017-11-09 | ... | Сахалинская область / Sakhalin Oblast | (S.G. Gmel.) Ångström | lanceolatum | Botrychium lanceolatum (S.G. Gmel.) Ångström | 381807 | From plantlist | 2017-11-09 | ||||||
569 | VBGI | [] | 1986-07-31 | Недолужко В.А., Стародубцев В.Н. | Russia | 162 | 2017-11-09 | ... | Сахалинская область / Sakhalin Oblast | (Rupr.) Underw. | robustum | Botrychium robustum (Rupr.) Underw. | 381844 | From plantlist | 2017-11-09 | ||||||
570 | VBGI | [] | 1987-09-11 | Стеценко Н.М. | Russia | 162 | 2017-11-09 | ... | Сахалинская область / Sakhalin Oblast | (Rupr.) Underw. | robustum | Botrychium robustum (Rupr.) Underw. | 381844 | From plantlist | 2017-11-09 | ||||||
571 | VBGI | [] | 1969-09-25 | Алексеева Л.М. | Russia | 162 | 2017-11-09 | ... | Сахалинская область / Sakhalin Oblast | (Rupr.) Underw. | robustum | Botrychium robustum (Rupr.) Underw. | 381844 | From plantlist | 2017-11-09 | ||||||
572 | VBGI | [] | 1974-08-09 | Ворошилова Г.И., Гвоздева И., Карпова Е., Опри... | Russia | 162 | 2017-11-09 | ... | Сахалинская область / Sakhalin Oblast | (Rupr.) Underw. | robustum | Botrychium robustum (Rupr.) Underw. | 381844 | From plantlist | 2017-11-09 | ||||||
573 | VBGI | [] | 1406 | Bryophyte herbarium | 2006-08-17 | V.A. Bakalin | Russia | 162 | 2017-11-10 | ... | Central part of Sakhalin Island. Nabilsky Rang... | Дальний Восток|Russian Far East | Rev. by V.A. Bakalin: Ok! Jun 2016 | Steph. | japonica | Nardia japonica Steph. | 588500 | Approved | 2017-11-10 |
549 rows × 41 columns
sakhalin_data_in_bbox.shape
(574, 41)
Найдем ID точек, которые принадлежат прямоугольным границам о. Сахалин, но "не принадлежат" контору острова по результатам более тонкой фильтрации.
set(sakhalin_data_in_bbox.id.values) - set(sakhalin_filtered.id.values)
{1403, 1412, 1432, 1434, 1438, 1439, 1529, 10015, 10016, 10373, 19819, 19820, 19823, 19912, 20830, 20832, 30563, 31010, 31032, 31079, 31080, 31152, 31153, 31154, 31161}
Исследуя реальные положения перечисленных точек, например, с ID=1412 (см. страницу http://botsad.ru/hitem/1412) обнаружим, что отфильтрованные точки -- это прибрежные точки, которые либо в силу погрешностей контура shape-файла, либо в силу ошибок позиционирования гербарного сбора, выходят за определенный в shape-файле контур о. Сахалин. Тем не менее, задача решена правильно: точки не принадлежащие текущему контуру о. Сахалин отброшены.
Таким оразом, результирующий массив данных представлен переменной sakhalin_filtered
.
Получим данные о гербарных сборах вблизи г. Петропавловск-Камчатский.
Для выделения объектов, принадлежащих 200-км области вокруг города, определим прямоугольную область, заведомо включающую данную окрестность.
Такой прямоугольной областью может быть, например, kamchatka_bbox
:
kamchatka_bbox = [151.1, 47.8, 172.0, 58.3]
petropavlovsk_coords = (53.145992, 158.683548)
Для вычисления расстояний нам потребуется дополнительный пакет geopy
. В остальном, формирование поискового url повторяет случай для о. Сахалин.
from geopy.distance import vincenty
query_kamchatka_bbox = tuple(zip(['lonl', 'latl', 'lonu', 'latu'], map(str, kamchatka_bbox)))
near_petropavlovsk_kamchatsky_url = HERBARIUM_SEARCH_URL + '?' + '&'.join(map(lambda x: x[0] + '=' + quote(x[1].strip()), query_kamchatka_bbox))
server_response = urlopen(near_petropavlovsk_kamchatsky_url)
petropavlovsk_data_in_bbox = pd.DataFrame(json.loads(server_response.read().decode('utf-8'))['data'])
petropavlovsk_data_in_bbox.shape
(306, 41)
petropavlovsk_filtered = petropavlovsk_data_in_bbox[[vincenty((lat, lon), petropavlovsk_coords).km < 200.0 for lat,lon in zip(petropavlovsk_data_in_bbox.latitude, petropavlovsk_data_in_bbox.longitude)]]
petropavlovsk_filtered.shape
(146, 41)
Данные о гербарных сборах в пределах 200-км зоны вокруг г. П.-Камчасткий получены. Теперь можно проводить сравнительный анализ.
print('Количество уникальных родов в 200 км окрестности г. П.-Камчатский:', len(petropavlovsk_filtered.genus.unique()))
Количество уникальных родов в 200 км окрестности г. П.-Камчатский: 64
print('Количество уникальных видов в 200 км окрестности г. П.-Камчатский:', len(petropavlovsk_filtered.species_id.unique()))
Количество уникальных видов в 200 км окрестности г. П.-Камчатский: 78
print('Количество уникальных видов на о. Сахалин:', len(sakhalin_filtered.species_id.unique()))
Количество уникальных видов на о. Сахалин: 211
print('Количество уникальных родов на о. Сахалин:', len(sakhalin_filtered.genus.unique()))
Количество уникальных родов на о. Сахалин: 136
Посчитаем частоты встречаемости видов в сборах:
from collections import Counter
Частоты встречаемости родов около г. П.-Камчатский
petr_freq = petropavlovsk_filtered.genus.value_counts() / len(petropavlovsk_filtered)
petr_freq
Aneura 0.061644 Riccardia 0.061644 Moerckia 0.047945 Dryopteris 0.047945 Botrychium 0.041096 Peltolepis 0.041096 Nardia 0.041096 Conocephalum 0.034247 Gymnocarpium 0.027397 Calycularia 0.027397 Pellia 0.027397 Preissia 0.020548 Athyrium 0.020548 Marchantia 0.020548 Polystichum 0.020548 Lunathyrium 0.020548 Phegopteris 0.020548 Cystopteris 0.020548 Calamagrostis 0.020548 Sauteria 0.020548 Stellaria 0.013699 Euphrasia 0.013699 Agrostis 0.013699 Blasia 0.013699 Cryptogramma 0.013699 Salix 0.013699 Oreopteris 0.013699 Draba 0.013699 Andromeda 0.006849 Myrica 0.006849 ... Huperzia 0.006849 Trientalis 0.006849 Tephroseris 0.006849 Dryas 0.006849 Equisetum 0.006849 Chamaedaphne 0.006849 Woodsia 0.006849 Myosotis 0.006849 Rubus 0.006849 Eriophorum 0.006849 Saussurea 0.006849 Fritillaria 0.006849 Arnica 0.006849 Metasolenostoma 0.006849 Papaver 0.006849 Mannia 0.006849 Ermania 0.006849 Cardamine 0.006849 Trollius 0.006849 Lophozia 0.006849 Cassiope 0.006849 Urtica 0.006849 Parnassia 0.006849 Anaphalis 0.006849 Ranunculus 0.006849 Hieracium 0.006849 Douglasia 0.006849 Erigeron 0.006849 Cardaminopsis 0.006849 Abies 0.006849 Name: genus, Length: 64, dtype: float64
Частоты встречаемости родов на о. Сахалин
sakh_freq = sakhalin_filtered.genus.value_counts() / len(sakhalin_filtered)
sakh_freq
Porella 0.071038 Riccardia 0.040073 Conocephalum 0.038251 Dryopteris 0.030965 Gymnocarpium 0.027322 Jungermannia 0.025501 Scapania 0.023679 Lophozia 0.023679 Preissia 0.023679 Asarum 0.021858 Leptorumohra 0.021858 Peltolepis 0.021858 Nardia 0.020036 Marchantia 0.020036 Mesoptychia 0.020036 Cephalozia 0.018215 Calypogeia 0.018215 Blepharostoma 0.016393 Frullania 0.016393 Mylia 0.014572 Phegopteris 0.014572 Sauteria 0.014572 Botrychium 0.014572 Lejeunea 0.012750 Sphenolobus 0.012750 Orthocaulis 0.010929 Leiocolea 0.010929 Pellia 0.010929 Woodsia 0.010929 Diplophyllum 0.009107 ... Artemisia 0.001821 Cerasus 0.001821 Malva 0.001821 Fritillaria 0.001821 Chosenia 0.001821 Geranium 0.001821 Potentilla 0.001821 Matteuccia 0.001821 Brylkinia 0.001821 Beckmannia 0.001821 Rubus 0.001821 Gymnomitrion 0.001821 Androsace 0.001821 Sanguisorba 0.001821 Asplenium 0.001821 Tetralophozia 0.001821 Larix 0.001821 Astragalus 0.001821 Diplazium 0.001821 Streptopus 0.001821 Ilex 0.001821 Cardiocrinum 0.001821 Calycularia 0.001821 Hydrangea 0.001821 Huperzia 0.001821 Spiraea 0.001821 Arisaema 0.001821 Monotropastrum 0.001821 Corydalis 0.001821 Schistidium 0.001821 Name: genus, Length: 136, dtype: float64
Информационные меры неопределенности (биоразнообразие по К. Шеннону):
shannon_sakh = - sum(np.log2(sakh_freq.values) * sakh_freq.values)
shannon_sakh
6.3251019029259146
shannon_petr = - sum(np.log2(petr_freq.values) * petr_freq.values)
shannon_petr
5.564519271608396
Вычислим относительные значения мер (от их максимального теоретического значения в каждом случае):
shannon_sakh_relative = shannon_sakh / np.log2(len(sakh_freq))
shannon_sakh_relative
0.89243528249808335
shannon_petr_relative = shannon_petr / np.log2(len(petr_freq))
shannon_petr_relative
0.92741987860139929
Как ни странно, относительное разнообразие сборов несколько выше в окр. г. П.-Камчатский, хотя эти различия могут отражать лишь специфику данных, занесенных в базу на текущий момент времени.
import datetime
print("Дата выполнения кода документа: ", datetime.datetime.now())
Дата выполнения кода документа: 2017-11-12 11:35:30.497712