Ein Beispiel für einen kurzen Überblick über Trends bei Durchflussdaten.
Aus Verteilungszählung des Außenministeriums [Durchflussvolumen zwischen Präfekturen (nach Produkttyp) -Gewicht-](http: // www. mlit.go.jp/sogoseisaku/transport/sosei_transport_fr_000074.html) wird verwendet. Jedes Blatt enthält die Gewichtsdaten des physischen Flusses nach Präfektur im Jahr 2010. Insgesamt gibt es 10 Blätter, landwirtschaftliches Wasser, Forstwirtschaft, Bergbau, Metallmaschinen, Chemie, leichte Arbeit, verschiedene Arbeiten, Entladung und Spezial.
Wir haben ein Docker-Image (tsutomu7 / graphviz) vorbereitet, damit Sie graphviz schnell verwenden und Folgendes ausführen können.
bash
firefox http://localhost:8888 &
docker run -it --rm -p 8888:8888 tsutomu7/graphviz
Wenn Sie Ihre eigenen erstellen möchten, führen Sie nach der Installation von [Anaconda] "conda install graphviz" und "pip install graphviz" aus (https://www.continuum.io/downloads). Installieren Sie den Hauptteil von graphgviz mit conda und die Hülle mit pip.
Lesen Sie alle Blätter mit read_excel gleichzeitig in die Variable a. Für a ist 0-9 der Schlüssel und DataFrame der Wert. a [0] ist der "gesamte" DataFrame für alle Branchen.
python3
import numpy as np, pandas as pd
cat = 'Total Land-, Wasser- und Forstwirtschaft Bergbau Metallmaschinen Chemische Leichtarbeiten Sonstige Arbeiten Emissionsspezial'.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 | |||||||
Nordseestraße th> | 944271.4669 | 6728.8486 | 1075.6893 | 7623.1429 | 2350.6049 | 164.8547 | 4221.1922 |
Blue Forest 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 |
Es stellt eine Präfektur dar, deren Zeile From ist, und eine Präfektur, deren Spalte To ist, und ist eine 47 x 47-Matrix.
Nach Branche in absteigender Reihenfolge des Volumens sortieren.
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 |
Die Abbildung wird als "fig_industry.png " ausgegeben. Die Anzahl der Durchflussraten beträgt 1000 Tonnen / Jahr.
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)
das ist alles
Recommended Posts