강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

합격님의 프로필 이미지
합격

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

[작업형1] 연습문제 섹션11 ~ 20

수업 질문

해결된 질문

작성

·

19

·

수정됨

0

안녕하세요

풀이 확인 후에, 제가 다르게 생각했던 부분들은 안되는지 한번 더 질문드립니다

 

  1. Section 16. 이상치, IQR

'views' 컬럼의 1사분위수, 3사분위수 그리고 IQR을 계산하시오.

이상치 조건에 맞는 데이터를 찾으시오. (이상치는 1사분위수 – (IQR 1.5)보다 작은 값과 3사분위수 + (IQR 1.5)보다 큰 값)

이상치 데이터의 'views' 컬럼 합을 정수로 구하시오.

q3 = df['views'].quantile(.75)

q1 = df['views'].quantile(.25)

IQR = q3 - q1

line1 = q1 - 1.5 * IQR

line2 = q3 + 1.5 * IQR

cond=(df['views']<line1) & (df['views']>line2)

print(int(df[cond]['views'].sum()))

이렇게 하면 안되나요?ㅠ

 

2.

Section 18. 데이터(행) 기준 평균값, 인덱싱

index '2001' 데이터(행)에서 평균보다 큰 값의 개수를 구하시오.

index '2003' 데이터(행)에서 평균보다 작은 값의 개수를 구하시오.

두 개수를 더하시오.

이 문제에서 풀이랑 같이

df=df.T

m1 = df[2001].mean() 이렇게 했는데,

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

/usr/local/lib/python3.12/dist-packages/pandas/core/indexes/range.py in get_loc(self, key)

412 try:

--> 413 return self._range.index(new_key)

414 except ValueError as err:

ValueError: 2001 is not in range

The above exception was the direct cause of the following exception:

KeyError Traceback (most recent call last)

2 frames

/usr/local/lib/python3.12/dist-packages/pandas/core/indexes/range.py in get_loc(self, key)

413 return self._range.index(new_key)

414 except ValueError as err:

--> 415 raise KeyError(key) from err

416 if isinstance(key, Hashable):

417 raise KeyError(key)

KeyError: 2001

이런 오류가 뜹니다

인덱스 2001 할때 그냥 df[2001]이렇게 하는거 맞나요?

 

  1. Section 19. 결측치(뒤에 값으로 대체), 그룹합

결측치를 바로 뒤에 있는 값으로 대체하시오. (바로 뒤의 값도 결측치일 경우, 뒤에 있는 데이터 중 가장 가까운 값으로 대체)

'city'와 'f2' 컬럼을 기준으로 그룹합을 계산하시오.

'views' 값이 세 번째로 큰 city 이름을 구하시오.

에서 df = df.bfill() 라고 적혀있던데 풀이에서

bfill 은 이전 값, ffill이 이후 값 아닌가요?

그리고,

# city와 f2기준 그룹합 계산

df = df.groupby(['city','f2']).sum(numeric_only=True).reset_index()

여기서 reset 다음에 한 이유가 무엇인가요?

감사합니다

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

1 네 안됩니다. 논리적으로 잘못되었습니다.

10 이하와 100보다 큰값이 있을리가 없습니다. 교집합이 없어요 이를 합집합으로 만들기 위해 또는 으로 처리해주셔야 합니다.

cond=(df['views']<line1) | (df['views']>line2)

2 데이터를 다시 불러와서 해보시겠어요? 체크해봐도 정상입니다.

3 b가 이후 값 맞습니다.
Forward Fill

Backward Fill 입니다.

  1. 이런건 직접 눈으로 보는 것이 좋을 것 같아요 를 넣고 빼고 비교해 주세요! 그룹이 풀리면서 테이블이 예쁘게 만들어집니다:)

    .reset_index()


    뒤에 소팅이 있어 리셋시켰습니다.

합격님의 프로필 이미지
합격

작성한 질문수

질문하기