[PYTHON] Versuchen Sie, die Umweltkonzentration organischer Fluorverbindungen mit offenen Daten auf einer Karte darzustellen

Lassen Sie uns die Konzentration der organischen Fluorverbindung anhand der in ChemTHEATER aufgezeichneten Daten visualisieren

Was ist eine organische Fluorverbindung?

Es hat sowohl hydrophile als auch ölreiche Eigenschaften und wird in einer Vielzahl von Anwendungen wie wasserabweisenden Mitteln, Verdauungsmitteln, Ölmitteln und Ätzmitteln verwendet.

Eine leicht verständliche Erklärung der organischen Fluorverbindungen finden Sie in NHKs Close-up Modern HP. https://www.nhk.or.jp/gendai/articles/4280/index.html

Aufgrund seiner Schädlichkeit wird die Herstellung, Verwendung und der Import / Export von Perfluoroctansäure (PFOA) unter organischen Fluorverbindungen ab 2019 international verboten, und Perfluoroctansulfonat (PFOS) wird ab 2009 verboten. Herstellung, Verwendung und Import / Export sind eingeschränkt.

Standardwerte für organische Fluorverbindungen usw.

In den letzten Jahren sind beide Substanzen zu Problemen geworden, z. B. im Brunnenwasser nachgewiesen zu werden und in Flüsse zu fließen. Als Reaktion darauf fügte das Ministerium für Gesundheit, Arbeit und Soziales PFOS und PFOA zu den Zielvorgaben für das Wasserqualitätsmanagement hinzu (durchgesetzt am 1. April, 2. Jahr der Verordnung). Der Zielwert des Leitungswasserqualitätsstandards beträgt 50 ng / l, was dem Gesamtwert von PFOS und PFOA entspricht. https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/topics/bukyoku/kenkou/suido/kijun/index.html

Darüber hinaus führte das Umweltministerium eine landesweite Erhebung über PFOS und PFOA in der Wasserumwelt durch und "In Bezug auf die Durchsetzung von Umweltstandards usw. in Bezug auf den Schutz der menschlichen Gesundheit im Zusammenhang mit Wasserverschmutzung (Bekanntmachung)" (28. Mai, 2. Verordnungsjahr). (Anhang) setzen wir 50 ng / l als Gesamtwert von PFOS und PFOA als vorläufigen Zielwert für die Wasserumgebung. Ergebnisse der PFOA- und PFOA National Abundance Survey im ersten Jahr des Ordens https://www.env.go.jp/press/108091.html

Übrigens gab es in den vom Ministerium für Gesundheit, Arbeit und Soziales im 2. Juni von Oriwa veröffentlichten Umfrageergebnissen für Wasseraufbereitungsanlagen keinen Ort, an dem der vorläufige Zielwert für Leitungswasser, PFOS + PFOA 50 ng / l, überschritten wurde. https://www.mhlw.go.jp/content/10900000/000638290.pdf

Daten zur Umweltkonzentration von organischen Fluorverbindungen erhalten Sie von ChemTHEATER

ChemTHEATER veröffentlicht Überwachungsdaten zur Konzentration chemischer Substanzen in der Umwelt sowie Daten zu organischen Fluorverbindungen. Lassen Sie uns tatsächlich sehen, bei welcher Konzentration PFOS und PFOA nachgewiesen wurden und wie hoch oder niedrig der Gesamtwert mit dem Referenzwert verglichen wird.

PFCs_Search.png

  1. Wählen Sie "Probensuche" aus der Menüleiste von ChemTHEATER.
  2. Wählen Sie "Abiotic - Water" unter "Sample Type".
  3. Wählen Sie "Perfluoralkyl- und Polyfluoralkylsubstanzen" aus der "Chemicals Group".
  4. Wählen Sie "Asien" aus "Sammelgebiet" und setzen Sie das Sammelland auf "Japan".
  5. Klicken Sie auf die Schaltfläche "Suchen", um eine Liste der Proben auszugeben, die die Bedingungen erfüllen.
  6. "Proben exportieren" gibt die Probeninformationen aus und "Messdaten exportieren" gibt die Messwerte der chemischen Zielsubstanz als tabulatorgetrennte Textdatei aus.

