반응형
import pandas as pd
# 작업형1 유형은 문제가 3개가 나온다.
# 배점은 각10점. 정답이 있으므로 정확히 맞춰야함.
#############################################
#문제1
#주어진 데이터셋(members.csv)의 'views' 컬럼 상위 10개 데이터를 상위 10번째 값으로 대체한 후 'age' 컬럼에서 80 이상인 데이터의 'views' 컬럼 평균값 구하기
df = pd.read_csv("data/members.csv")
# print(df.head(20))
#view가 많을수록 상위 이겠지?
df = df.sort_values(by='views',ascending=False)
# ascending=True (오름차순 정렬)
min_value = df['views'].head(10).min()
# print(df1['views'][:10].min())
# print(df1['views'].head(10).min())
# print(df1['views'].iloc[9])
# 이렇게 min()쓰거나, 컬럼에 대해서 iloc[n] 해줘야 숫자로 떨어진다.
# 이걸 생각못했던 나는 ㅠㅠ DataFrame 인지 뭔지 이상한 형태로 떨어져서 replace하기 너무 힘들다.
# df1.loc['인덱스']를 넣어야 하므로, 여기서는 loc 보다는 iloc 가 좋다.
df.iloc[:10,-1] = min_value
# print(df1.head(20))
cond = df['age']>=80
print(df[cond]['views'].mean())
# print(df[df['age']>=80]['views'].mean()) # 이렇게 해도 동일함
#############################################
#문제2
#주어진 데이터셋(members.csv)의 앞에서부터 순서대로 80% 데이터만 활용해 'f1'컬럼 결측치를 중앙값으로 채우기 전 후의 표준편차를 구하고, 두 표준편차 차이 계산하기. (선생님 설명: 단, 표본표준편차 기준, 두 표준편차 차이는 절대값으로 계산)
df = pd.read_csv("data/members.csv")
line = int(len(df)*0.8 )
# print(df.shape)
df = df[:line] # 이렇게해도 된다.
# df = df.iloc[:line] # 0~79 가 80개임.
# print(df.shape)
print(df.head())
# 표준편차 - 전
before = df['f1'].std()
print(before)
# 표준편차 - 후
med = df['f1'].median()
df['f1'] = df['f1'].fillna(med)
# 꼭 확인 해보기! 결측치 잘 채워졌는지.
#df.isnull().sum()
after = df['f1'].std()
print(after)
print(abs(before-after))
# print(abs(std1-std2))
#############################################
# 판다스는 표본 표준편차. 분모가 n-1
# 넘파이는 모 표준편차. 분모가 n
# 그래서 결과값이 다르게 나온다.
# 과거 빅분기 시험 사례를 보면, 판다스로 사용하면 된다. 잘 모르겠으면 판다스의 표준편차 사용!!
import numpy as np
# 17.01
# print(df['f1'].std())
# print(np.std(df['f1'],ddof=1))
# 16.9
# print(df['f1'].std(ddof=0))
# print(np.std(df['f1']))
#############################################
# 문제3
# 주어진 데이터셋의 'age' 컬럼의 이상치를 모두 더하시오!
# 평균으로부터 '표준편차*1.5' 를 벗어나는 영역을 이상치라고 판단.
df = pd.read_csv("data/members.csv")
# print(df['age'].describe())
avg = df['age'].mean()
std = df['age'].std()
cond1 = avg + std * 1.5 < df['age']
cond2 = df['age'] < avg - std * 1.5
ans = df[cond1 | cond2]['age'].sum()
print(ans)
반응형
'IT,SW,Data,Cloud,코딩 > Python' 카테고리의 다른 글
20230611 작업형1 모의문제1 (0) | 2023.06.11 |
---|---|
20230611 빅분기 3회 실기 기출 작업형2 (0) | 2023.06.11 |
20230611 빅분기 3회 기출 작업형1 (0) | 2023.06.11 |
20230611 빅분기 2회 기출 작업형 2 - 분류 (0) | 2023.06.11 |
20230610 파이썬공부 - 작업형2 (0) | 2023.06.10 |
20230610 파이썬 공부 - 작업형1 (0) | 2023.06.10 |
2023년6월9일 머신러닝-Regression (0) | 2023.06.10 |
2023년6월8일 파이썬공부 - 머신러닝 기초 프로세스 (0) | 2023.06.08 |
댓글