728x90
#드라이브 마운틴
from google.colab import drive
drive.mount('/content/drive')
# 라이브러리 실행
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
import koreanize_matplotlib
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
from sklearn.linear_model import LinearRegression, LogisticRegression
#데이터셋 불러오기
prod_df = pd.read_csv('/content/22_생산정보.csv', encoding='cp949')
grow_df = pd.read_csv('/content/22_생육정보.csv', encoding='cp949')
eguse_df = pd.read_csv('/content/22_에너지사용정보.csv', encoding='cp949')
env_df = pd.read_csv('/content/22_환경정보.csv', encoding='cp949')
#생산정보 결측치 확인 및 제거
prod_df.isnull().sum()
prod_df[['measDate','farm_cde','itemGrade']].isnull().sum()
prod_df[['outtrn']].fillna(0)
None
#생육정보 결측치 확인 및 제거
grow_df.isnull().sum()
grow_df[['measDate','farm_cde','itemCode']].isnull().sum()
grow_df[['measDate','farm_cde','itemCode']].dropna()
None
eguse_df.isnull().sum()#에너지사용정보 결측치 없음
env_df.dropna()#환경정보 결측치 확인 및 제거
None
# 그래프 스타일 설정
sns.set(style="whitegrid", font="NanumGothic")
# 박스플롯 그리기
plt.figure(figsize=(6, 6))
sns.boxplot(x="farm_cde", y=prod_df["outtrn"],hue="itemGrade", data=prod_df)
plt.title("수확량 (outtrn) 이상치")
plt.ylabel("수확량 (kg)")
# 그래프 출력
plt.show()
None
# 날짜 컬럼을 datetime 형식으로 변환
env_df["measDate"] = pd.to_datetime(env_df["measDate"])
# 날짜 리스트 정의
date_list = [
"2022-10-04", "2022-10-10", "2022-10-17", "2022-10-24", "2022-10-31",
"2022-11-07", "2022-11-14", "2022-11-21", "2022-11-28", "2022-12-05", "2022-12-12"
]
# 주어진 날짜로 시작하는 데이터만 필터링 (초 단위 유지 X)
filtered_df = env_df[env_df["measDate"].dt.strftime("%Y-%m-%d").isin(date_list)]
# HI 값 필터링
filtered_df = filtered_df[filtered_df["fatrCode"] == "IR"]
# 초 단위 제거 (날짜만 남기기)
filtered_df["measDate"] = filtered_df["measDate"].dt.strftime("%Y-%m-%d")
# senVal을 float로 변환 (문자열이 포함되어 있으면 NaN 처리)
filtered_df["senVal"] = pd.to_numeric(filtered_df["senVal"], errors="coerce")
# NaN 값 제거
filtered_df = filtered_df.dropna(subset=["senVal"])
# 날짜별 그룹화하여 평균 계산
grouped_df = filtered_df.groupby(["measDate", "fatrCode"], as_index=False)["senVal"].mean()
# 결과 출력
grouped_df