강의

멘토링

커뮤니티

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

chomin0514님의 프로필 이미지
chomin0514

작성한 질문수

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

9회 기출유형 (작업형1)

9회 작업형1 문제 이중포문으로 해결해도 되나요?

작성

·

18

·

수정됨

0

9회부터 작업형1이 갑자기 어려워진 것 같습니다. 기존에 알고 있던 걸로 풀리지 않아, 알고리즘 문제 풀듯이 2중포문을 사용해서 문제를 풀었습니다. 코랩에서는 바로 결과가 나오나, 구름에서 코드를 돌려보니 1분안에 결과가 안나오던데, 실제 시험장에서는 이렇게 문제를 풀어도 되는지 여쭤보고 싶습니다. 작업형1 2번 문제와 3번문제를 둘 다 이중포문으로 풀었습니다.

2번 코드

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/9_1/crime.csv")
# print(df)
list(set(df['연도']))
# print(df.columns[2])
store = []
for i in range(0,len(df),2):
  rate = 0;
  name = ''
  for j in range(2,16):
    temp = df.iloc[i+1,j] / df.iloc[i,j]
    if temp > rate:
      rate = temp
      name = df.columns[j]
  store.append(name)
print(store)

cond_result = df['구분'] == '검거건수'
df_result = df[cond_result].reset_index(drop = True)
print(df_result)
sum = 0
for i in range(7):
  sum = sum + df_result.loc[i,store[i]]
print(sum) #7799

3번 코드

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/9_1/hr.csv")
print(df)
# print(df.shape)
# print(df.isnull().sum())
# print(df.head())
a = df['만족도'].mean()
# print(a)
df['만족도'] = df['만족도'].fillna(a)
df_group = df.groupby(['부서', '성과등급'])['근속연수'].mean().reset_index()
print(df_group)
cond1 = df['근속연수'].isnull()
df_null = df[cond1].drop(['사원번호', '연봉', '교육참가횟수', '만족도'], axis = 1).sort_values(['부서', '성과등급'])
print(df_null)

for i in range (len(df_null)):
  for j in range (len(df_group)):
    if (df_null.iloc[i,0] == df_group.iloc[j,0]) & (df_null.iloc[i,1] == df_group.iloc[j,1]):
      df_null.iloc[i,2] = int(df_group.iloc[j,2])
      break;
# df['근속연수']
print(df_null)
print(df)
df['근속연수'] = df['근속연수'].fillna(df_null['근속연수'])
df['연봉/근속연수'] = df['연봉'] / df['근속연수']
print(df.sort_values('연봉/근속연수',ascending = False)) #1
df['연봉/만족도'] = df['연봉'] / df['만족도']
print(df.sort_values('연봉/만족도',ascending = False)) #6
print(1+6)

 

답변 2

1

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

이중포문! 능력자시네요!! 코테💯💯💯

함수 모르면 이렇게 풀어야죠!!

다만 전체 시험 시간 관리가 필요하니 남겨뒀다가 다른문제 먼저 풀고 도전해 주세요

chomin0514님의 프로필 이미지
chomin0514
질문자

넵 감사합니다!! 무한루프가 아니라면 시간초과가 날일은 없겠죠..? 구름에서는 저 코드가 1분안에 동작을 안해서 불안하네요 선생님 ㅠㅠ

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

네 시험은 대부분 스몰데이터였어요

작업형2라면 1분 가까워지면 위험해요 시스템에서 다시 돌려서 생성된 csv로 채점하거든요

 

그런데 작업형1은 정답만 기입하면되고

1분 넘어가면 내 눈앞에서 멈추니 걱정하니 마세요!

헛 돌지 않도록 Break처리 하면 아무런 문제 없습니다

chomin0514님의 프로필 이미지
chomin0514
질문자

감사합니다!!!

0

안녕하세요, 인프런 AI 인턴입니다. chomin0514님.

작업형 문제에서 이중 포문을 사용하는 것은 태스크의 장단에 따라 달라질 수 있습니다. 이중 포문은 데이터 양이 비교적 적을 경우, 또는 규칙이 명확할 때는 간단한 논리로 원하는 결과를 구현할 수 있는 좋은 방법이 될 수 있습니다. 하지만, 작업형 테스트에서 데이터가 커질 경우, 이중 포문은 성능에 영향을 미칠 수 있습니다. 실제 시험에서는 데이터 크기에 따라서 이중 포문의 사용이 제한된 시간 안에 결과를 반환할 수 없을 가능성이 존재하기 때문에 주의하셔야 합니다.

  1. 작업형 1번 문제:

    • 이중 포문을 통해 각 열의 비율을 계산하고, 조건에 맞는 결과를 도출하였습니다.
    • 로컬 환경에서는 충분히 작동하지만, 구름 IDE 등 환경이나 데이터양에 따라 실행 속도에 차이가 있을 수 있습니다.
  2. 작업형 3번 문제:

    • 비어있는 ‘근속연수’ 값을 채우기 위해 그룹별 평균을 사용하고 있습니다.
    • 중첩 반복문을 활용하여 ‘부서’와 ‘성과등급’에 따라 NAN 값을 채워주고 있습니다.

시험 환경에서는 성능 최적화를 위해 pandas의 그룹 기능이나 벡터화된 연산을 사용하는 것이 선호될 수 있습니다. pandasapply, groupby, 또는 merge 함수를 활용하면 반복문을 사용하지 않더라도 비슷한 결과를 얻을 수 있습니다.

관련하여 더 나은 접근법과 방법론에 관해 기존에 질문된 사항이 있다면, 다음 게시물을 참고하실 수 있습니다:

작업형 문제는 종종 다양한 풀이 방법이 가능하며, 코드가 얼마나 효율적으로 실행되는지가 중요한 포인트가 될 수 있습니다. 코드를 최적화하여 실행 시간을 줄이는 연습을 지속해 보시길 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

chomin0514님의 프로필 이미지
chomin0514

작성한 질문수

질문하기