Celem pracy jest obserwacja potencjalnych zmian zawartości cząsteczek PM10 w powietrzu w ujęciu czasowym. W ramach pracy, wybrany został obszar Pomorza Zachodniego. Do dokładniejszej analizy przygotowane dane dla miast Szczecin, Szczecinek oraz Koszalin. Jako zakres czasowy wybrane zostały dwa lata, których wartości zostały poddane dalszej analizie: 2010, 2020. Wartości zostały zapisane w jednostce mikrogramów na metr sześcienny µg/m3
Do poprawnego przygotowania danych dla dalszej analizy, wykorzystane zostały biblioteki pandas oras numpy. Do wizualizacji danych wykorzystano bibliotekę PollutionPlotter. Dla formatowania ramek danych jako tabele, posłużono się pakietem IPython.
import pandas as pd
import numpy as np
from py_pollution.pollutionplotter import PollutionPlotter
from IPython.display import display
import matplotlib.pyplot as plt
Dane wejściowe zostały udostępnione przez Główny Inspektorat Ochrony Środowiska. Przed załadowaniem usunięto zbędne nagłówki oraz elementy opisowe zbiorów.
zp2010 = pd.read_csv("data/zachpom_2010_pm10.csv", sep=";")
zp2020 = pd.read_csv("data/zachpom_2020_pm10.csv", sep=";")
Na potrzebę dalszych analiz, zbiory danych zagregowano dla poszczególnych mięsiecy. Wyliczono także średnie roczne wartości PM10 wszystkich miast dla lat 2010 i 2020
zp2010['Month'] = pd.to_datetime(zp2010['Date'])
mean_month10 = zp2010.groupby(zp2010['Month'].dt.strftime('%B')).mean()
mean_month10['month_order'] = [4, 8, 12, 2, 1, 7, 6, 3, 5, 11, 10, 9]
mean_month10.reset_index(inplace=True)
mean_month10.set_index('month_order', inplace=True)
mean_month10.sort_index(inplace=True)
/var/folders/bn/0w4p7_2d1dz9438_cmgrn6600000gn/T/ipykernel_96443/2939582919.py:2: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function. mean_month10 = zp2010.groupby(zp2010['Month'].dt.strftime('%B')).mean()
zp2020['Month'] = pd.to_datetime(zp2020['Date'])
mean_month20 = zp2020.groupby(zp2020['Month'].dt.strftime('%B')).mean()
mean_month20['month_order'] = [4, 8, 12, 2, 1, 7, 6, 3, 5, 11, 10, 9]
mean_month20.reset_index(inplace=True)
mean_month20.set_index('month_order', inplace=True)
mean_month20.sort_index(inplace=True)
/var/folders/bn/0w4p7_2d1dz9438_cmgrn6600000gn/T/ipykernel_96443/2701777695.py:2: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function. mean_month20 = zp2020.groupby(zp2020['Month'].dt.strftime('%B')).mean()
city_names = ['Szczecin', 'Koszalin', 'Szczecinek']
mean_year10 = zp2010[city_names].mean().mean()
mean_year20 = zp2020[city_names].mean().mean()
display(zp2010.describe())
Koszalin | Szczecinek | Szczecin | |
---|---|---|---|
count | 365.000000 | 365.000000 | 361.000000 |
mean | 24.964932 | 34.755890 | 32.868421 |
std | 16.581392 | 22.185794 | 19.766838 |
min | 3.300000 | 6.600000 | 7.000000 |
25% | 14.700000 | 19.700000 | 19.000000 |
50% | 19.900000 | 28.500000 | 26.800000 |
75% | 30.500000 | 42.100000 | 39.900000 |
max | 151.100000 | 156.100000 | 148.600000 |
Sposród trzech wybranych miast Pomorza Zachodniego w 2010 roku, najwyższą średnią wartością PM10 cechował się Szczecinek. Wynosiła ona aż o niemal 10 µg/m3 więcej niż w Koszalinie, i o niecałe 2 µg/m3 więcej niż w Szczecinie. Szczecinek cechował się także największym odchyleniem standardowym i największą zaobserwowaną wartością maksymalną spośród pozostałych miast.
display(zp2020.describe())
Szczecinek | Szczecin | Koszalin | |
---|---|---|---|
count | 366.000000 | 366.000000 | 346.000000 |
mean | 18.818852 | 24.160109 | 15.279480 |
std | 10.544624 | 10.964333 | 7.207457 |
min | 4.200000 | 6.000000 | 2.700000 |
25% | 11.600000 | 16.950000 | 10.600000 |
50% | 15.900000 | 21.800000 | 13.700000 |
75% | 23.350000 | 29.150000 | 18.350000 |
max | 70.400000 | 77.300000 | 52.400000 |
W porównaniu z poprzednim rokiem, w 2020 średnie wartości PM10 zmalały w każdym z miast. Największy spadek zanotowano w Szczecinku, gdzie średnia wartość zanieczyszczeń spadła o ponad 16 µg/m3. Zauważalne są także mniejsze odchylenia standardowe w miastach Pomorza Zachodniego.
hist = PollutionPlotter()
config = {
"title": "Rozkład PM10 w Szczecinie w 2010",
"ylabel": "Obserwacje",
"xlabel": "PM10 (µg/m3)",
"avgline": None,
"legend": "upper right",
"xticks": 0
}
hist.set_style('seaborn-whitegrid')
hist.hist(zp2010['Szczecin'], 10, facecolor = '#2ab0ff', edgecolor='#169acf', linewidth=0.5)
hist.format(config)
hist.show()
No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
Większość obserwacji PM10 oscyluje w granicach 10-40 µg/m3. Rozkład wartości, na przykładzie Szczecina w 2010 roku, charakteryzuje się rozkładem prawoskośnym, dla którego przeważają jednostki o niskich PM10.
plot2010 = PollutionPlotter()
config.update({"title": "Średnie miesięczne wartości PM10 w 2010 roku",
"avgline": mean_year10,
"xticks": 45})
plot2010.set_style('seaborn-whitegrid')
plot2010.plot(
mean_month10.Month,
mean_month10.Koszalin,
label="Koszalin")
plot2010.plot(
mean_month10.Month,
mean_month10.Szczecinek,
label="Szczecinek")
plot2010.plot(
mean_month10.Month,
mean_month10.Szczecin,
label="Szczecin")
plot2010.format(config)
plot2010.show()
Dla wszystkich miast, najwyższe wartości PM10 przypadały w miesiącach zimowych. Od grudnia do marca, w każdym z miast średnie miesięczne przekraczały średnią roczną wartość PM10 dla tych miast. Szczecin posiada podobny rozkład wartości ze Szczecinkiem. Drugie z tych miast wyróżnia się jedynie w październiku oraz grudniu, posiadając znacznie wyższe wartości. Koszalin odstaje od tej pary z niższymi wartościami µg/m3. Dla tego miasta, średnie miesięczne wartości PM10 przekroczyły średnią roczną tylko trzy razy, co dla pozostałych miast wystąpiło dwukrotnie częściej.
plot2020 = PollutionPlotter()
config.update({
"title": "Średnie miesięczne wartości PM10 w 2020 roku",
"avgline": mean_year20,
"legend": "lower right"
})
plot2020.set_style('ggplot')
plot2020.plot(
mean_month20.Month,
mean_month20.Koszalin,
label="Koszalin")
plot2020.plot(
mean_month20.Month,
mean_month20.Szczecinek,
label="Szczecinek")
plot2020.plot(
mean_month20.Month,
mean_month20.Szczecin,
label="Szczecin")
plot2020.format(config)
plot2020.show()
Porównując wykres dla roku 2020 z poprzednim, dla 2010, zauważyć można podobny przebieg zmian wartości dla wszystkich miast, różniąc się jedynie ich wartościami. W tym roku, jedynie dla Szczecina wartości PM10 przewyższają średnią roczną wartość dla trzech miast. Zauważalna jest też, na pierwszy widok, chaotyczność linii przebiegu zmian. Najwyższe wartości dla każdego z miast odnotowano w marcu, sierpniu i grudniu.
plotKoszalin = PollutionPlotter()
config.update({
"title": "Średnie miesięczne wartości PM10 w Koszalinie",
"avgline": None,
"legend": "upper right"
})
plotKoszalin.set_style('bmh')
plotKoszalin.plot(
mean_month10.Month,
mean_month10.Koszalin,
label="2010")
plotKoszalin.plot(
mean_month20.Month,
mean_month20.Koszalin,
label="2020")
plotKoszalin.format(config)
plotKoszalin.show()
Wraz z upływem dekady, wartości PM10 w Koszalinie znacznie zmalały. Linia przebiegu zmian wartości w 2020 posiada także mniejsze odchylenia.
plotSzczecin = PollutionPlotter()
config.update({
"title": "Średnie miesięczne wartości PM10 w Szczecinie",
})
plotSzczecin.set_style("ggplot")
plotSzczecin.plot(
mean_month10.Month,
mean_month10.Szczecin,
label="2010")
plotSzczecin.plot(
mean_month20.Month,
mean_month20.Szczecin,
label="2020")
plotSzczecin.format(config)
plotSzczecin.show()
Podobnie jak dla Koszalina, różnice zmian wartości w 2020 są mniejsze niż w 2010. Występują jednak miesiące, dla których wartości PM10 osiągają większe wartości w 2020 niż w 2010 (czerwiec, sierpień i wrzesień).
plotSzczecinek = PollutionPlotter()
config.update({
"title": "Średnie miesięczne wartości PM10 w Szczecinku"
})
plotSzczecinek.set_style('seaborn-whitegrid')
plotSzczecinek.plot(
mean_month10.Month,
mean_month10.Szczecinek,
label="2010")
plotSzczecinek.plot(
mean_month20.Month,
mean_month20.Szczecinek,
label="2020")
plotSzczecinek.format(config)
plotSzczecinek.show()
Tak samo jak dla pozostałych miast, rok 2020 przyniósł znaczne obniżenie obserwowanych wartości PM10 w Szczecinku, porównując je z rokiem 2010. Jedynym wyjątkiem jest sierpień, gdzie w obydwu latach PM10 wyniosły podobną wartość µg/m3.
xlabel = ['Koszalin', 'Szczecin', 'Szczecinek']
mean_city2010 = [zp2010.Koszalin.mean(),
zp2010.Szczecin.mean(),
zp2010.Szczecinek.mean()]
mean_city2020 = [zp2020.Koszalin.mean(),
zp2020.Szczecin.mean(),
zp2020.Szczecinek.mean()]
x_axis = np.arange(len(xlabel))
W celu zestawienia zmian PM10 w skali rocznej, konieczne jest obliczenie średnich rocznych wartości dla każdych miast w obydwu latach.
meanplots = PollutionPlotter()
config.update({
"title": "Średnie roczne wartości PM10",
"ylabel": "PM10 (µg/m3)",
"xlabel": "",
"xticks": 0
})
meanplots.set_style('ggplot')
meanplots.bar(
x_axis - 0.2,
mean_city2010,
0.4,
x_axis,
xlabel,
"2010")
meanplots.bar(
x_axis + 0.2,
mean_city2020,
0.4,
x_axis,
xlabel,
"2020")
meanplots.format(config)
meanplots.show()
Największą różnicę, spośród trzech badanych miast, w zaobserwowanych wartościach PM10 odnotowano dla Szczecinka, gdzie wynosiła ona ponad 15 µg/m3. Po upływie 10 lat, Szczecin posiadał najwyższe obserwowane wartości PM10. Były one jednak nadal niższe od poziomu PM10 zanotowanego w Koszalinie w 2010, które były w tamtym roku najniższe w porównaniu z pozostałymi miastami. Koszalin nadal pozostał miastem z najniższymi wartościami PM10.
Wyniki przeprowadzonych analiz pokazują złożoność problemu zanieczyszczeń powietrza. Szczecinek, najmniejsze miasto spośród pozostałych pod względem populacji, odnotowało najwyższe wartości PM10 w 2010 roku. Zjawisko wysokiego poziomu zanieszczyneń powietrza, który najczęściej jest przypisywany gęsto zaludnionym miastom, wynikało z funkcjonowania zakładów przemysłowych na terenie miasta. Koszalin, drugie największe miasto województwa zachodniopomorskiego, posiadało znacznie mniejsze wyniki od Szczecina, stolicy Pomorza Zachodniego. Nadmorskie położenia miasta pozytywnie wpłynęło na obniżenie wartości PM10 w powietrzu.
Mimo tych różnic, każde z miast po upływie 10 lat zanotowało obniżenie obserwowanej zawartości PM10 w powietrzu. Jest to pozytywny sygnał, świadczący o skuteczności podejmowanych w ostatnich latach programów ochrony środowiska oraz ograniczenia emisji zanieczyszczeń do powietrza.