강의 영상 : https://youtu.be/Jh3rJaZlEg0
데이터 위치 "../input/titanic/train.csv"
문제 1
- 데이터셋(basic1.csv)의 'f5' 컬럼을 기준으로 상위 10개의 데이터를 구하고,
- 'f5'컬럼 10개 중 최소값으로 데이터를 대체한 후,
- 'age'컬럼에서 80 이상인 데이터의'f5 컬럼 평균값 구하기
📍최종 나의 코드
import pandas as pd
df = pd.read_csv('../input/bigdatacertificationkr/basic1.csv')
df.head()
# 'f5' 컬럼을 기준으로 상위 10개의 데이터를 구하기
print(df.sort_values('f5', ascending=False).head(10))
# 'age'컬럼에서 80 이상인 데이터의'f5 컬럼 평균값 구하기
df[df['age']>=80]['f5'].mean()
- 'f5'컬럼 10개 중 최소값으로 데이터를 대체한 후, => 상위 10개를, 10개 중의 최솟값으로 변경해라는 뜻
# 최소값 찾기 : 91.297791
min = df['f5'][:10].min()
min
df.iloc[:10,-1] = min
df.head(10)
문제 2
- 데이터셋(basic1.csv)의 앞에서 순서대로 70% 데이터만 활용해서,
- 'f1'컬럼 결측치를 중앙값으로 채우기 전후의 표준편차를 구하고
- 두 표준편차 차이 계산하기
📍최종 나의 코드
import pandas as pd
df = pd.read_csv('../input/bigdatacertificationkr/basic1.csv')
df.info()
# 앞에서 순서대로 70% 데이터만 활용
temp = df.iloc[:70]
# 결측치 확인
temp['f1'].isnull().sum()
# 'f1'컬럼 결측치를 중앙값으로 채우기 전후의 표준편차를 구하고 차이 구하기
before = temp['f1'].std()
a = temp['f1'].median()
temp.loc[temp['f1'].isnull(),'f1'] = a
after = temp['f1'].std()
print(before-after)
- 내가 원하는 값으로 변경하고 싶을 때, 원하는 조건에다가 fillna만 하면 값이 수정 안됨.
temp[temp['f1'].isnull()]['f1'].fillna(a) ❌
- 그냥 컬럼에다가 바로 fillna하는 건 가능
- temp['f1'].fillna(a) ⭕️
- 옳은 정답
- ① temp.loc[temp['f1'].isnull(),'f1'] = a ⭕️
- loc를 활용해서 원하는 조건의 행, 컬럼명 → 새로 넣고싶은 값 넣기
- ② data70.fillna(value=med) ⭕️
- fillna에서 (value=med) 옵션값 활용
- ① temp.loc[temp['f1'].isnull(),'f1'] = a ⭕️
📍해설
데이터 나누기 방법 1 : iloc 활용
data70 = df.iloc[:70]
data30 = df.iloc[70:]
데이터 나누기 방법 2 : np.split 활용
data70, data30 = np.split(df, [int(.7*len(df))])
데이터 나누기 방법 3 : 랜덤으로 샘플링해야할 때 → df.sample(frac=0.7) 활용
data70 = df.sample(frac = 0.7)
data70 = df.drop(data70.index)
'📝 자격증 > 빅데이터 분석기사' 카테고리의 다른 글
[빅분기 실기 준비] 데이터마님 1유형 유튜브 공범컨텐츠 동영상 데이터 (0) | 2024.07.06 |
---|---|
[빅분기 실기 준비] 데이터마님 1유형 유튜브 인기동영상 데이터 (0) | 2024.07.06 |
[빅분기 실기 준비] T1-1. 이상치를 찾아라 (IQR활용) - 작업형1 (0) | 2024.06.07 |
제8회 빅데이터분석기사-필기 합격 ❤️ (0) | 2024.05.12 |
[4과목] 빅데이터 결과 해석 필기+기출정리 (0) | 2024.04.11 |