작업형 1 예시문제 다양하게 풀어보기
자동차 데이터 셋에서
qsec 컬럼을 Min-Max Scale로 변환 후,
0.5보다 큰 값을 가지는 레코드(row) 수를 제출하시오.
문제 분석
문제는 qsec 컬럼
만 묻고 있다. (다른 컬럼 신경 쓸 필요 없음)
MinMax Scale
변환
조건 : 0.5보다 큰 값
# 데이터 불러오기 import pandas as pd # a = pd.read_csv('mtcars.csv') # 샘플 def load_data(): return pd.read_csv('mtcars.csv') data = load_data() data.head()
# MinMaxScaler 활용 from sklearn.preprocessing import MinMaxScaler data = load_data() scaler = MinMaxScaler() print('MinMax Scale 변환 전: \n',data['qsec'].head()) data['qsec'] = scaler.fit_transform(data[['qsec']]) print('MinMax Scale 변환 후: \n',data['qsec'].head())
# minmax_scale 활용 from sklearn.preprocessing import minmax_scale data = load_data() print('MinMax Scale 변환 전: \n',data['qsec'].head()) data['qsec'] = minmax_scale(data['qsec']) print('MinMax Scale 변환 후: \n',data['qsec'].head())
# min-max 함수 def my_minmax(data): data = (data - min(data)) / (max(data) - min(data)) return data print('MinMax Scale 변환 전: \n',data['qsec'].head()) data['qsec'] = my_minmax(data['qsec']) print('MinMax Scale 변환 후: \n',data['qsec'].head())
# True(1)를 더 함 cond = data['qsec'] > 0.5 print(sum(cond))
# 데이터 수를 구함 cond = data['qsec'] > 0.5 print(len(data[cond]))
# 데이터 수를 구함 cond = data['qsec'] > 0.5 print(data[cond]['qsec'].count())
# 결측치가 있는 데이터 생성 import numpy as np df = pd.DataFrame( { 'a':[1,2,3,4,5,6,7,8,9], 'b':[1.3,2.2,3.3,np.nan,5.8,6.9,np.nan,8.2,9.0] } ) df
# len(데이터프레임) len(df)
# len(시리즈) len(df['b'])
# 데이터프레임.count() df.count()
# 시리즈.count() df['b'].count()
- len: 행의 수
- count: NaN이 아닌 (컬럼별) 행의 수
- sum: True(1)값을 더했기 때문에 조건문에 따라 달라짐
df['b'] > 3
cond = df['b'] > 3 print(sum(cond))