Speichern Sie die exportierte Datei in einem beliebigen Verzeichnis und verwenden Sie sie zur Analyse.

Formatieren Sie die exportierten Daten

Laden Sie die gewünschte Bibliothek.

import pandas as pd

Lesen Sie Informationen zu Messwerten chemischer Substanzen.

data_file = "measureddata_20200521044415.tsv"
data = pd.read_csv(data_file, delimiter="\t")
data
MeasuredID ProjectID SampleID ScientificName ChemicalID ChemicalName ExperimentID MeasuredValue AlternativeData Unit Remarks RegisterDate UpdateDate
0 81245 PRA000095 SAA005816 Water CH0000362 PFBS EXA000001 0.00100 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
1 81246 PRA000095 SAA005817 Water CH0000362 PFBS EXA000001 0.00100 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
2 81247 PRA000095 SAA005818 Water CH0000362 PFBS EXA000001 0.00100 NaN μg/L NaN 2019/7/26 2019/7/26
3 81248 PRA000095 SAA005819 Water CH0000362 PFBS EXA000001 0.00100 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
4 81249 PRA000095 SAA005820 Water CH0000362 PFBS EXA000001 0.00100 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
... ... ... ... ... ... ... ... ... ... ... ... ... ...
3087 48619 PRA000060 SAA003645 Water CH0000793 THPFOS EXA000001 0.00030 NaN μg/L NaN 2018/2/9 2018/6/8
3088 48620 PRA000060 SAA003646 Water CH0000793 THPFOS EXA000001 0.00008 NaN μg/L NaN 2018/2/9 2018/6/8
3089 48621 PRA000060 SAA003647 Water CH0000793 THPFOS EXA000001 0.00159 NaN μg/L NaN 2018/2/9 2018/6/8
3090 48622 PRA000060 SAA003648 Water CH0000793 THPFOS EXA000001 0.00188 NaN μg/L NaN 2018/2/9 2018/6/8
3091 48623 PRA000060 SAA003649 Water CH0000793 THPFOS EXA000001 0.00070 NaN μg/L NaN 2018/2/9 2018/6/8

3092 rows × 13 columns

Dann werden die Beispielinformationen gelesen.

sample_file = "samples_20200521044410.tsv"
sample = pd.read_csv(sample_file, delimiter="\t")
sample
ProjectID SampleID SampleType TaxonomyID UniqCodeType UniqCode SampleName ScientificName CommonName CollectionYear ... FlowRate MeanPM10 MeanTotalSuspendedParticles HumidityStartEnd WindDirectionStartEnd WindSpeedMSStartEnd AmountOfCollectedAirStartEnd Remarks RegisterDate UpdateDate
0 PRA000048 SAA002867 ST014 NaN NaN NaN SW-St.1 Water Surface water 2004 ... NaN NaN NaN NaN NaN NaN NaN NaN 2017/10/25 2019/7/18
1 PRA000048 SAA002868 ST014 NaN NaN NaN SW-St.3 Water Surface water 2004 ... NaN NaN NaN NaN NaN NaN NaN NaN 2017/10/25 2019/7/18
2 PRA000048 SAA002869 ST014 NaN NaN NaN SW-St.4 Water Surface water 2004 ... NaN NaN NaN NaN NaN NaN NaN NaN 2017/10/25 2019/7/18
3 PRA000048 SAA002870 ST014 NaN NaN NaN SW-St.5 Water Surface water 2004 ... NaN NaN NaN NaN NaN NaN NaN NaN 2017/10/25 2019/7/18
4 PRA000048 SAA002871 ST014 NaN NaN NaN SW-St.7 Water Surface water 2004 ... NaN NaN NaN NaN NaN NaN NaN NaN 2017/10/25 2019/7/18
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
271 PRA000095 SAA005846 ST015 NaN NaN NaN W_1xyz24_20100821 Water River water 2010 ... NaN NaN NaN NaN NaN NaN NaN Around Kushiro Airport 2019/7/26 2019/7/26
272 PRA000095 SAA005847 ST015 NaN NaN NaN W_1xyz25_20100821 Water River water 2010 ... NaN NaN NaN NaN NaN NaN NaN Around Kushiro Airport 2019/7/26 2019/7/26
273 PRA000095 SAA005848 ST015 NaN NaN NaN W_1xyz26_20100821 Water River water 2010 ... NaN NaN NaN NaN NaN NaN NaN Downstream from the inflow of wastewater from ... 2019/7/26 2019/7/26
274 PRA000095 SAA005849 ST015 NaN ZETTAICODE_FY2011_W 113680.0 W_113680_20110702 Water River water 2011 ... NaN NaN NaN NaN NaN NaN NaN Upstream from the inflow of wastewater from Ch... 2019/7/26 2019/7/26
275 PRA000095 SAA005850 ST015 NaN ZETTAICODE_FY2011_W 118873.0 W_118873_20110702 Water River water 2011 ... NaN NaN NaN NaN NaN NaN NaN Downstream from the inflow of wastewater from ... 2019/7/26 2019/7/26

276 rows × 66 columns

pfos = data[data["ChemicalName"] == "PFOS"] #Extrahieren Sie nur Daten, deren chemischer Name PFOS ist
pfoa = data[data["ChemicalName"] == "PFOA"] #Extrahieren Sie nur Daten, deren chemischer Name PFOA ist

Wenn Sie den Inhalt jedes einzelnen überprüfen, sieht es wie folgt aus.

pfos
MeasuredID ProjectID SampleID ScientificName ChemicalID ChemicalName ExperimentID MeasuredValue AlternativeData Unit Remarks RegisterDate UpdateDate
269 35646 PRA000048 SAA002867 Water CH0000365 PFOS EXA000001 0.0073 NaN μg/L NaN 2017/10/25 2018/6/8
270 35647 PRA000048 SAA002868 Water CH0000365 PFOS EXA000001 0.0030 NaN μg/L NaN 2017/10/25 2018/6/8
271 35648 PRA000048 SAA002869 Water CH0000365 PFOS EXA000001 0.0034 NaN μg/L NaN 2017/10/25 2018/6/8
272 35649 PRA000048 SAA002870 Water CH0000365 PFOS EXA000001 0.0038 NaN μg/L NaN 2017/10/25 2018/6/8
273 35650 PRA000048 SAA002871 Water CH0000365 PFOS EXA000001 0.0020 NaN μg/L NaN 2017/10/25 2018/6/8
... ... ... ... ... ... ... ... ... ... ... ... ... ...
540 81380 PRA000095 SAA005846 Water CH0000365 PFOS EXA000001 0.0010 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
541 81381 PRA000095 SAA005847 Water CH0000365 PFOS EXA000001 0.0010 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
542 81382 PRA000095 SAA005848 Water CH0000365 PFOS EXA000001 0.0076 NaN μg/L NaN 2019/7/26 2019/7/26
543 81383 PRA000095 SAA005849 Water CH0000365 PFOS EXA000001 0.0028 NaN μg/L NaN 2019/7/26 2019/7/26
544 81384 PRA000095 SAA005850 Water CH0000365 PFOS EXA000001 0.0120 NaN μg/L NaN 2019/7/26 2019/7/26

276 rows × 13 columns

pfoa
MeasuredID ProjectID SampleID ScientificName ChemicalID ChemicalName ExperimentID MeasuredValue AlternativeData Unit Remarks RegisterDate UpdateDate
896 46410 PRA000060 SAA003568 Water CH0000372 PFOA EXA000001 0.00436 NaN μg/L NaN 2018/2/9 2018/6/8
897 46411 PRA000060 SAA003569 Water CH0000372 PFOA EXA000001 0.01166 NaN μg/L NaN 2018/2/9 2018/6/8
898 46412 PRA000060 SAA003570 Water CH0000372 PFOA EXA000001 0.01180 NaN μg/L NaN 2018/2/9 2018/6/8
899 46413 PRA000060 SAA003571 Water CH0000372 PFOA EXA000001 0.00430 NaN μg/L NaN 2018/2/9 2018/6/8
900 46414 PRA000060 SAA003572 Water CH0000372 PFOA EXA000001 0.00439 NaN μg/L NaN 2018/2/9 2018/6/8
... ... ... ... ... ... ... ... ... ... ... ... ... ...
1143 81135 PRA000095 SAA005846 Water CH0000372 PFOA EXA000001 0.00100 <1.00E-3 μg/L NaN 2019/7/26 2019/7/26
1144 81136 PRA000095 SAA005847 Water CH0000372 PFOA EXA000001 0.00200 NaN μg/L NaN 2019/7/26 2019/7/26
1145 81137 PRA000095 SAA005848 Water CH0000372 PFOA EXA000001 0.00140 tr(1.40E-3) μg/L NaN 2019/7/26 2019/7/26
1146 81138 PRA000095 SAA005849 Water CH0000372 PFOA EXA000001 0.03900 NaN μg/L NaN 2019/7/26 2019/7/26
1147 81139 PRA000095 SAA005850 Water CH0000372 PFOA EXA000001 0.02400 NaN μg/L NaN 2019/7/26 2019/7/26

252 rows × 13 columns

Aus den extrahierten Daten von PFOS und PFOA werden nur die Spalten von SampleID und BeautifulValue extrahiert, und die Spaltennamen der gemessenen Werte sind beide MeasuredValue. Ändern Sie sie daher in PFOS bzw. PFOA.

pfos = pfos[["SampleID","MeasuredValue"]].rename(columns={'MeasuredValue': 'PFOS'})
pfoa = pfoa[["SampleID","MeasuredValue"]].rename(columns={'MeasuredValue': 'PFOA'})

Führen Sie PFOS- und PFOA-Datenrahmen mit SampleID zusammen.

df = pd.merge(pfos, pfoa, on="SampleID").astype({"PFOS": float}, {"PFOA": float})
df
SampleID PFOS PFOA
0 SAA003568 0.00551 0.00436
1 SAA003569 0.01877 0.01166
2 SAA003570 0.01546 0.01180
3 SAA003571 0.00356 0.00430
4 SAA003572 0.00682 0.00439
... ... ... ...
247 SAA005846 0.00100 0.00100
248 SAA005847 0.00100 0.00200
249 SAA005848 0.00760 0.00140
250 SAA005849 0.00280 0.03900
251 SAA005850 0.01200 0.02400

252 rows × 3 columns

Was ich diesmal wissen möchte, ist der Gesamtwert der Konzentrationen von PFOS und PFOA. Erstellen Sie also eine Spalte mit dem Namen TOTAL und geben Sie dort den Gesamtwert ein.

df['TOTAL'] = df.sum(axis=1, numeric_only=True)
df
SampleID PFOS PFOA TOTAL
0 SAA003568 0.00551 0.00436 0.00987
1 SAA003569 0.01877 0.01166 0.03043
2 SAA003570 0.01546 0.01180 0.02726
3 SAA003571 0.00356 0.00430 0.00786
4 SAA003572 0.00682 0.00439 0.01121
... ... ... ... ...
247 SAA005846 0.00100 0.00100 0.00200
248 SAA005847 0.00100 0.00200 0.00300
249 SAA005848 0.00760 0.00140 0.00900
250 SAA005849 0.00280 0.03900 0.04180
251 SAA005850 0.01200 0.02400 0.03600

252 rows × 4 columns

Extrahieren Sie nur die Proben-ID und die Breiten- / Längengrade aus der Probentabelle.

sample = sample[["SampleID", "CollectionLongitudeFrom", "CollectionLatitudeFrom"]]
sample
SampleID CollectionLongitudeFrom CollectionLatitudeFrom
0 SAA002867 139.850000 35.599333
1 SAA002868 140.000000 35.583000
2 SAA002869 139.834500 35.515833
3 SAA002870 139.900333 35.532500
4 SAA002871 139.833667 35.433000
... ... ... ...
271 SAA005846 144.192783 43.062302
272 SAA005847 144.232365 43.041624
273 SAA005848 144.155650 42.997641
274 SAA005849 141.719167 42.765833
275 SAA005850 141.719167 42.782500

276 rows × 3 columns

Führen Sie dies mit der zuvor erstellten Dichtetabelle und der SampleID zusammen.

df = pd.merge(df, sample, on="SampleID")
df
SampleID PFOS PFOA TOTAL CollectionLongitudeFrom CollectionLatitudeFrom
0 SAA003568 0.00551 0.00436 0.00987 139.607158 35.453746
1 SAA003569 0.01877 0.01166 0.03043 139.677734 35.501549
2 SAA003570 0.01546 0.01180 0.02726 139.617230 35.528481
3 SAA003571 0.00356 0.00430 0.00786 139.498684 35.578287
4 SAA003572 0.00682 0.00439 0.01121 139.480358 35.536396
... ... ... ... ... ... ...
247 SAA005846 0.00100 0.00100 0.00200 144.192783 43.062302
248 SAA005847 0.00100 0.00200 0.00300 144.232365 43.041624
249 SAA005848 0.00760 0.00140 0.00900 144.155650 42.997641
250 SAA005849 0.00280 0.03900 0.04180 141.719167 42.765833
251 SAA005850 0.01200 0.02400 0.03600 141.719167 42.782500

252 rows × 6 columns

Speichern Sie die fertige Datei im CSV-Format.

df.to_csv("sum_pfcs.csv")

Laden Sie dies in QGIS.

Anzeigen von Dichtedaten auf einer Karte mit QGIS

Laden Sie QGIS wie folgt herunter. https://www.qgis.org/ja/site/ Erläuterungen zur Verwendung von QGIS finden Sie auf verschiedenen Websites.

Karteninformationen (GML-Formdatei) werden von der GIS-Homepage des Ministeriums für Land, Infrastruktur, Verkehr und Tourismus heruntergeladen. https://nlftp.mlit.go.jp/index.html

Dieses Mal werden wir vorerst den Verwaltungsbereich des 2. Politikbereichs aus dem Download nationaler numerischer Landinformationen verwenden. Wählen Sie "landesweite" Daten aus und laden Sie sie von der folgenden Seite herunter. Bitte wählen Sie das Jahr entsprechend Ihrem Zweck. スクリーンショット 2020-06-19 18.32.01.png

Starten Sie QGIS, klicken Sie im Datenquellen-Manager auf die Registerkarte Vektor, wählen Sie die oben heruntergeladene Formdatei für den nationalen Verwaltungsbereich aus und klicken Sie auf "Hinzufügen". スクリーンショット 2020-06-19 18.48.16.png

Die Karte von Japan wird wie unten gezeigt gelesen. Ändern Sie sie daher in Ihre Lieblingsfarbe. スクリーンショット 2020-06-19 18.49.46.png

Klicken Sie im Datenquellen-Manager erneut auf die Registerkarte Begrenzter Text und wählen Sie die im vorherigen Abschnitt erstellte CSV-Datei (sum_pfcs.csv) aus. Wählen Sie danach im X-Feld der Geometriedefinition den Längengrad (CollectionLongitudeFrom) und im Y-Feld den Breitengrad (CollectionLatitudeFrom) aus und klicken Sie auf "Hinzufügen". スクリーンショット 2020-06-19 18.50.37.png

Dann werden die Abtastpunkte auf der Karte aufgezeichnet. Als nächstes Farbcode nach Dichte. Doppelklicken Sie auf der Ebene auf "sum_pfcs", um die Ebeneneigenschaften zu öffnen. Wählen Sie die Registerkarte Symbolik. Wählen Sie für das Symbol "In Stufen unterteilt" und für die Spalte "GESAMT", da Sie durch die Konzentration von PFOS + PFOA einen Farbcode erstellen möchten. Ändern Sie das Symbol nach Ihren Wünschen. Wenn Sie die Anzahl der Klassifizierungen ändern, während Sie den Modus in gleichen Intervallen halten, werden die Klassifikationen in gleichen Intervallen automatisch ausgegeben. Hier wird die Anzahl der Klassifikationen auf 2 und der Wert einer Gruppe kleiner Zahlen auf 0-0,05 gesetzt. (In ChemTHEATER wird die Konzentration chemischer Substanzen in Wasser auf µg / L festgelegt. Wenn Sie also farblich kennzeichnen möchten, ob der Standardwert von 50 ng / L überschritten wird oder nicht, müssen Sie ihn auf 0,05 einstellen.) Standardmäßig: Da das Diagramm mit hoher Dichte in der unteren Ebene angezeigt wird, wählen Sie unter "Erweiterte Einstellungen" die Option "Symbolebene" aus, aktivieren Sie das Kontrollkästchen "Symbolebene aktivieren" und setzen Sie die Ebene der Gruppe mit hoher Dichte auf 1. Machen. スクリーンショット 2020-06-19 19.26.07.png

Infolgedessen werden die Punkte, an denen PFOS + PFOA 50 ng / l überschreitet, und die Punkte, an denen PFOS + PFOA nicht überschreitet, in verschiedenen Farben angezeigt. Wenn Sie diese Abbildung ausgeben möchten, wählen Sie "Importieren / Exportieren" aus "Projekt", wählen Sie "Karte in Bild exportieren" oder "Karte in PDF exportieren" und kopieren Sie sie in die Zwischenablage oder legen Sie sie in einem beliebigen Verzeichnis ab. Speichern als. スクリーンショット 2020-06-19 19.26.56.png

Wie wäre es mit? Hast du es getan? Auf diese Weise würden wir uns freuen, wenn Sie die in ChemTHEATER aufgezeichneten Daten nutzen könnten, indem Sie sie auf einer Karte ausdrücken. Zurück zu "Python mit ChemTHEATER lernen"

Recommended Posts

Versuchen Sie, die Umweltkonzentration organischer Fluorverbindungen mit offenen Daten auf einer Karte darzustellen
[Python] Zeichnen Sie Daten nach Präfektur auf einer Karte (Anzahl der Autos im ganzen Land)
Zeichnen auf Jupyter mit der Plot-Funktion von Pandas
[Python] Ich habe die Route des Taifuns mit Folium auf die Karte geschrieben
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Berechnen Sie die Wahrscheinlichkeit von Ausreißern auf den Box-Whiskern
Überprüfen Sie den Status der Daten mit pandas_profiling
Erstellen Sie eine GUI auf dem Terminal mit Flüchen
Scraping der Gewinndaten von Zahlen mit Docker
Ich möchte einen Screenshot der Site in Docker mit einer beliebigen Schriftart erstellen
Schneiden Sie einen Teil der Zeichenfolge mit einem Python-Slice aus
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Verwenden wir die offenen Daten von "Mamebus" in Python
Eine Überlegung zur Visualisierung des Anwendungsbereichs des Vorhersagemodells
Darstellung der Verteilung der Bakterienzusammensetzung aus Qiime2-Analysedaten in einem Box-Whisker-Diagramm
So zeichnen Sie einfach die Struktur eines neuronalen Netzwerks in Google Colaboratory mit "convnet-drawer"
Vermeiden Sie die Fallstricke bei der Verwendung eines Mac (für Linux-Benutzer?)
Hinweis zum Standardverhalten von collate_fn in PyTorch
Mit den Daten von COVID-19 wurde ein Netzwerkdiagramm erstellt.
Datenanalyse basierend auf den Wahlergebnissen der Gouverneurswahl von Tokio (2020)
[Schatzdaten] [Python] Führen Sie mit dem TD-Client eine Abfrage zu Schatzdaten aus.
Zeigen Sie die mit Rails gem'geocoder 'eingegebene Adresse in Google Map an
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Die Geschichte des Erstellens einer Datenbank mithilfe der Google Analytics-API
Einfach auf dem Mac! Darstellung der Einheitsschrittantwort mit Python
Machen wir eine Karte der neuen Korona-Infektionsstelle [FastAPI / PostGIS / deck.gl (React)] (Datenverarbeitung)
Festpunktbeobachtung bestimmter Daten im Web durch automatische Ausführung eines Webbrowsers auf dem Server (Ubuntu16.04) (2) -Web Scraping-
Ich habe versucht, PDF-Daten der medizinischen Online-Versorgung zu verwenden, die auf der Ausbreitung einer neuen Coronavirus-Infektion basieren