강의

멘토링

로드맵

Inflearn brand logo image

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

hong8265님의 프로필 이미지
hong8265

작성한 질문수

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

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

기출 6회 [작업형 1 - 1번] 질문

해결된 질문

작성

·

34

0

df['출동시간'] = pd.to_datetime(df['출동시간']) df['도착시간'] = pd.to_datetime(df['도착시간']) 
df.info()  

df['걸린시간(분)'] = df['도착시간'] - df['출동시간'] 

df['걸린시간(분)'] = df['걸린시간(분)'].dt.total_seconds() / 60 
df.head(2)  

result = df.groupby('소방서')['걸린시간(분)'].mean() result
# 여기서 result 말고 df 에 넣으면 오류뜨는데 이유를 모르겠음. 

result 말고 df 넣으면 오류뜨는데 이 기준을 잘 모르겠습니다..!

답변 2

0

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

df로 작업한다고 해서 에러가 나진 않습니다.

다른 이유 때문에 에러가 난것 아닐까 싶은데

mean() 뒤에 result 단어가 있네요??

 

 

이렇게 작업해도 문제는 없습니다.

# 3. 소방서별 차이 평균
df = df.groupby('소방서')['diff'].mean()
df

0

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

질문해주신 내용을 보면, DataFrame df에서 새로운 컬럼을 생성하거나 변경하는 과정에서 발생하는 오류에 대한 문의로 보입니다. 이를 해결하기 위해 pandas 라이브러리의 동작 원리를 이해할 필요가 있습니다.

문제점에 대한 설명

  • DataFrame.groupy()는 DataFrame을 특정 열을 기준으로 그룹화하여 조작하는 객체를 반환하고, 그 결과는 Series 또는 DataFrame에 직접 할당할 수 없습니다.

  • result = df.groupby('소방서')['걸린시간(분)'].mean()은 각 소방서를 기준으로 그룹화 하여 ‘걸린시간(분)‘의 평균을 계산하는 데, 이는 새로운 Series로 저장됩니다.

해결책

  1. 그룹화된 결과 저장: result 변수에 할당된 Series를 DataFrame으로 변환한 뒤, 원본 DataFrame에 병합하십시오.
import pandas as pd

# 출동시간과 도착시간 데이터 변환
df['출동시간'] = pd.to_datetime(df['출동시간'])
df['도착시간'] = pd.to_datetime(df['도착시간'])

# 시간 차이를 계산하고 분 단위로 변환
df['걸린시간(분)'] = (df['도착시간'] - df['출동시간']).dt.total_seconds() / 60

# 소방서별 평균 시간 계산
result = df.groupby('소방서')['걸린시간(분)'].mean().reset_index()

# 원본 데이터프레임과 병합
df = df.merge(result, on='소방서', suffixes=('', '_avg'))

위 방법은 groupby()로 집계한 결과를 원본 DataFrame에 병합하는 방식으로, 수집된 통계치를 손쉽게 참조할 수 있습니다.

참고 가능한 유사 질문

  • 기출 1-35: 비슷한 데이터 조작 과정에서 발생하는 문제에 대한 논의가 있습니다.
  • 캐글 T1-34 문제 질문: 집계 및 변환 과정에서의 문제 해결에 대한 다른 질문입니다.

설명이 도움이 되었기를 바랍니다. 데이터 조작 방법을 여러 각도로 실험해보면서 이해를 늘려가는 것이 좋습니다.

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

hong8265님의 프로필 이미지
hong8265

작성한 질문수

질문하기