Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Исследование данных

На практике мы редко создаём пространственные данные «с нуля», вручную задавая координаты. Гораздо чаще мы работаем с готовыми наборами данных, которые уже собраны, структурированы и сохранены в различных форматах.

В этом разделе мы научимся загружать пространственные данные из разных источников с помощью Python. В частности, мы рассмотрим:

  • загрузку векторных форматов (Shapefile, GeoJSON, GeoPackage) с использованием GeoPandas;

  • работу с CSV-файлами, содержащими координаты;

  • анализ структуры пространственных данных — их атрибутов и геометрии.

Умение читать и изучать пространственные данные — необходимый шаг перед построением карт, выполнением пространственного анализа или преобразованием данных.

0. Импорт библиотек

import pandas as pd
import geopandas as gpd
  • pandas (pandas) — мощная библиотека Python для анализа и обработки данных. Предоставляет удобные структуры данных, такие как DataFrame, которые идеально подходят для работы с табличными (непространственными) данными — например, CSV-файлами, электронными таблицами или данными из баз данных.

  • GeoPandas (geopandas) — расширение библиотеки pandas, предназначенное для работы с геопространственными данными. Позволяет загружать, обрабатывать и анализировать пространственные наборы данных в различных форматах.

Исследование данных

После загрузки пространственного набора данных в GeoDataFrame важно разобраться, что именно он содержит.

Вот несколько ключевых характеристик, которые стоит проверить, чтобы лучше понять структуру и особенности данных.

Рассмотрим это на примере набора данных metro (загруженного из файла spb_metro.geojson).

Основная информация

metro.info()
<class 'geopandas.geodataframe.GeoDataFrame'>
RangeIndex: 98 entries, 0 to 97
Data columns (total 8 columns):
 #   Column      Non-Null Count  Dtype   
---  ------      --------------  -----   
 0   OBJECTID    98 non-null     float64 
 1   LINFO       98 non-null     float64 
 2   HSTNR       0 non-null      float64 
 3   HTXT        98 non-null     object  
 4   HBEM        5 non-null      object  
 5   EROEFFNUNG  98 non-null     float64 
 6   EROEFFNUN0  98 non-null     float64 
 7   geometry    98 non-null     geometry
dtypes: float64(5), geometry(1), object(2)
memory usage: 6.2+ KB

Отображает краткую сводную информацию о DataFrame: количество записей, названия столбцов, типы данных и наличие пропущенных значений.

Просмотр первых строк

metro.head()
Loading...

Отображает первые 5 строк набора данных — быстрый способ понять его структуру и содержание

Количество объектов

len(metro)
# or
metro.shape
(98, 8)

Возвращает количество строк (объектов) в наборе данных. Метод .shape также показывает число столбцов.

Тип геомтерии

metro.geom_type.unique()
array(['Point'], dtype=object)

Возвращает количество строк (объектов) в наборе данных. Метод .shape также показывает число столбцов.

Система координат (CRS)

metro.crs
<Geographic 2D CRS: EPSG:4326> Name: WGS 84 Axis Info [ellipsoidal]: - Lat[north]: Geodetic latitude (degree) - Lon[east]: Geodetic longitude (degree) Area of Use: - name: World. - bounds: (-180.0, -90.0, 180.0, 90.0) Datum: World Geodetic System 1984 ensemble - Ellipsoid: WGS 84 - Prime Meridian: Greenwich

Отображает систему координат данных — например, EPSG:4326 (WGS84).

Границы набора данных (Bounding Box)

metro.total_bounds
array([16.26083539, 48.13051529, 16.50843802, 48.27751795])

Возвращает пространственный охват набора данных в виде массива координат: [minx, miny, maxx, maxy].

Поле геометрии

metro.geometry
0 POINT (16.32423 48.16072) 1 POINT (16.37913 48.20682) 2 POINT (16.42070 48.16965) 3 POINT (16.32776 48.18365) 4 POINT (16.36401 48.22777) ... 93 POINT (16.41480 48.17472) 94 POINT (16.38129 48.21913) 95 POINT (16.26084 48.19696) 96 POINT (16.34295 48.18848) 97 POINT (16.31896 48.18605) Name: geometry, Length: 98, dtype: geometry

Отображает геометрические объекты для каждой строки — именно они представляют пространственную составляющую данных.

Атрибутивные поля

metro.columns
Index(['OBJECTID', 'LINFO', 'HSTNR', 'HTXT', 'HBEM', 'EROEFFNUNG', 'EROEFFNUN0', 'geometry'], dtype='object')

Отображает список всех столбцов в GeoDataFrame, включая столбец geometry и все дополнительные атрибуты.

Обзор

print("CRS:", metro.crs)
print("Number of features:", len(metro))
print("Geometry types:", metro.geom_type.unique())
print("Bounds:", metro.total_bounds)
metro.head()
CRS: EPSG:4326
Number of features: 98
Geometry types: ['Point']
Bounds: [16.26083539 48.13051529 16.50843802 48.27751795]
Loading...

Это позволяет быстро получить общее представление о содержании и структуре пространственных данных — важный шаг перед анализом или визуализацией.

Итог

В этом модуле мы

  • как анализировать структуру и содержание пространственных данных, включая типы геометрии и атрибуты.