[PYTHON] J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn

J'ai essayé d'afficher la condition d'infection de corona sur la carte thermique de seaborn

Objectif

Visualisez la propagation de Corona dans chaque préfecture Le but est le suivant. colona.png

Méthode

Utilisez python seaborn. Cliquez ici pour le nombre de personnes infectées (jusqu'à 4/5). https://toyokeizai.net/sp/visual/tko/covid19/ Cliquez ici pour les données de nom de préfecture. https://gist.github.com/mugifly/d6e68a516de4a008687c Voici un résumé de diverses choses. https://github.com/kyasby/colona.git

Importer la bibliothèque

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

% matplotlib inline est magique. numpy importe pour cumsum ().

Importer le nombre csv de personnes infectées

df = pd.read_csv("COVID-19.csv")
df = df[["Préfecture de consultation", "Préfecture de résidence", "Nombre de personnes", "Date d'apparition", "Date fixe"]]
df = df.rename(columns={"Âge":"age", "sexe":"sex", "Préfecture de consultation":"hsp", "Préfecture de résidence":"house"})
df

Extrayez les colonnes requises et renommez-les en même temps. En passant une liste à df [], vous ne pouvez extraire que cette colonne.

df.rename(columns={"old_columns_name":"new_name"},index={"old_index_name":"new_name"}) Vous pouvez modifier le nom de la colonne et le nom de l'index en passant un dictionnaire tel que.

Prise de date

for i, row in df.iterrows():
    if type(row["Date d'apparition"])==float:
        df.at[i, "Date d'apparition"] = row["Date fixe"]
    else:
        pass
df = df.rename(columns = {"Date d'apparition":"Date"})

Je veux que l'axe horizontal de la carte de chaleur soit la date, donc j'obtiens la date. Cependant, comme indiqué ci-dessous, la «date de début» contient NaN, donc dans ce cas, remplacez-la par la «date confirmée».

hsp house Nombre de personnes Date d'apparition Date fixe
Préfecture de Kanagawa Préfecture de Kanagawa 1 1/3/2020 1/15/2020
Tokyo les gens de la République de Chine 1 1/14/2020 1/24/2020
Tokyo les gens de la République de Chine 1 1/21/2020 1/25/2020
Préfecture d'Osaka Préfecture d'Osaka 1 1/20/2020 1/29/2020
inconnue les gens de la République de Chine 1 1/29/2020 1/30/2020
Préfecture de Chiba les gens de la République de Chine 1 NaN 1/30/2020

Enfin, changez le nom de la colonne en "Date".

Jugement NaN type (row [" date de début "]) == float Je l'ai écrit comme ça, mais s'il vous plaît laissez-moi savoir s'il existe une meilleure façon de l'écrire.

Importer le CSV préfectoral

todofuken = pd.read_csv("japan.csv", header=None)[0]

Remplacer une partie de hsp

df["hsp"].value_counts()

Donc, si vous vérifiez le contenu de "hsp", vous pouvez voir qu'il y a "Aéroport de Haneda" et "Inconnu".

スクリーンショット 2020-04-06 16.04.52.png

df["hsp"]= df["hsp"].apply(lambda x : "Autre" if x not in list(todofuken) else x)

Utilisez apply et la fonction lambda pour réécrire partiellement le contenu de df ["hsp"]. S'il ne figure pas dans la liste des noms de préfecture, entrez «Autre», et s'il y en a, entrez la préfecture telle quelle. Lorsque vous utilisez les fonctions apply et lambda, vous obtiendrez probablement une erreur de syntaxe sans autre. (Non confirmé) Veuillez faire attention.

Jusqu'à présent, df ressemble à ceci.

hsp house Nombre de personnes Date Date fixe
Préfecture de Kanagawa Préfecture de Kanagawa 1 1/3/2020 1/15/2020
Tokyo les gens de la République de Chine 1 1/14/2020 1/24/2020
Tokyo les gens de la République de Chine 1 1/21/2020 1/25/2020
Préfecture d'Aichi les gens de la République de Chine 1 1/23/2020 1/26/2020
Préfecture d'Aichi les gens de la République de Chine 1 1/22/2020 1/28/2020
Préfecture de Nara Préfecture de Nara 1 1/14/2020 1/28/2020
Hokkaido les gens de la République de Chine 1 1/26/2020 1/28/2020
Préfecture d'Osaka Préfecture d'Osaka 1 1/20/2020 1/29/2020

Pivot

pvt = df.pivot_table(index="hsp", columns="Date", values="Nombre de personnes").fillna(0)
pvt = pvt.rename(index = dict(zip(jpn[0], jpn[2]))).rename(index={"Autre":"others"})

pandas a une méthode appelée pivot_table qui vous permet de créer littéralement un tableau croisé dynamique. (Vous n'avez pas besoin d'Excel.) De plus, remplissez NaN avec 0.

Ensuite, renommez-le de Hokkaido en hokkaido. Dans mon environnement, les caractères ne sont pas affichés si le nom de l'index ou le nom de la colonne contient du japonais. Il semble qu'il sera résolu en installant quelque chose, mais il sera géré en renommant. (S'il vous plaît laissez-moi savoir s'il existe un meilleur moyen.)

Le contenu de jpn [0] sont les noms des préfectures en caractères chinois tels que Hokkaido et Aomori. Le contenu de jpn [2] sont les noms des préfectures en caractères romains tels que hokkaido et aomori.

Associez-les à la fonction zip, transformez-les en dictionnaire avec la fonction dict, et passez-les à la fonction renommer. Remplacez également «Autre» par «Autres».

Jusqu'à ce point, la trame de données ressemble à ceci. スクリーンショット 2020-04-06 0.42.59.png

Nombre cumulatif

for i in range(len(pvt)):
    pvt.iloc[i]=pvt.iloc[i].cumsum()

Extrayez ligne par ligne de pvt et utilisez la fonction cumsum () de numpy pour faire le nombre cumulé de personnes.

De cette façon, il a été mis à jour au nombre cumulé de personnes. スクリーンショット 2020-04-06 0.46.14.png

Afficher et enregistrer

plt.figure(figsize=(20,10))
sns.heatmap(pvt.iloc[:,-60:] , linewidths=0, cmap='Spectral', cbar=True, xticklabels=5)
plt.savefig("colona.png ")

J'ai décidé d'afficher la jeune date d'il y a 60 jours car il y a peu de personnes infectées (heureusement) et cela n'a aucun sens de l'afficher. Vous pouvez utiliser : (slice). Par exemple, «10: 20» indique 10 ou plus et moins de 20.

J'ai pu afficher la carte thermique comme celle-ci.

colona.png

Recommended Posts

J'ai essayé d'afficher le degré d'infection par le virus corona sur la carte thermique Seaborn
J'ai essayé de visualiser la condition commune des téléspectateurs de la chaîne VTuber
J'ai essayé d'utiliser des données PDF de soins médicaux en ligne basés sur la propagation d'une nouvelle infection à coronavirus
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé l'analyse par grappes de la carte météo
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé de trier les objets de l'image du plat de steak --③ Image similaire Détection de carte de chaleur
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de trouver l'entropie de l'image avec python
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé d'afficher les données du groupe de points DB de la préfecture de Shizuoka avec Vue + Leaflet
Je souhaite produire une carte thermique magnifiquement personnalisée de la matrice de corrélation. édition matplotlib
[Démarrage du shell] J'ai essayé d'afficher le shell sur le téléviseur avec un G-cluster à carte Linux bon marché
J'ai essayé de prédire le genre de musique à partir du titre de la chanson sur le réseau neuronal récurrent
J'ai essayé de déplacer le ballon
J'ai essayé de créer un environnement de MkDocs sur Amazon Linux
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
[Python] J'ai écrit la route du typhon sur la carte en utilisant le folium
Affichez l'image de la caméra connectée à l'ordinateur personnel sur l'interface graphique.
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
J'ai essayé de démarrer avec Bitcoin Systre le week-end
J'ai essayé d'afficher l'interface graphique sur Mac avec le système X Window
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé le serveur asynchrone de Django 3.0
J'ai essayé de résumer la commande umask
J'ai essayé d'obtenir les résultats de Hachinai en utilisant le traitement d'image
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
J'ai essayé de reconnaître le mot de réveil
zoom J'ai essayé de quantifier le degré d'excitation de l'histoire lors de la conférence
J'ai essayé d'estimer la similitude de l'intention de la question en utilisant Doc2Vec de gensim
J'ai essayé d'améliorer la précision de mon propre réseau neuronal
J'ai essayé de résoudre 100 traitements linguistiques Knock version 2020 [Chapitre 3: Expressions régulières 25-29]
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de résumer la modélisation graphique.
Touches de karaoké assorties ~ J'ai essayé de le mettre sur Laravel ~ <en route>
Afficher le graphique de tensorBoard sur Jupyter