[PYTHON] Créer une carte du choléra pour John Snow

introduction

La nouvelle carte des virus corona est téléchargée sur la page Web de chaque entreprise. À cet égard, je m'intéressais à des choses telles que la propagation géographique des maladies infectieuses et les cartes épidémiologiques. En attendant, il y avait quelque chose d'intéressant dans le projet datacamp, alors j'aimerais l'essayer. Je voudrais l'afficher sous forme de mémorandum. De plus, il est traduit en japonais par DeepL.

Aperçu

En 1854, le Dr John Snow a effectué une analyse spatiale informatisée en cartographiant le modèle et l'état des épidémies de choléra à Soho, Londres. Il a cartographié les morts dans le quartier et a décidé que la majorité se produisait autour d'un puits particulier et que les morts l'utilisaient. Non seulement c'était l'une des premières utilisations de la visualisation de données, mais en résolvant ce problème, il a établi une analyse spatiale et des épidémies modernes.

Ce projet Python réanalyse les données et recrée la célèbre carte de John Snow. Ce projet est conçu pour tester les connaissances des pandas et du Bokeh qui peuvent être apprises dans "Pandas Foundations" et "Interactive Data Visualization with Bokeh".

1. Dr John Snow

Le Dr John Snow (1813-1858) est un médecin britannique bien connu, largement connu comme une légende de l'histoire de la santé publique et un pionnier dans le développement de l'anesthésie. Certains disent même l'un des grands médecins de tous les temps.

En tant que principal défenseur de l'anesthésie et des soins hygiéniques, il a non seulement mené des expériences sur l'éther et le chloroforme, mais a également conçu le masque et sa méthode d'administration. Lors de la naissance des huitième et neuvième enfants de la reine Victoria en 1853 et 1857, sa propre administration de chloroforme rendit l'utilisation d'anesthésiques pendant l'accouchement généralement acceptée.

Mais, comme je vous le montrerai plus tard, toute sa vie n'a pas réussi. John Snow est reconnu comme l'un des fondateurs de l'épidémiologie moderne par une approche de données scientifique et assez moderne qui a identifié la source du choléra à Soho, Londres en 1854 (visualisation des données, espace). Certains le considèrent comme le fondateur de l'analyse, de la science des données en général et de nombreuses autres disciplines connexes), mais ce n'était pas toujours le cas. En fait, pendant longtemps, il a été simplement ignoré par la communauté scientifique et est aujourd'hui très souvent mythique.

Cette note non seulement redécouvre son «histoire de données», mais ré-analyse également les données qu'il a recueillies en 1854 pour recréer sa célèbre carte (également connue sous le nom de carte fantôme). ..

1.py


# Loading in the pandas module
# ... YOUR CODE FOR TASK 1 ...
import pandas as pd

# Reading in the data
deaths = pd.read_csv("datasets/deaths.csv")

# Print out the shape of the dataset
# ... YOUR CODE FOR TASK 1 ...
print(deaths.shape)

# Printing out the first 5 rows
# ... YOUR CODE FOR TASK 1 ...
print(deaths.head(5))

Le résultat est le suivant

(489, 3)
   Death  X coordinate  Y coordinate
0      1     51.513418     -0.137930
1      1     51.513418     -0.137930
2      1     51.513418     -0.137930
3      1     51.513361     -0.137883
4      1     51.513361     -0.137883

2. Le choléra envahit!

Avant que John Snow ne découvre le choléra, le choléra était un habitué des rues bondées et insalubres de Londres. Lors de la troisième épidémie de choléra, le choléra était l'un des thèmes les plus étudiés (plus de 700 études et essais ont été publiés rien qu'à Londres entre 1839 et 1856), et presque tous les auteurs , Je pensais que la cause de l'épidémie de choléra était la maladie infectieuse et le «mauvais air».

