과제, 프로젝트

Library 개인 과제 Level 3.

Wat_zy 2025. 10. 23. 17:17
 

문제 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