문제 1
import pandas as pd
# 1) CSV 파일을 읽어 DataFrame 생성 (Data는 manu)
df = pd.read_csv('C:\Python_Code\practice\Python_personal_project\manufacturing_data_400.csv')
# 2) df의 상위 5개 행을 확인하고 출력
df.head()
# 3) df의 기본 정보(컬럼명, 데이터 타입, etc.) 출력
df.info()
# 4) df의 기술 통계(평균, 표준편차 등) 출력
df.describe()
# 5) df의 컬럼별 결측값 개수 출력
df.isnull().sum()
# 6) df의 중복 행이 몇 개인지 출력
df.duplicated().sum()
문제 1은 기본 문법들을 알고 있는지 확인하는 문제였다. # 6)에서 주어진 문제를 제대로 작성했다고 생각하였지만 np.int64(0)라는 결과값은 처음 보아 코드가 잘못 작동되고 있다고 생각이 들어 무엇이 잘못 되었는지 계속해서 생각했다.
하지만, np.int64(0)는 Pandas가 Numpy 배열 기반이라서 np.int64는 Numpy 배열 연산 결과로 나온 64비트 정수 타입이고, 결과값의 의미는 정수 0을 의미하기에 중복되는 값이 0이라는 것을 알려주는 것임을 알게 되었다.
문제 2
# 1) Defects 열에서 9999 -> NaN으로 대체
import numpy as np
df['Defects'] = df['Defects'].replace(9999, np.nan)
# 2) Temperature 열 결측치를 해당 열의 평균값으로 대체
df['Temperature'] = df['Temperature'].fillna(df['Temperature'].mean())
df['Temperature']으로 변수 적용을 하지 않고 df로 놔둔다면 df가 Temperature 열만 남은 "Series" 유형으로 바뀌기에 df['Temperature']으로 변수를 적용시켜 ['Temperature']에만 결측치를 해당 열의 평균값으로 대체할 수 있도록 코드를 작성해야 한다.
문제 3
# 라이브러리 불러오기
import pandas as pd
# CSV 파일 불러오기
df = pd.read_csv('C:\Python_Code\practice\manufacturing_data_400.csv')
# 1) Date 컬럼의 데이터 타입 확인
df['Date'].dtype
# 2) 문자열을 datetime 타입으로 변환
df['Date'] = pd.to_datetime(df['Date'])# 여기에 코드를 입력하세요 (힌트: pd.to_datetime 사용)
# 3) 변환 후 데이터 타입 확인
print("After conversion:", df['Date'].dtype)
# 4) 연도, 월, 일 파생 컬럼 생성
df['Year'] = df['Date'].dt.year# 여기에 코드를 입력하세요 (힌트: dt.year)
df['Month'] = df['Date'].dt.month# 여기에 코드를 입력하세요 (힌트: dt.month)
df['Day'] = df['Date'].dt.day# 여기에 코드를 입력하세요 (힌트: dt.day)
# 결과 일부 출력
print(df[['Date', 'Year', 'Month', 'Day']].head())
힌트를 통해서 이번 문제는 쉽게 해결할 수 있었다. 문제를 봤을 때 pd.to_datetime이 중요하다고 생각이 들었다. Date가 str으로 되어있다면 데이터 타입이 맞지 않아 연도, 월, 일 파생 컬럼 생성이 진행되지 않기에 날짜 변환을 위해서는 pd.to_datetime을 기억하고 있어야 하겠다고 생각했다.
문제 4
# 라이브러리 불러오기
import pandas as pd
import numpy as np
# CSV 파일 불러오기
df = pd.read_csv('C:\Python_Code\practice\manufacturing_data_400.csv')
# 1) 이상치 처리: Defects 값이 9999인 경우 결측치(NaN)로 변경
df['Defects'] = df['Defects'].replace(9999, np.nan)
# 2) 불량률 계산: 새로운 컬럼 DefectRate 생성
df['DefectRate'] = df['Defects'] / df['Production'] #힌트 불량률(DefectRate = Defects / Production)
# 3) 결과 일부 출력
print(df[['Line', 'Production', 'Defects', 'DefectRate']].head())
새로운 컬럼 생성이 기초 코드에서 사용하던 나눗셈을 활용하면 새로운 컬럼을 생성할 수 있는 것을 배우며 나머지 코드 작성은 원활하게 진행할 수 있었다. 결과의 일부를 출력할 때에는 []안에 보고자 하는 컬럼을 작성하면 df 중 일부를 확인할 수 있음을 볼 수 있었다.
'과제, 프로젝트' 카테고리의 다른 글
| Library 개인 과제 Level 3. (0) | 2025.10.23 |
|---|---|
| Library 개인 과제 Level 2. (0) | 2025.10.23 |
| Python 개인 과제 Level 3. (0) | 2025.09.19 |
| Python 개인 과제 Level 2. (0) | 2025.09.19 |
| Python 개인 과제 Level 1. (0) | 2025.09.19 |