Les travaux pionniers de John Snow sur l'anesthésie et les gaz l'ont conduit à soupçonner un modèle myasma de la maladie. À l'origine, il a formulé et publié la théorie selon laquelle le choléra se propage par l'eau et la nourriture dans un essai «À propos du style de transmission du choléra» (avant l'épidémie de 1849). Cet article a reçu des critiques négatives dans les revues médicales du Lancet et de Londres.

Nous savons qu'il avait raison, mais le dilemme du Dr Snow était de savoir comment le prouver. Sa première étape a été de vérifier les données Notre ensemble de données contient 489 lignes de données dans 3 colonnes, mais pour faciliter le travail avec l'ensemble de données, nous Nous allons d'abord apporter quelques modifications.

2.py


# Summarizing the content of deaths
# ... YOUR CODE FOR TASK 2 ...
deaths.info()

# Define the new names of your columns
newcols = {
    'Death': 'death_count',
    'X coordinate': 'x_latitude', 
    'Y coordinate': 'y_longitude' 
    }

# Rename your columns
# ... YOUR CODE FOR TASK 2 ...
deaths.rename(newcols)

# Describe the dataset 
# ... YOUR CODE FOR TASK 2 ...
deaths.describe()

Le résultat est le suivant

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 489 entries, 0 to 488
Data columns (total 3 columns):
Death           489 non-null int64
X coordinate    489 non-null float64
Y coordinate    489 non-null float64
dtypes: float64(2), int64(1)
memory usage: 11.5 KB
Death	X coordinate	Y coordinate
count	489.0	489.000000	489.000000
mean	1.0	51.513398	-0.136403
std	0.0	0.000705	0.001503
min	1.0	51.511856	-0.140074
25%	1.0	51.512964	-0.137562
50%	1.0	51.513359	-0.136226
75%	1.0	51.513875	-0.135344
max	1.0	51.515834	-0.132933

3. John Snow, même s'il ne sait rien!

Son travail a été largement ignoré car il était impensable qu'un seul homme puisse nier la théorie du miasme et prouver que tout le monde avait tort. C'était. Des collègues médecins ont dit: "John Snow, même si je ne sais rien!"

Comme déjà mentionné, la première tentative de John Snow s'est terminée par un examen négatif de la théorie du «miasme». Cependant, un critique a fait une suggestion utile quant aux preuves qui seraient convaincantes. L'épidémie de choléra à Soho, Londres, en 1854, a non seulement donné à Snow une opportunité de sauvetage, mais aussi une opportunité de tester et d'améliorer sa théorie. Mais qu'en est-il de la preuve finale qu'il avait raison?

Maintenant que nous savons comment John Snow l'a fait, obtenons les bonnes données.

3.py


# Create `locations` by subsetting only Latitude and Longitude from the dataset 
locations = deaths[["x_latitude","y_longitude"]]

# Create `deaths_list` by transforming the DataFrame to list of lists 
deaths_list = locations.values.tolist()

# Check the length of the list
# ... YOUR CODE FOR TASK 3 ...
len(deaths_list)

Le résultat est le suivant

489

4. Carte fantôme

Malheureusement, sa carte d'origine n'est pas disponible (elle n'existe peut-être pas). Cependant, vous pouvez voir la célèbre carte qu'il a dessinée en 1855, environ un an plus tard. image.png Cette carte est également appelée carte fantôme car elle représente et visualise la mort. Nous avons également des données sur la façon dont John Snow l'a dessiné, alors utilisons la technologie moderne pour recréer sa carte.

4.py


# Plot the data on map (map location is provided) using folium and for loop for plotting all the points
import folium

map = folium.Map(location=[51.5132119,-0.13666], tiles='Stamen Toner', zoom_start=17)
for point in range(0, len(deaths)):
    folium.CircleMarker(deaths_list[point], radius=8, color='red', fill=True, fill_color='red', opacity = 0.4).add_to(map)
map

Le résultat sera affiché sur la carte comme indiqué ci-dessous. image.png folium est un module qui permet d'utiliser le dépliant en python.

5. C'est une pompe!

Ce que John Snow a vu après avoir marqué les morts sur la carte n'était pas un motif aléatoire (également vu dans une reproduction de la carte fantôme). La plupart des décès étaient concentrés aux coins de Broad Street (maintenant Broadwick Street) et Cambridge Street (maintenant Lexington Street). Un groupe de morts autour de l'intersection de ces rues était à l'origine de l'épidémie, mais que s'est-il passé là-bas? Oui, c'est une pompe à eau. John Snow à l'époque avait déjà la théorie que le choléra se propage par l'eau, donc pour vérifier cela, il a marqué l'emplacement d'une pompe à eau à proximité sur la carte. Et c'était la grande image. En combinant l'emplacement des décès liés au choléra avec l'emplacement des pompes à eau, Snow a pu montrer que la majorité était concentrée autour d'une pompe à eau publique particulière sur Broad Street à Soho. .. En fin de compte, il a obtenu les preuves dont il avait besoin. Nous faisons maintenant de même pour ajouter des emplacements de pompe à notre jeu sur la carte fantôme.

5.py


# Import the data
pumps = pd.read_csv("datasets/pumps.csv")
# Subset the DataFrame and select just ['X coordinate', 'Y coordinate'] columns
locations_pumps = pumps[["X coordinate","Y coordinate"]]

# Transform the DataFrame to list of lists in form of ['X coordinate', 'Y coordinate'] pairs
pumps_list = locations_pumps.values.tolist()

# Create a for loop and plot the data using folium (use previous map + add another layer)
map1 = map
for point in range(0, len(pumps_list)):
    folium.Marker(pumps_list[point], popup=pumps['Pump Name'][point]).add_to(map1)
map1

image.png

6. Même si je ne sais rien, John Snow! ≪ (encore)

Ainsi, John Snow a finalement eu la preuve qu'il y avait un lien entre la mort à la suite de l'épidémie de choléra et peut-être une pompe à eau publique contaminée. Mais il ne s'est pas arrêté là, il a enquêté plus loin. Il cherchait des anomalies (ce que nous appelons maintenant des «valeurs aberrantes dans les données») et a trouvé deux endroits où personne n'est réellement mort. Le premier était une brasserie juste à côté de Broad Street, où j'ai découvert qu'ils buvaient principalement de la bière (en d'autres termes, la pompe était la source, pas l'eau de la pompe locale). Il soutient sa théorie selon laquelle il y en a). Le deuxième bâtiment qui n'est pas mort était un atelier près de Poland Street, où il a appris que leur source d'eau n'était pas une pompe sur Broad Street (ce qui a réaffirmé sa théorie). Les emplacements des deux bâtiments sont également indiqués sur la carte à gauche. Les fonctionnaires n'ont pas fait confiance à lui et à sa théorie parce qu'il était convaincu, mais ils ont enlevé la poignée de la pompe le lendemain, le 8 septembre 1854. John Snow a ensuite publié dans son célèbre livre la collecte chronologique de données sur les décès avant et après le pic de l'épidémie, mais ici nous analysons et comparons les effets de la non-gestion.

image.png

6.py


# Import the data the right way
dates = pd.read_csv("datasets/dates.csv",parse_dates=['date'])
print(dates.head())
# Set the Date when handle was removed (8th of September 1854)
handle_removed = pd.to_datetime('1854/9/8')

# Create new column `day_name` in `dates` DataFrame with names of the day 
dates['day_name'] = dates.date.dt.weekday_name

# Create new column `handle` in `dates` DataFrame based on a Date the handle was removed 
dates['handle'] = dates.date > handle_removed

# Check the dataset and datatypes
dates.info()

# Create a comparison of how many cholera deaths and attacks there were before and after the handle was removed
dates.groupby(['handle']).sum()

Le résultat est le suivant

   order       date  attacks  deaths
0      1 1854-08-19        1       1
1      2 1854-08-20        1       0
2      3 1854-08-21        1       2
3      4 1854-08-22        0       0
4      5 1854-08-23        1       0
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 43 entries, 0 to 42
Data columns (total 6 columns):
order       43 non-null int64
date        43 non-null datetime64[ns]
attacks     43 non-null int64
deaths      43 non-null int64
day_name    43 non-null object
handle      43 non-null bool
dtypes: bool(1), datetime64[ns](1),int64(3),object(1)
memory usage: 1.8+ KB
order	attacks	deaths
handle			
False	231	528	500
True	715	43	116

7. Une image qui vaut mille mots

Lorsque j'ai retiré la poignée de la pompe, plus aucune eau infectée n'a été collectée. Plus tard, on a découvert que l'eau de source sous la pompe était contaminée par les eaux usées. Cette pratique a ensuite été évaluée comme un exemple précoce d'application de l'épidémiologie, de la médecine de la santé publique et de la science (théorie pathogène) à une crise réelle. En 1992, une réplique de la pompe a été érigée, avec une description et une plaque commémorative, près de l'emplacement d'origine sans poignées, près du mur derrière l'actuel John Snow Pub. Cet endroit est subtilement marqué par une pierre de jante en granit rose devant une petite plaque murale.

Vous pouvez apprendre beaucoup des données de John Snow. Vous pouvez regarder des nombres absolus, mais cette observation peut conduire à de fausses conclusions, alors utilisons Bokeh pour regarder d'autres données.

Grâce à John Snow, j'ai pu voir les données par ordre chronologique.

python:7.py
import bokeh
from bokeh.plotting import output_notebook, figure, show
output_notebook(bokeh.resources.INLINE)

# Set up figure
p = figure(plot_width=900, plot_height=450, x_axis_type='datetime', tools='lasso_select, box_zoom, save, reset, wheel_zoom',
          toolbar_location='above', x_axis_label='Date', y_axis_label='Number of Deaths/Attacks', 
          title='Number of Cholera Deaths/Attacks before and after 8th of September 1854 (removing the pump handle)')

# Plot on figure
p.line(dates['date'], dates['deaths'], color='red', alpha=1, line_width=3, legend='Cholera Deaths')
p.circle(dates['date'], dates['deaths'], color='black', nonselection_fill_alpha=0.2, nonselection_fill_color='grey')
p.line(dates['date'], dates['attacks'], color='black', alpha=1, line_width=2, legend='Cholera Attacks')

show(p)

Le résultat est le suivant. image.png

8. John Snow Myth et avons-nous appris quelque chose?

La visualisation interactive précédente montre clairement que le pic d'épidémies de choléra s'est produit avant le retrait de la poignée et avait déjà diminué (orbite descendante) avant le 8 septembre 1854.

Ce n'est tout simplement pas vrai, car comparer uniquement des nombres absolus peut conduire à la fausse conclusion que le retrait de la poignée de la pompe Broad Street a arrêté l'épidémie de choléra ( Cela a aidé, mais je n'ai pas pu l'arrêter).

Mais les gens aiment les histoires sur les héros et autres mythes (certainement plus que la science ou la science des données). Selon la mythologie de John Snow, il était un super-héros qui a ignoré leur égalité en deux jours en émettant l'hypothèse que le choléra était une maladie d'origine hydrique. Bien que personne ne l'ait écouté, il a courageusement continué à le cartographier et, grâce à ses découvertes, a persuadé les autorités locales de retirer la poignée de la pompe à eau infectée et a provoqué l'épidémie. arrêté. John Snow a sauvé la vie de nombreux Londoniens.

Si vous regardez de plus près ce qui se cache derrière cette histoire, vous constaterez que vous combattez la maladie avec des outils limités et que vous essayez d'obtenir la preuve que vous avez raison et que vous «savez quelque chose» sur le choléra. Vous pouvez également voir John Snow. Il ne faisait que ce qu'il pouvait en un temps limité et faisait toujours bouillir de l'eau avant de boire. image.png

en conclusion

J'ai créé une carte du choléra sur python par John Snow, médecin britannique et leader dans le développement de l'anesthésie et de l'hygiène médicale. Le choléra est maintenant connu pour être d'origine hydrique, mais il était encore inconnu à l'époque. Même dans de telles circonstances, John Snow, qui a construit et démontré une hypothèse, est incroyable.

Recommended Posts

Créer une carte du choléra pour John Snow
Étape par étape pour créer un Dockerfile
Commandes pour créer un nouveau projet django
Remarques sur la création d'outils de mise en forme de texte
Créer un environnement de développement pour l'apprentissage automatique
Un outil pour créer des liens symboliques sous Windows
Procédure de création d'un LineBot réalisé avec Python
Commandes pour créer un environnement python3 avec virtualenv
Procédure de création d'un environnement d'isolation Python (environnement venv)
Notes sur la création d'un environnement python par les débutants
[Python] 2 Créez une carte risque-rendement pour votre portefeuille d'actifs
Procédure de création d'un Line Bot sur AWS Lambda
4. Création d'un programme structuré
Création d'outils de grattage
Créer un chargeur de jeu de données
L'histoire de la création d'un canal VIP dans le chatwork en interne
Dockerfile pour créer un environnement de science des données basé sur pip3
(Pour les débutants) Essayez de créer une API Web simple avec Django