문제 1
# 라이브러리 불러오기
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
# CSV 파일 불러오기
df = pd.read_csv('C:\Python_Code\practice\Python_personal_project\data_with_duplicates.csv')
# 중복 제거
drop_duplicates = df.drop_duplicates(subset=['production'])# <== production 열을 기준으로 중복값을 제거하세요.
# 결측값 제거
data_cleaned = drop_duplicates.dropna()# 결측값이 있는 행은 모두 제거하세요.
# 히스토그램 시각화
plt.figure(figsize=(6.5, 5))
sns.histplot(data=data_cleaned, x='production', bins=10, edgecolor='k', alpha=0.7)
# 히스토그램 생성
plt.title('Production Distribution')
plt.xlabel('Production')
plt.ylabel('Frequency')
plt.show()
# 분석가의 해석
# 빈도수는 1000~1020 사이에 2로 66.6%, 1230~1250 사이에 1로 33.3% 나타났다.
# 하지만 실제 데이터는 3개의 값만을 가지고 있고 전체 데이터셋에도 결측치가 존재하여 현재 데이터만으로 생산량의 특징을 결론짓는 것은 위험하다.
# 정확한 분석을 위해서는 더 많은 데이터 수집과 결측치 발생 원인 파악이 선행되어야 한다.

Y축은 Frequency로 데이터셋에 존재하지 않기에 sns.histplot()에 X축만을 사용하여 시각화 코드를 작성해야 한다.
원하는 열을 기준으로 중복값을 제거하기 위해서는 subset=[]을 활용해야 한다는 것을 다시 볼 수 있었다.
문제 2
# 라이브러리 불러오기
import matplotlib.pyplot as plt
import pandas as pd
# 3-1번에서 전처리 하였던 데이터 셋을 그대로 사용 할 것
print(data_cleaned)
# 구간(binning)과 라벨 설정
bins = [0, 0.015, 0.02, 0.025]
labels = ['Low(<= 0.015)', 'Medium (0.015-0.02)', 'High (> 0.02)']
defect_rate_category = pd.cut(data_cleaned['defect_rate'], bins=bins, labels=labels, include_lowest=True)
# 결함률 데이터를 범주화하여 새로운 컬럼 생성
data_cleaned['defect_rate_category'] = defect_rate_category
# 범주별 빈도수 계산
DRC = data_cleaned['defect_rate_category'].value_counts()
# 파이 차트 생성
plt.figure(figsize=(8, 6))
DRC.plot(kind='pie', colors = ['#66b3ff', '#99ff99', '#ffcc99'], autopct='%1.1f%%', startangle=140)
# 차트 제목 설정
plt.title("Defect Rate Categories")
plt.ylabel(None)
# 차트 표시
plt.show()
# 분석가의 해석
# 결함률은 Low(<=0.015), Medium(0.015-0.02), High(>0.02) 세 구간이 각각 33.3%로 동일하게 나타납니다.
# 이처럼 균등한 분포는 데이터 처리 과정에서 '분위수(quantile)'를 기준으로 데이터를 세 구간으로 나누었기 때문에 생긴 결과입니다.
# 따라서 이 결과만으로 '불량률 발생 빈도가 모든 구간에서 동일하다'고 단정짓기는 어렵습니다.

'과제, 프로젝트' 카테고리의 다른 글
| 기초 프로젝트(식품 오염 데이터 분석) (0) | 2025.11.18 |
|---|---|
| Library 개인 과제 Level 2. (0) | 2025.10.23 |
| Library 개인 과제 Level 1. (0) | 2025.09.26 |
| Python 개인 과제 Level 3. (0) | 2025.09.19 |
| Python 개인 과제 Level 2. (0) | 2025.09.19 |