728x90
곡선그래프로 이전의 수질 요소들의 년도별 추이를 시각화 - 확실한 정보 아님
scipy 사용
import numpy as np
from scipy.interpolate import make_interp_spline
x = df_temp3["년도"]
y = df_temp3[df_temp3.columns[2]]
model = make_interp_spline(x,y)
xs = np.linspace(min(y),max(y),100)
ys = model(xs)
plt.plot(xs,ys)
plt.title(f"년도별 수질정보-{df_temp3.columns[2]}")
ax.set_xlim(2013,2022)
plt.show()
곡선그래프를 만들고자 하였으나
이동평균을 값으로 만들어진 그래프라 정확성 떨어짐
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 3, figsize=(15, 10))
axs = axs.flatten()
# Set the window size for the moving average
window_size = 3
for i, ax in zip(df_temp3.columns[1:], axs):
# Calculate the moving average
moving_avg = df_temp3[i].rolling(window=window_size).mean()
ax.plot(df_temp3["년도"], moving_avg, label=f'{i} (Smoothed)', color="green")
ax.set_title(f"년도별 수질정보-{i}")
ax.legend()
ax.set_xlim(2013, 2022)
# plt.savefig("./img/년도별 수질정보_subplot_smoothed.png")
plt.show()
수질 평가 지수를 계산하여 그래프로 시각화 하기 위한 전처리
# 수질평가 지수 데이터 프레임
df_temp4 = pd.DataFrame()
df_temp4 = pd.concat([df["년도"],df["용존산소량(DO)"]*1000,df["화학적산소요구량(COD)"]*1000,df["클로로필(Chl-a)"],df["용존무기인(DIP)"],df["용존무기질소(DIN)"]],axis=1)
df_temp4["수질평가지수"] = 10*df_temp4["용존산소량(DO)"]+6*df_temp4["클로로필(Chl-a)"] +4*(df_temp4["용존무기질소(DIN)"]+df_temp4["용존무기인(DIP)"]/2)
df_temp4["수질평가지수2"] = calculate_trix(df_temp4["용존무기질소(DIN)"], df_temp4["화학적산소요구량(COD)"], df_temp4["용존산소량(DO)"], df_temp4["클로로필(Chl-a)"], df_temp4["용존무기인(DIP)"])
df_temp4 = df_temp4.groupby(["년도"],as_index=False).mean()
df_temp4
plt.figure(figsize=(10,5))
plt.plot(df_temp4["년도"],df_temp4["수질평가지수"])
plt.title("년도별 수질평가지수")
plt.show()
해석
- 수질은 여러 요인의 영향을 받는다. 이에 사용되는 지표중에는 TRIX와 WQI 지수 계산법이 있다.
실제 해양수질평가에서 사용되는 모델은 더 많은 변수와 복잡한 계산을 고려한다. 실제 사용 시에는 해당 국가 또는 조직에서 제시하는 규정 및 가이드라인을 따라야 한다.
- 데이터 중에서 값이 커지면 해양 수질이 오염되었다고 판단할 수 있는 지표는 아래와 같다
- 화학적 산소요구량 (COD): COD는 물에 존재하는 유기물질의 양을 나타냅니다. 높은 COD 값은 유기물의 과다한 존재를 나타낼 수 있습니다.
- 클로로필-a (Chl-a): Chl-a는 미세조류의 양을 나타내는 지표로, 높은 값은 수조류의 과도한 증가를 나타낼 수 있습니다.
- 총인 (TP): 총인은 물에 존재하는 인의 총량을 나타냅니다. 높은 총인 농도는 과도한 영양분이 물에 유입되어 수질을 악화시킬 수 있습니다.
- 부유물질 (SPM): 부유물질은 물 속에 떠다니는 물질로, 높은 SPM 값은 물의 탁도가 높아지고 수질이 나빠질 수 있음을 나타냅니다.
- 용존무기질소 (DIN): DIN은 물에 존재하는 질소 중에서 미생물에 의해 즉각적으로 이용 가능한 질소를 나타냅니다. 높은 DIN 값은 과도한 영양분 공급을 나타낼 수 있습니다.
- 주어진 데이터를 통해 2013-2022년 전국 해안의 수질 변화를 시각화한 결과 수질은 각 해당 년도의 여러 요인의 영향을 받아 불규칙적인 모습을 보이는 것으로 예상된다.
에너지원 , 지역 , 년도 별 전력 발전량 데이터 전처리
아래의 두 데이터를 통합하여 년도 별 지역별 전체 전력발전량 데이터와 재생에너지 발전량 데이터를 한 데이터 프레임에 넣는 전처리 과정 수행함.
df_temp = pd.DataFrame()
df_temp["연도"] = df2.iloc[2:,0]
df_temp["총발전량"] = df2.loc[2:,"총발전량" ]
df_temp["총발전량.1"] = df2.loc[2:,"총발전량.1"]
df_temp = df_temp.astype({"총발전량":"int","총발전량.1":"int"})
df_temp["최종총발전량"] = df_temp["총발전량"]+df_temp["총발전량.1"]
df_temp
df2.loc[2:,"총발전량.1"]
df2 = df2.replace('-' , 0)
728x90
'Project' 카테고리의 다른 글
[데이터분석 미니프로젝트] 재생에너지 발전량( Plotly , Streamlit 사용법) (2) | 2023.12.10 |
---|---|
[데이터분석 미니프로젝트] - 에너지원별 발전량 분석 / 시각화 (2) | 2023.12.09 |
[데이터분석 미니프로젝트] - 수질 정보 데이터 전처리 (4) | 2023.12.07 |
[데이터 분석] 국내 여행지역 관심도 분석(2) (0) | 2023.12.04 |
[데이터 분석] 국내 여행지역 관심도 분석(1) (5) | 2023.12.01 |