Nous allons traiter de ces deux ici. Il fonctionne sur Google Colaboratory.
!pip install japanmap
from japanmap import pref_names,pref_code,picture
print(pref_names)
['_', 'Hokkaido', 'Préfecture d'Aomori', 'Préfecture d'Iwate', 'Préfecture de Miyagi', 'Préfecture d'Akita', 'Préfecture de Yamagata', 'Préfecture de Fukushima', 'Préfecture d'Ibaraki', 'Préfecture de Tochigi', ' Préfecture de Gunma ',' Préfecture de Saitama ',' Préfecture de Chiba ',' Zone métropolitaine de Tokyo ',' Préfecture de Kanagawa ',' Préfecture de Niigata ',' Préfecture de Toyama ',' Préfecture d'Ishikawa ',' Préfecture de Fukui ',' Préfecture de Yamanashi ',' Préfecture de Nagano ',' Préfecture de Gifu ',' Préfecture de Shizuoka ',' Préfecture d'Aichi ',' Préfecture de Mie ',' Préfecture de Shiga ',' Préfecture de Kyoto ',' Préfecture d'Osaka ',' Préfecture de Hyogo ',' Préfecture de Nara ',' Préfecture de Wakayama ',' Préfecture de Tottori ',' Préfecture de Shimane ',' Préfecture d'Okayama ',' Préfecture d'Hiroshima ',' Préfecture de Yamaguchi ',' Préfecture de Tokushima ',' Préfecture de Kagawa ',' Préfecture d'Ehime ',' Préfecture de Kochi ',' Préfecture de Fukuoka »,« Préfecture de Saga »,« Préfecture de Nagasaki »,« Préfecture de Kumamoto »,« Préfecture d'Oita »,« Préfecture de Miyazaki »,« Préfecture de Kagoshima »,« Préfecture d'Okinawa »]
pref_code('Tokyo')
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)}))
Comme sujet, j'ai utilisé le fichier Excel des données statistiques par préfecture publié sur le site de Teikoku Shoin.
urllib est une bibliothèque à télécharger, mais si vous l'utilisez sur Google Colab, vous la téléchargerez sur Google Colab. Dans Google Colab, le fichier téléchargé disparaîtra à la fin de la session, nous allons donc le télécharger à nouveau à ce moment-là.
#Télécharger par urllib
import urllib.request
url = "URL où se trouve le fichier Excel"
urllib.request.urlretrieve(url, 'Teikoku-Shoin-Japan.xlsx')
Pour autant que je sache, il existe deux façons d'ouvrir un fichier Excel en Python.
import pandas as pd
excel = pd.read_excel('Teikoku-Shoin-Japan.xlsx') #Cette méthode peut ne pas fonctionner
import pandas as pd
excel = pd.ExcelFile('Teikoku-Shoin-Japan.xlsx') #Je sens que celui-ci fonctionne mieux
Excel, contrairement à csv, se compose de plusieurs feuilles.
for s in enumerate(excel.sheet_names):
print(s) #Liste des noms et des numéros de feuille
(0, 'Zone \ u3000 [2017]') (1, 'Population \ u3000 [2018]') (2, 'Densité de la population \ u3000 [2018]') (3, «Taux de croissance démographique \ u3000 [2010-2015]») (4, «Taux de population des personnes âgées (65 ans et plus) \ u3000 [2018]») (5, 'Ratio de population par industrie (2015)') (6, «Espérance de vie moyenne (femmes) \ u3000 [2015]») (7, «Espérance de vie (hommes) \ u3000 [2015]») (8, «Superficie des terres cultivées [2017]») (9, «Ratio des terres cultivées \ u3000 [2017]») (10, «Taux forestier / taux forestier planté [2017]») (11, «Production de blé \ u3000 [2018]») (12, «Production de riz \ u3000 [2017]») (13, «Production de bonbons \ u3000 [2017]») (14, «Produire des pommes de terre \ u3000 [2017]») (15, «Production de soja \ u3000 [2017]») (16, «Production d'arachides \ u3000 [2017]») (17, «Production de Cabetsu \ u3000 [2017]») (18, «Production de concombres \ u3000 [2017]») (19, 'Production de calmars \ u3000 [2017]') (20, «Production Daikon \ u3000 [2017]») (21, «Production de colza [2017]») (22, «Production de carottes \ u3000 [2017]») (23, «Production Negishi \ u3000 [2017]») (24, «Production Hakusai \ u3000 [2017]») (25, «Production Peman \ u3000 [2017]») (26, «Production d'épinards \ u3000 [2017]») (27, «Production de thé (thé brut) \ u3000 [2017]») (28, «Production de fraises \ u3000 [2017]») (29, «Production Ume \ u3000 [2017]») (30, «Production de melon \ u3000 [2017]») (31, «Production de kaki \ u3000 [2017]») (32, «Sakuranbo production \ u3000 [2017]») (33, «Production d'oranges \ u3000 [2017]») (34, 'Momo production \ u3000 [2017]') (35, «Production de pommes \ u3000 [2017]») (36, «Envoi de chrysanthème [2017]») (37, «Expéditions Pansy [2017]») (38, "Expéditions d'orchidées occidentales (fleurs coupées) \ u3000 [2017]") (39, «Nombre d’oiseaux de chair \ u3000 [2018]») (40, «Nombre de porcs élevés \ u3000 [2018]») (41, «Nombre de bovins à viande élevés \ u3000 [2018]») (42, «Nombre de vaches laitières \ u3000 [2018]») (43, «production Mayu [2017]») (44, «Production agricole \ u3000 [2017]») (45, 'Production de riz \ u3000 [2017]') (46, 'Production de blé \ u3000 [2017]') (47, 'Sortie Bean \ u3000 [2017]') (48, «Montant de la production Imo \ u3000 [2017]») (49, "Production de légumes \ u3000 [2017]") (50, 'Sortie de fruits \ u3000 [2017]') (51, 'Production de fleurs \ u3000 [2017]') (52, «Quantité de production de produits agricoles artisanaux \ u3000 [2017]») (53, «Production animale \ u3000 [2017]») (54, «Production de la pêche (pêche / culture) [2016]») (55, 'Squid catch \ u3000 [2016]') (56, «Katsuo's catch \ u3000 [2016]») (57, 'La capture de Sanma \ u3000 [2016]') (58, 'La capture de Maiwashi \ u3000 [2016]') (59, «Prises de thon \ u3000 [2016]») (60, «Kaki pas de culture \ u3000 [2016]») (61, «Culture de pétoncles \ u3000 [2016]») (62, «Culture de Wakame \ u3000 [2016]») (63, «Production de matière (bois brut) \ u3000 [2016]») (64, «Valeur des expéditions industrielles \ u3000 [2016]») (65, «Production de liqueur de fruits [2016]») (66, «Production de Yakichu [2016]») (67, 'Production de saké (y compris de saké boueux) \ u3000 [2016]' ') (68, «Production de bière \ u3000 [2016]») (69, «Production de produits pétroliers et houillers [2016]») (70, «Production de semi-conducteurs \ u3000 [2016]») (71, «Production de robots industriels \ u3000 [2016]») (72, «Production d'automobiles (y compris de motocyclettes) \ u3000 [2016]») (73, «Production de fibres \ u3000 [2016]») (74, «Production d'acier \ u3000 [2016]») (75, «Production de circuits intégrés \ u3000 [2016]») (76, «Revenu préfectoral par habitant \ u3000 [2015]») (77, «superficie du parc de la ville par personne \ u3000 [fin mars 2017]») (78, «Demande d'électricité par personne \ u3000 [2015]») (79, «émissions de déchets quotidiennes par personne \ u3000 [2016]») (80, «Taux de pénétration des égouts \ u3000 [2018]») (81, «Nombre de voitures particulières par ménage \ u3000 [2018]») (82, «Ventes au détail annuelles \ u3000 2015») (83, «Nombre de plaintes pour pollution \ u3000 [2017]»)
Je vais sélectionner une feuille appropriée
sheet_index = 2
print(excel.sheet_names[sheet_index])
sheet = excel.parse(excel.sheet_names[sheet_index], header=None) #Transformez le contenu de la deuxième feuille au format pandas
Densité de la population [2018]
sheet.head() #Vérifiez la forme des données
0 | 1 | 2 | |
---|---|---|---|
0 | Source: Tableau de la population / du nombre de ménages du registre de base des résidents 2018, zone nationale 2017 par préfecture, ville, ville et village | NaN | NaN |
1 | code préfecture td> | Nom de la préfecture td> | (personnes / km2) td> |
2 | 1 | Hokkaido td> | 64 |
3 | 2 | Aomori td> | 136 |
4 | 3 | Iwate td> | 83 |
sheet.iloc[2:49, [0, 2]] #Extraire les pièces nécessaires
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 #Convertir le format pandas en format numpy
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
Le code ci-dessous
Produit le code couleur de.
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)
L'exemple d'utilisation ressemble à ceci.
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)
Trouvez la valeur maximale
max_value = np.max([a for a in values[:, 1] if not isinstance(a, str)])
Décidez de la couleur de chaque préfecture
data ={}
for code, value in zip(values[:, 0], values[:, 1]):
data[code] = color_scale(value, max_value)
Colorez la carte du Japon
%matplotlib inline
import matplotlib.pyplot as plt
from pylab import rcParams
print(excel.sheet_names[sheet_index])
plt.imshow(picture(data))
Densité de la population [2018]
Il ressemble à ceci lorsqu'il est peint avec des données différentes. L'endroit où il n'y a pas de données est fermement blanc.
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))
Rasage agricole [2016]
Recommended Posts