Wir werden uns hier mit diesen beiden befassen. Es läuft auf Google Colaboratory.
!pip install japanmap
from japanmap import pref_names,pref_code,picture
print(pref_names)
['_', 'Hokkaido', 'Präfektur Aomori', Präfektur Iwate ', Präfektur Miyagi', Präfektur Akita ', Präfektur Yamagata', Präfektur Fukushima ', Präfektur Ibaraki', Präfektur Tochigi ' Präfektur Gunma, Präfektur Saitama, Präfektur Chiba, Metropolregion Tokio, Präfektur Kanagawa, Präfektur Niigata, Präfektur Toyig, Präfektur Ishikawa, Präfektur Fukui, Präfektur Yamanashi Präfektur Nagano, Präfektur Gifu, Präfektur Shizuoka, Präfektur Aichi, Präfektur Mie, Präfektur Shie, Präfektur Kyoto, Präfektur Osaka, Präfektur Hyogo, Präfektur Nara Präfektur Wakayama, Präfektur Tottori, Präfektur Shimane, Präfektur Okayama, Präfektur Hiroshima, Präfektur Yamoshuchi, Präfektur Tokushima, Präfektur Kagawa, Präfektur Ehime, Präfektur Kochi Präfektur Fukuoka ', Präfektur Saga', Präfektur Nagasaki ', Präfektur Kumamoto', Präfektur Oita ', Präfektur Miyazaki', Präfektur Kagoshima ', Präfektur Okinawa']
pref_code('Tokio')
13
%matplotlib inline
import matplotlib.pyplot as plt
from pylab import rcParams
rcParams['figure.figsize'] = 6, 6
plt.imshow(picture())
plt.imshow(picture({'Tottori':'red','Saga':(0,255,0)}))
Als Thema habe ich die Excel-Datei der statistischen Daten der Präfektur verwendet, die auf der Website von Teikoku Shoin veröffentlicht wurde.
urllib ist eine Bibliothek zum Herunterladen. Wenn Sie sie jedoch in Google Colab verwenden, laden Sie sie in Google Colab hoch. In Google Colab wird die hochgeladene Datei am Ende der Sitzung ausgeblendet. Laden Sie sie daher zu diesem Zeitpunkt erneut hoch.
#Herunterladen von urllib
import urllib.request
url = "URL, unter der sich die Excel-Datei befindet"
urllib.request.urlretrieve(url, 'Teikoku-Shoin-Japan.xlsx')
Soweit ich weiß, gibt es zwei Möglichkeiten, eine Excel-Datei in Python zu öffnen.
import pandas as pd
excel = pd.read_excel('Teikoku-Shoin-Japan.xlsx') #Diese Methode funktioniert möglicherweise nicht
import pandas as pd
excel = pd.ExcelFile('Teikoku-Shoin-Japan.xlsx') #Ich habe das Gefühl, dass dieser besser funktioniert
Excel besteht im Gegensatz zu CSV usw. aus mehreren Blättern.
for s in enumerate(excel.sheet_names):
print(s) #Listen Sie Blattnamen und -nummern auf
(0, 'Area \ u3000 [2017]') (1, 'Bevölkerung \ u3000 [2018]') (2, 'Bevölkerungsdichte \ u3000 [2018]') (3, 'Bevölkerungswachstumsrate \ u3000 [2010-2015]') (4, 'Alte (65 Jahre und älter) Bevölkerungsrate \ u3000 [2018]') (5, „Bevölkerungsverhältnis nach Industriezweigen (2015)“) (6, 'Durchschnittliche Lebenserwartung (weiblich) \ u3000 [2015]') (7, 'Lebenserwartung (männlich) \ u3000 [2015]') (8, „Anbaufläche [2017]“) (9, 'Ackerlandverhältnis \ u3000 [2017]') (10, 'Waldrate / gepflanzte Waldrate [2017]') (11, 'Weizenproduktion \ u3000 [2018]') (12, 'Reisproduktion \ u3000 [2017]') (13, 'Herstellung von Süßigkeiten \ u3000 [2017]') (14, 'Kartoffelproduktion \ u3000 [2017]') (15, 'Sojabohnenproduktion \ u3000 [2017]') (16, 'Produktion von Erdnüssen \ u3000 [2017]') (17, 'Cabetsu-Produktion \ u3000 [2017]') (18, 'Gurkenproduktion \ u3000 [2017]') (19, 'Produktion von Tintenfisch \ u3000 [2017]') (20, 'Daikon-Produktion \ u3000 [2017]') (21, „Produktion von Raps [2017]“) (22, 'Karottenproduktion \ u3000 [2017]') (23, 'Produktion von Frühlingszwiebeln \ u3000 [2017]') (24, 'Hakusai-Produktion \ u3000 [2017]') (25, 'Peman Production \ u3000 [2017]') (26, 'Frühlingsgrasproduktion \ u3000 [2017]') (27, 'Herstellung von Tee (rauer Tee) \ u3000 [2017]') (28, 'Produktion von Erdbeeren \ u3000 [2017]') (29, 'Ume Production \ u3000 [2017]') (30, 'Produktion von Melonen \ u3000 [2017]') (31, 'Persimmon-Produktion \ u3000 [2017]') (32, 'Sakuranbo-Produktion \ u3000 [2017]') (33, 'Produktion von Orangen \ u3000 [2017]') (34, 'Momo-Produktion \ u3000 [2017]') (35, 'Herstellung von Äpfeln \ u3000 [2017]') (36, 'Chrysanthemenversand [2017]') (37, 'Stiefmütterchen-Sendungen [2017]') (38, 'Sendungen westlicher Orchideen (Schnittblumen) \ u3000 [2017]') (39, 'Anzahl der Broilervögel \ u3000 [2018]') (40, 'Anzahl der aufgezogenen Schweine \ u3000 [2018]') (41, 'Anzahl der aufgezogenen Rinder \ u3000 [2018]') (42, 'Anzahl der Milchkühe \ u3000 [2018]') (43, 'Mayu-Produktion [2017]') (44, 'Agrarproduktion \ u3000 [2017]') (45, 'Reisproduktion \ u3000 [2017]') (46, 'Weizenproduktion \ u3000 [2017]') (47, 'Bean output \ u3000 [2017]') (48, 'Imo-Produktionsmenge \ u3000 [2017]') (49, 'Gemüseproduktion \ u3000 [2017]') (50, 'Obstproduktion \ u3000 [2017]') (51, 'Blumenleistung \ u3000 [2017]') (52, 'Produktionsmenge handwerklicher landwirtschaftlicher Erzeugnisse \ u3000 [2017]') (53, 'Viehproduktion \ u3000 [2017]') (54, „Fischereierzeugung (Fischerei / Anbau) [2016]“) (55, 'Squid catch \ u3000 [2016]') (56, 'Katsuos Fang \ u3000 [2016]') (57, 'Sanmas Fang \ u3000 [2016]') (58, 'Maiwashis Fang \ u3000 [2016]') (59, 'Thunfischfang \ u3000 [2016]') (60, 'Kaki no Cultivation \ u3000 [2016]') (61, 'Kultivierung von Jakobsmuscheln \ u3000 [2016]') (62, 'Wakame-Anbau \ u3000 [2016]') (63, 'Produktion von Material (Rohholz) \ u3000 [2016]') (64, 'Industrieller Versandwert \ u3000 [2016]') (65, „Herstellung von Fruchtschnaps [2016]“) (66, 'Yakichu-Produktion [2016]') (67, 'Herstellung von Sake (einschließlich schlammigem Sake) \ u3000 [2016]') (68, 'Bierherstellung \ u3000 [2016]') (69, „Produktion von Öl- und Kohleprodukten [2016]“) (70, 'Halbleiterproduktion \ u3000 [2016]') (71, 'Produktion von Industrierobotern \ u3000 [2016]') (72, 'Produktion von Kraftfahrzeugen (einschließlich Motorrädern) \ u3000 [2016]') (73, 'Faserproduktion \ u3000 [2016]') (74, 'Stahlproduktion \ u3000 [2016]') (75, 'Produktion von integrierten Schaltkreisen \ u3000 [2016]') (76, 'Präfektureinkommen pro Kopf \ u3000 [2015]') (77, 'Stadtparkfläche pro Person \ u3000 [Ende März 2017]') (78, 'Strombedarf pro Person \ u3000 [2015]') (79, 'pro Tag tägliche Abfallemissionen \ u3000 [2016]') (80, 'Kanalisationsdurchdringungsrate \ u3000 [2018]') (81, 'Anzahl der Personenkraftwagen pro Haushalt \ u3000 [2018]') (82, 'Jährliche Einzelhandelsumsätze \ u3000 2015') (83, 'Anzahl der Verschmutzungsbeschwerden \ u3000 [2017]')
Ich werde ein geeignetes Blatt auswählen
sheet_index = 2
print(excel.sheet_names[sheet_index])
sheet = excel.parse(excel.sheet_names[sheet_index], header=None) #Machen Sie den Inhalt des zweiten Blattes im Pandas-Format
Bevölkerungsdichte [2018]
sheet.head() #Überprüfen Sie die Form der Daten
0 | 1 | 2 | |
---|---|---|---|
0 | Quelle: Grundgesamtheit 2018 Einwohnerzahl / Anzahl der Haushalte, 2017 Fläche nach Präfektur, Stadt, Gemeinde und Dorf td> | NaN | NaN |
1 | Präfekturcodetd> | Präfekturname td> | (Personen / km2) td> |
2 | 1 | Hokkaido td> | 64 |
3 | 2 | Aomori td> | 136 |
4 | 3 | Iwate td> | 83 |
sheet.iloc[2:49, [0, 2]] #Extrahieren Sie die erforderlichen Teile
0 | 2 | |
---|---|---|
2 | 1 | 64 |
3 | 2 | 136 |
4 | 3 | 83 |
5 | 4 | 317 |
... | ... | ... |
46 | 45 | 144 |
47 | 46 | 180 |
48 | 47 | 645 |
sheet.iloc[2:49, [0, 2]].values #Konvertieren Sie das Pandas-Format in das Numpy-Format
array([[1, 64],
[2, 136],
[3, 83],
[4, 317],
[5, 87],
...,
[46, 180],
[47, 645]], dtype=object)
values = sheet.iloc[2:49, [0, 2]].values
Der Code unten
Gibt den Farbcode von aus.
import numpy as np
def color_scale(value, max_value):
try:
v = value / max_value
if v >= 1.0:
return (255, 0, 0)
elif v <= 0:
return (0, 0, 255)
elif v > 0.5:
red = 1
green = int(255 * (2 - 2 * v))
blue = 0
return (red, green, blue)
else:
red = int(255 * 2 * v)
green = int(255 * 2 * v)
blue = int(255 * (1 - 2 * v))
return (red, green, blue)
except:
return (255, 255, 255)
Das Anwendungsbeispiel sieht folgendermaßen aus.
for v in [0.0, 0.2, 0.5, 0.7, 1.0, "string"]:
print(v, color_scale(v, 1))
0.0 (0, 0, 255)
0.2 (102, 102, 153)
0.5 (255, 255, 0)
0.7 (1, 153, 0)
1.0 (255, 0, 0)
string (255, 255, 255)
Finden Sie den Maximalwert
max_value = np.max([a for a in values[:, 1] if not isinstance(a, str)])
Entscheide die Farbe für jede Präfektur
data ={}
for code, value in zip(values[:, 0], values[:, 1]):
data[code] = color_scale(value, max_value)
Färben Sie die Karte von Japan
%matplotlib inline
import matplotlib.pyplot as plt
from pylab import rcParams
print(excel.sheet_names[sheet_index])
plt.imshow(picture(data))
Bevölkerungsdichte [2018]
Es sieht so aus, wenn es mit verschiedenen Daten gemalt wird. Der Ort, an dem keine Daten vorhanden sind, ist fest weiß.
sheet_index = 60
print(excel.sheet_names[sheet_index])
sheet = excel.parse(excel.sheet_names[sheet_index], header=None)
values = sheet.iloc[2:49, [0, 2]].values
max_value = np.max([a for a in values[:, 1] if not isinstance(a, str)])
data ={}
for code, value in zip(values[:, 0], values[:, 1]):
data[code] = color_scale(value, max_value)
plt.imshow(picture(data))
Rasierte Landwirtschaft [2016]
Recommended Posts