Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI

Cet article participe au Power BI Advent Calendar 2019 par Prince @ yugoes1021.

Je n'ai plus de matériel

J'ai écrit diverses séries liées à la géographie dans Power BI, mais du point de vue de simplement les visualiser sur une carte, il ne reste plus beaucoup de matériel, il a donc tendance à être un article qui pousse le coin d'une boîte lourde. (Cependant, je n'ai pas les ressources ni le temps de toucher à la version Web ou intégrée)

Analyse géographique avec Power BI (basique) Analyse géographique avec Power BI (Application 1) Analyse géographique avec Power BI (Application 2) Carte des États-Unis avec Power BI Calendrier de l'Avent 2017 Analyse géographique avec PowerBI (résumé 2018) Calendrier de l'Avent 2018

J'ai donc décidé de la possibilité qu'il s'agisse d'une carte utilisant R ou Python sur Power BI Desktop. Les extensions en R et Python sont introduites à divers endroits, nous n'utiliserons donc ici que les liens officiels.

Création de visuels Power BI à l'aide de R Exécuter des scripts Python dans Power BI Desktop

En tant que problème, nous utiliserons la visualisation de données ponctuelles que nous avons utilisée comme référence telle quelle. Nous évaluons en utilisant les mêmes données ouvertes Uber qu'avant. Données de sonde de taxi pour San Francisco.

Fondamentalement, à des fins d'affichage simple, nous nous concentrons sur la façon d'appeler R, Python dans Power BI, comment afficher les données de point dans chaque bibliothèque, comment modifier dynamiquement la plage d'affichage, etc. Chaque bibliothèque a une idée très différente, donc ce serait bien si vous pouviez également transmettre cela, mais ce n'est pas possible avec cette taille. .. ..

R

R a plus de variations. Power BI a plus d'histoire que Python. Une petite pierre d'achoppement est la version R et l'emplacement d'installation utilisés par PowerBI. Vous pouvez le définir sur la page d'options ci-dessous, spécifiez donc l'interpréteur R que vous souhaitez utiliser et toujours utiliser. Cela vous évitera d'avoir à installer la bibliothèque.

image.png

Cependant, le même interpréteur peut enregistrer l'environnement dans le dossier utilisateur, auquel cas vous devrez l'installer dans un environnement d'interprétation global.

library(maps)

C'est une ancienne bibliothèque. Fondamentalement, diverses cartes blanches sont affichées et des données y sont affichées. (Le ggmap dans le code est utilisé uniquement pour la fonction de commodité pour obtenir la boîte englobante) Vous pouvez superposer des points avec la fonction with.

library(maps)
library(ggmap)
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
map('usa', col = "grey", fill = TRUE, bg = "white", border = 0, 
  xlim = c(sbbox[1], sbbox[3]), ylim = c(sbbox[2], sbbox[4]))
with(dataset, points(longitude, latitude, pch = 1, col = 'blue', cex = .2))

image.png

library(sf)

Une bibliothèque pour gérer les données spatiales de manière appropriée. Vous devez le convertir une fois en un bloc de données au format sf. Vous pouvez tracer le bloc de données directement.

library(sf)
library(sp)
dfsf <- dataset %>% st_as_sf(coords = c('longitude', 'latitude'), crs = 4236)
plot(dfsf, col = "blue", pch = 21)

image.png

library(tmap)

C'est une bibliothèque qui vous permet de dessiner divers diagrammes de thème relativement facilement. C'est pratique car vous pouvez basculer entre le mode de tracé normal et le mode d'affichage dans lequel le visualiseur de dépliants démarre. Comme pour les autres, PowerBI ne pouvait rien faire comme le lancement d'un navigateur sur l'écran externe du Leaflet. Cependant, comme vous pouvez le voir ci-dessous, le fond de carte ne peut pas être collé en mode tracé. Pardon.

library(tmap)
library(dplyr)
library(sf)
library(sp)
dfsf <- dataset %>% st_as_sf(coords = c('longitude', 'latitude'), crs = 4236)
tmap_mode("plot")
map <- tm_shape(dfsf, name = "uber") +
    tm_symbols(shape = 21, col = "blue", size = 0.05) +
    tm_basemap("Stamen.Watercolor")
map

image.png

library(ggplot2)

La possibilité de dessiner des cartes est intégrée à ggplot. Le processeur de données le plus courant est peut-être celui qui vous convient le mieux.

library(ggplot2)
library(mapproj)
library(ggmap)
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
usmap <- map_data("state") 
ggplot() +
    geom_polygon(data = usmap, aes(x = long, y = lat, group = group), fill = "grey", alpha = 0.5) +
    geom_point(data = dataset, aes(x = longitude, y = latitude)) +
    theme_void() + coord_map(xlim = c(sbbox[1], sbbox[3]), ylim = c(sbbox[2], sbbox[4]))

image.png

library(ggmap)

Si vous voulez une carte de fond plus détaillée, c'est celle-ci. Il est nécessaire d'enregistrer la clé API, probablement parce que les restrictions de l'API Google Maps sont devenues plus strictes. Assurez-vous également d'obtenir la version de développement suivante avec des fonctions d'enregistrement utiles.

Si vous installez la dernière version dans votre environnement R par la méthode suivante, une fonction appelée register_google qui permet le paramétrage de clé sera incluse, donc mettez-la à jour.

devtools::install_github("dkahle/ggmap")
library(ggplot2)
library(mapproj)
library(ggmap)
register_google(key = "YOUR_API_KEY")
sbbox <- make_bbox(lon = dataset$longitude, lat = dataset$latitude, f = 0)
map <- get_stamenmap(bbox = sbbox, zoom = 13, maptype = "toner-lite")
ggmap(map) +
    geom_point(aes(x = longitude, y = latitude), color = "blue" ,data = dataset, alpha = .5)

image.png

Python

Python dispose d'une bibliothèque de visualisation cartographique à part entière telle que Folium et Shapely, et une bibliothèque de traitement de géodonnées telle que les géo pandas qui est très facile à gérer, mais lorsque je l'ai essayé sur Power BI, cela n'a pas fonctionné facilement. fait. Il y avait aussi une personne qui voulait exécuter Folium, mais comme indiqué ci-dessous, il semble que seul un nombre limité de bibliothèques puisse être exécuté avec le Power BI actuel, j'ai donc décidé d'abandonner docilement. .. ..

Help to implement Python Script - Microsoft Power BI Community

The following Python packages (non-Intel MKL) are currently supported for use in your Power BI reports. Reference: Python packages and versions

  • Matplotlib

Python définit également l'interpréteur ci-dessous. Je pense que ce sera Anaconda, mais veuillez noter que même si vous installez une nouvelle bibliothèque, cela ne fonctionnera pas avec Power BI.

image.png

Matplotlib

Parmi eux, Matplotlib semble avoir une bibliothèque appelée mpl_toolkits: basemap. Ce n'est pas un standard Matplotlib et doit être installé. Actuellement, l'installation de pip n'est pas prise en charge et conda etc. est utilisé.

conda install -c anaconda basemap

Après l'installation avec, il peut être utilisé dans l'environnement Anaconda.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
m = Basemap(llcrnrlon=BBox[0],llcrnrlat=BBox[2],urcrnrlon=BBox[1],urcrnrlat=BBox[3])
m.drawcoastlines()
x, y = m(dataset.longitude, dataset.latitude)
m.plot(x, y, 'o')
plt.show()

Résultats avec VSCode: image.png

Cependant, cela ne fonctionnait pas avec PowerBI car ce n'était pas une bibliothèque autre que Matplotlib en premier lieu. orz

Évaluation annuelle des performances

Nous utilisons les mêmes données qu'auparavant, alors comparons-les avec la bibliothèque standard. J'ai essayé de réduire le nombre d'enregistrements à l'avance avec l'éditeur de requêtes. Python rend le thé boueux et affiche simplement un graphique en deux dimensions.

1000 enregistrements

Il s'affiche sans aucun problème, y compris la carte standard. C'est juste le nombre affiché. image.png

10000 enregistrements

La carte standard donnera un message indiquant que tous les points ne sont pas affichés. Il semble qu'il n'y ait pas d'omissions majeures comme j'en ai vu d'autres. La vitesse ne change pas beaucoup non plus.

image.png

100 000 enregistrements

ArcGIS a commencé à jouer. La carte standard semble avoir été échantillonnée au hasard et la gamme d'apparence n'a pas beaucoup changé. Je ne sais pas si d'autres bibliothèques fonctionnent sur PowerBI, et il semble qu'elles puissent toutes être affichées. (vraiment?) Cela ne change pas grand chose sauf que tmap et ggmap sont un peu lents. Vous n'aurez pas à attendre une minute.

image.png

1 000 000 d'enregistrements

À ce stade, il semble que les données soient également réduites pour les visuels R. Aussi, dans les données Uber, il y a une voiture qui va à Las Vegas, donc ggmap prend du temps pour afficher l'ensemble (besoin d'ajuster le taux d'agrandissement de la carte)

image.png

Résumé

Dans une carte aussi simple, il est inutile d'utiliser du code R pour la visualiser, mais si vous avez besoin d'un dessin ou d'un calcul spécial, vous pouvez incorporer une bibliothèque fermement dans R et l'utiliser. , J'ai pensé qu'il pourrait y avoir un virage.

Recommended Posts

Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI
Enquête sur l'alimentation CC contrôlable par Python
Résumé des méthodes d'analyse de données statistiques utilisant Python qui peuvent être utilisées en entreprise
Mettre en place un serveur FTP qui peut être créé et détruit immédiatement (en Python)
Tracer des informations géographiques en Python
traitement python3 qui semble utilisable dans paiza
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Index d'évaluation pouvant être spécifié pour GridSearchCV de sklearn
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
J'ai acheté et analysé la loterie jumbo de fin d'année avec Python qui peut être exécutée dans Colaboratory
Ceci et cela des propriétés python
Hashing de données en R et Python
Résumé de l'entrée standard de Python pouvant être utilisée dans Competition Pro
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Nombre maximum de paramètres de fonction pouvant être définis dans chaque langue
Principes de base de Tableau (visualisation à l'aide d'informations géographiques)
Projet Euler # 1 "Multiple de 3 et 5" en Python
Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
Notes personnelles des opérations liées aux pandas qui peuvent être utilisées dans la pratique
Programme d'installation facile et programme de mise à jour automatique pouvant être utilisé dans n'importe quelle langue
Liste des outils qui peuvent être utilisés pour essayer facilement l'analyse des émotions des phrases japonaises avec Python (essayez avec google colab)
Fonctions pouvant être utilisées dans l'instruction for
Construire un Sphinx qui peut être écrit avec Markdown
Visualisation en temps réel des données thermographiques AMG8833 en Python
[Python] J'ai examiné une pratique qui peut être exécutée en parallèle avec le thread principal par traitement asynchrone (multiprocessing, asyncio)
Créez un tracé de R semblable à un joyplot avec python
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
Explication de la distance d'édition et de l'implémentation en Python
Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur
[Introduction à Python] Résumé des fonctions et méthodes qui apparaissent fréquemment en Python [Format du problème]
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Remarques sur l'utilisation de StatsModels qui peuvent utiliser la régression linéaire et GLM en python
Dans Python3.8 et versions ultérieures, le mod inverse peut être calculé avec la fonction intégrée pow.
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Statistiques simples qui peuvent être utilisées pour analyser l'effet des mesures sur les sites EC et les codes qui peuvent être utilisés dans le notebook jupyter
"Régression linéaire" et "Version probabiliste de la régression linéaire" en Python "Régression linéaire de Bayes"
Traitement pleine largeur et demi-largeur des données CSV en Python
Algorithmes de base utilisables par les pros de la compétition
Calcul de l'écart type et du coefficient de corrélation en Python
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Différence entre Ruby et Python en termes de variables
Notes sur les connaissances Python utilisables avec AtCoder
Une doublure qui produit 1000000 chiffres de rapport de circonférence avec Python
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
Les équations simultanées non linéaires peuvent être facilement résolues avec Python.
Exemple d'obtention du nom du module et du nom de la classe en Python
Récapitulatif du traitement de la date en Python (datetime et dateutil)
Installez Mecab et CaboCha sur ubuntu16.04LTS afin qu'il puisse être utilisé à partir de la série python3
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion