Il possède à la fois des propriétés hydrophiles et riches en huile et est utilisé dans une large gamme d'applications telles que les hydrofuges, les agents digestifs, les agents huileux et les agents de gravure.
Pour une explication facile à comprendre des composés organiques fluorés, voir Close-up Modern HP de NHK. https://www.nhk.or.jp/gendai/articles/4280/index.html
En raison de sa nocivité, la fabrication, l'utilisation et l'importation / exportation d'acide perfluorooctanoïque (PFOA) parmi les composés organiques fluorés seront interdites au niveau international à partir de 2019, et le perfluorooctanesulfonate (PFOS) sera interdit à partir de 2009. La fabrication, l'utilisation et l'importation / exportation sont limitées.
Au cours des dernières années, les deux substances sont devenues des problèmes tels que la détection dans l'eau de puits et l'écoulement dans les rivières. En réponse à cela, le ministère de la Santé, du Travail et du Bien-être a ajouté le SPFO et le PFOA aux éléments de fixation des objectifs de gestion de la qualité de l'eau (mis en vigueur le 1er avril, deuxième année de l'ordonnance). La valeur cible de la norme de qualité de l'eau du robinet est de 50 ng / L, soit la valeur totale du SPFO et de l'APFO. https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/topics/bukyoku/kenkou/suido/kijun/index.html
En outre, le Ministère de l'environnement a mené une enquête nationale sur l'abondance du SPFO et de l'APFO dans le milieu aquatique et << Concernant l'application des normes environnementales, etc. concernant la protection de la santé humaine liée à la pollution de l'eau (avis) >> (28 mai, 2e année de l'ordonnance) Dans (Pièce jointe), la valeur totale du SPFO et de l'APFO a été fixée à 50 ng / L comme valeur cible provisoire pour l'environnement aquatique. Résultats de l'enquête nationale sur l'abondance de l'APFO et de l'APFO au cours de la première année de l'Ordre https://www.env.go.jp/press/108091.html
Soit dit en passant, dans les résultats de l'enquête sur les usines de purification d'eau publiés par le ministère de la Santé, du Travail et du Bien-être social en juin 2ème année à Oriwa, il n'y avait aucun endroit où la valeur cible provisoire de l'eau du robinet, PFOS + PFOA 50 ng / L, a été dépassée. https://www.mhlw.go.jp/content/10900000/000638290.pdf
ChemTHEATER publie des données de surveillance sur la concentration de substances chimiques dans l'environnement, et comprend également des données sur les composés organiques fluorés. Voyons en fait à quelle concentration le SPFO et l'APFO ont été détectés et à quel point la valeur totale est élevée ou faible par rapport à la valeur de référence.
Enregistrez le fichier exporté dans n'importe quel répertoire et utilisez-le pour l'analyse.
Chargez la bibliothèque requise.
import pandas as pd
Lisez les informations sur les valeurs mesurées des substances chimiques.
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
Ensuite, les informations d'exemple sont lues.
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"] #Extraire uniquement les données dont le nom chimique est PFOS
pfoa = data[data["ChemicalName"] == "PFOA"] #Extraire uniquement les données dont le nom chimique est PFOA
Si vous vérifiez le contenu de chacun, cela ressemble à ce qui suit.
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
À partir des données extraites du PFOS et du PFOA, seules les colonnes de SampleID et BeautifulValue sont extraites, et les noms de colonne des valeurs mesurées sont tous deux MeasuredValue, alors changez-les respectivement en PFOS et PFOA.
pfos = pfos[["SampleID","MeasuredValue"]].rename(columns={'MeasuredValue': 'PFOS'})
pfoa = pfoa[["SampleID","MeasuredValue"]].rename(columns={'MeasuredValue': 'PFOA'})
Fusionner les trames de données PFOS et PFOA avec SampleID.
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
Ce que je veux savoir cette fois, c'est la valeur totale des concentrations de SPFO et d'APFO, alors créez une colonne appelée TOTAL et entrez la valeur totale là-bas.
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
Extrayez uniquement les données d'ID d'échantillon et de latitude / longitude de la table d'exemple.
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
Fusionnez-le avec la table de densité et SampleID précédemment créés.
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
Enregistrez le fichier terminé au format csv.
df.to_csv("sum_pfcs.csv")
Chargez ceci dans QGIS.
Téléchargez QGIS à partir de ce qui suit. https://www.qgis.org/ja/site/ Veuillez consulter divers sites pour obtenir des instructions sur l'utilisation de QGIS.
Les informations cartographiques (fichier de forme GML) sont téléchargées à partir de la page d'accueil SIG du ministère des Terres, des Infrastructures, des Transports et du Tourisme. https://nlftp.mlit.go.jp/index.html
Pour le moment, cette fois, nous utiliserons la zone administrative du domaine 2. politique à partir du téléchargement des informations numériques foncières nationales. Sélectionnez et téléchargez les données «nationales» à partir de la page ci-dessous. Veuillez choisir l'année en fonction de votre objectif.
Lancez QGIS, cliquez sur l'onglet Vector dans le gestionnaire de sources de données, sélectionnez le fichier de forme de la zone administrative nationale téléchargé ci-dessus et cliquez sur "Ajouter".
La carte du Japon sera lue comme indiqué ci-dessous, alors changez-la en votre couleur préférée.
Cliquez à nouveau sur l'onglet Texte délimité dans le Gestionnaire de sources de données et sélectionnez le fichier CSV (sum_pfcs.csv) créé dans la section précédente. Après cela, sélectionnez la longitude (CollectionLongitudeFrom) dans le champ X de la définition de la géométrie et la latitude (CollectionLatitudeFrom) dans le champ Y, puis cliquez sur «Ajouter».
Ensuite, les points d'échantillonnage sont tracés sur la carte. Ensuite, code couleur par densité. Double-cliquez sur "sum_pfcs" depuis le calque pour ouvrir les propriétés du calque. Sélectionnez l'onglet Symbolisme. Sélectionnez «Divisé en étapes» pour le symbole, et sélectionnez «TOTAL» pour la colonne parce que vous voulez coder en couleur par la concentration de PFOS + PFOA. Changez le symbole à votre convenance. Si vous modifiez le nombre de classifications tout en conservant le mode à intervalles égaux, les classifications à intervalles égaux sont automatiquement générées. Ici, le nombre de classifications est défini sur 2 et la valeur d'un groupe de petits nombres est définie sur 0-0,05. (Dans ChemTHEATER, la concentration de la substance chimique dans l'eau est unifiée à µg / L, donc si vous voulez coder par couleur si elle dépasse ou ne dépasse pas la valeur standard de 50 ng / L, vous devez la régler sur 0,05.) Par défaut, Étant donné que le tracé haute densité sera affiché dans la couche inférieure, sélectionnez «Niveau de symbole» dans «Paramètres avancés», cochez la case Activer le niveau de symbole et définissez la couche du groupe haute densité sur 1. Faire.
En conséquence, les points où le PFOS + PFOA dépasse 50 ng / L et les points où il ne dépasse pas sont affichés en différentes couleurs. Si vous voulez sortir cette figure, sélectionnez "Importer / Exporter" dans "Projet", sélectionnez "Exporter la carte vers l'image" ou "Exporter la carte vers PDF", et copiez-la dans le presse-papiers ou archivez-la dans n'importe quel répertoire. Enregistrer sous.
Que diriez-vous? L'AS-tu fait? De cette manière, nous vous serions reconnaissants si vous pouviez utiliser les données enregistrées dans ChemTHEATER en les exprimant sur une carte. Retour à «Apprendre Python avec ChemTHEATER»
Recommended Posts