Un exemple pour un aperçu rapide des tendances des données de débit.
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.
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.
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 th> | 944271.4669 | 6728.8486 | 1075.6893 | 7623.1429 | 2350.6049 | 164.8547 | 4221.1922 |
Forêt bleue th> | 22969.4545 | 257605.0057 | 12702.7039 | 2857.1319 | 8079.5519 | 750.9524 | 1799.4754 |
Rock Hand th> | 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.
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 td> | Aichi td> | 170322.9506 |
1268 | Hyogo td> | Osaka td> | 165543.7879 |
1499 | Okayama td> | Hyogo td> | 142949.9022 |
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)
c'est tout
Recommended Posts