Visualisation de la logistique avec Python

Qu'est-ce que c'est

Un exemple pour un aperçu rapide des tendances des données de débit.

données brutes

Tiré de Recensement de la distribution du ministère des Affaires étrangères [Volume d'écoulement inter-préfectoral (par type de produit) -Weight-](http: // www. mlit.go.jp/sogoseisaku/transport/sosei_transport_fr_000074.html) est utilisé. Chaque feuille est les données de poids du flux physique par préfecture en 2010. Il y a 10 feuilles au total, eau agricole, foresterie, exploitation minière, machines métalliques, chimie, travaux légers, travaux divers, décharges et spéciaux.

Environnement d'exécution

Nous avons préparé une image Docker (tsutomu7 / graphviz) afin que vous puissiez utiliser graphviz rapidement, afin que vous puissiez exécuter ce qui suit.

bash


firefox http://localhost:8888 &
docker run -it --rm -p 8888:8888 tsutomu7/graphviz

Si vous voulez construire le vôtre, faites "conda install graphviz" et "pip install graphviz" après avoir installé Anaconda. Installez le corps principal de graphgviz avec conda et le wrapper avec pip.

Essayez-le avec Python

Lire les données

Lisez toutes les feuilles dans la variable a à la fois avec read_excel. Pour a, 0-9 est la clé et DataFrame est la valeur. a [0] est le DataFrame «total» pour toutes les industries.

python3


import numpy as np, pandas as pd
cat = 'Total Agriculture, eau et sylviculture Exploitation minière Métallurgie Machines chimiques Travaux légers Travaux divers Émissions spéciales'.split()
rng = list(range(len(cat)))
a = pd.read_excel('http://www.mlit.go.jp/sogoseisaku/transport/butsuryucensus/T9-010301.xls',
    rng, skip_footer=1, skiprows=8, header=None, index_col=0, parse_cols=np.arange(1,49))
a[0].ix[:3, :7]
1 2 3 4 5 6 7
1
Route de la mer du Nord 944271.4669 6728.8486 1075.6893 7623.1429 2350.6049 164.8547 4221.1922
Forêt bleue 22969.4545 257605.0057 12702.7039 2857.1319 8079.5519 750.9524 1799.4754
Rock Hand 211.2175 5090.7300 194668.7805 10623.9818 1518.8552 676.9535 1244.9179

Il représente une préfecture dont la ligne est From et une préfecture dont la colonne est To, et est une matrice 47 x 47.

Normaliser

Trier par industrie par ordre décroissant de volume.

python3


prefs = a[0].index.map(lambda x: x.replace('\u3000', ''))
b = [pd.DataFrame([(prefs[i], prefs[j], a[h].iloc[i, j]) for i in range(47) for j in range(47)
    if i != j], columns=['From', 'To', 'Val']).sort_values('Val', ascending=False) for h in rng]
b[0][:3]
From To Val
1080 Mie Aichi 170322.9506
1268 Hyogo Osaka 165543.7879
1499 Okayama Hyogo 142949.9022

Dessinez un diagramme avec les 5 principaux débits de chaque industrie

La figure est sortie sous la forme "fig_industry.png ". Le nombre de débit est de 1000 tonnes / an.

python3


from graphviz import Digraph
from IPython.display import display
for h, c in zip(rng, cat):
    g = Digraph(format='png')
    g.attr('graph', label=c, labelloc='t')
    g.node_attr['fontsize'] = '10'
    for _, r in b[h][:5].iterrows():
        g.edge(r.From, r.To, label='%d'%(r.Val//1000))
    g.render('fig_%s'%c)
    display(g)

fig_合計.png fig_農水.png fig_林業.png fig_鉱産.png fig_金属機械.png fig_化学.png fig_軽工.png fig_雑工.png fig_排出.png fig_特殊.png

c'est tout

Recommended Posts

Visualisation de la logistique avec Python
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
FizzBuzz en Python3
Grattage avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Recommandation d'Altair! Visualisation des données avec Python
Text mining avec Python ② Visualisation avec Word Cloud
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
Mémo de visualisation par Python
Bibliothèques de visualisation de données Python
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
Grattage avec Python + PhantomJS
Conduisez WebDriver avec python
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Utiliser DynamoDB avec Python
[Écrire sur la carte avec plotly] Visualisation dynamique avec plotly [python]
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python
Exécutez Blender avec python
Python à partir de Windows 7
Carte thermique par Python + matplotlib