Ouvrez un fichier Excel en Python et coloriez la carte du Japon

Nous allons traiter de ces deux ici. Il fonctionne sur Google Colaboratory.

Colorez la carte du Japon

Installation de la bibliothèque japanmap

!pip install japanmap

Importer les bibliothèques requises

from japanmap import pref_names,pref_code,picture

Nom de la préfecture

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 »]

Code préfecture

pref_code('Tokyo')
13

Dessiner une carte blanche

%matplotlib inline
import matplotlib.pyplot as plt
from pylab import rcParams
 
rcParams['figure.figsize'] = 6, 6
plt.imshow(picture())

output_4_1.png

Coloration de la préfecture spécifiée

plt.imshow(picture({'Tottori':'red','Saga':(0,255,0)}))

output_5_1.png

Ouvrez le fichier Excel

Comme sujet, j'ai utilisé le fichier Excel des données statistiques par préfecture publié sur le site de Teikoku Shoin.

Télécharger

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') 

Ouvrez Excel

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 Nom de la préfecture (personnes / km2)
2 1 Hokkaido 64
3 2 Aomori 136
4 3 Iwate 83

Traitement de l'information

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)

Coloriez la carte du Japon avec des données Excel

Traitement de l'information

values = sheet.iloc[2:49, [0, 2]].values

Spécifier comment peindre

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]

output_21_2.png

Résumé

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]

output_22_2.png

Recommended Posts

Ouvrez un fichier Excel en Python et coloriez la carte du Japon
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
Comparer la grammaire de base de Python et Go d'une manière facile à comprendre
Changer la saturation et la clarté des spécifications de couleur comme # ff000 dans python 2.5
Comparez la vitesse d'ajout et de carte Python
Je veux colorer une partie de la chaîne Excel avec Python
Le mémo Python le plus simple au Japon (classes et objets)
L'histoire de FileNotFound en Python open () mode = 'w'
[Golang] Spécifiez un tableau pour la valeur de la carte
Utilisons les données ouvertes de "Mamebus" en Python
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
[Python] Changer la couleur du texte et la couleur d'arrière-plan d'un mot clé spécifique dans la sortie d'impression
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
[Python] Ouvrez le fichier csv dans le dossier spécifié par pandas
Obtenez le type MIME en Python et déterminez le format de fichier
Manipulez le presse-papiers en Python et collez le tableau dans Excel
[Note] Importation de fichiers dans le répertoire parent en Python
Lisez le fichier VTK et affichez la carte des couleurs avec jupyter.
[Astuces] Problèmes et solutions dans le développement de python + kivy
Google recherche la chaîne sur la dernière ligne du fichier en Python
L'histoire de Python et l'histoire de NaN
Enregistrez le fichier binaire en Python
[Python] Ajuster la norme de la carte des couleurs
L'histoire du "trou" dans le fichier
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Comment connaître la structure interne d'un objet en Python
J'ai eu un AttributeError en me moquant de la méthode ouverte en python
Fonction pour ouvrir un fichier en Python3 (différence entre open et codecs.open et comparaison de vitesse)
Obtenez le titre et la date de livraison de Yahoo! News en Python
Spécifiez la couleur dans la carte 2D matplotlib
Vérifiez le comportement du destroyer en Python
L'histoire d'une erreur dans PyOCR
Vérifier l'existence du fichier avec python
Créez rapidement un fichier Excel avec Python #python
Ecrire le fichier O_SYNC en C et Python
Le résultat de l'installation de python sur Anaconda
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
[Python] Récupère le code de caractère du fichier
[Python] Lire la ligne spécifiée dans le fichier
Projet Euler # 1 "Multiple de 3 et 5" en Python
Python open et io.open sont les mêmes
[Python3] Comprendre les bases des opérations sur les fichiers
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Un exemple de réponse à la question de référence de la session d'étude. Avec python.
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Sortie du nombre de cœurs de processeur en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Vous serez ingénieur dans 100 jours - Jour 29 - Python - Bases du langage Python 5
DL, valeur d'octet et suppression de fichier en Python3