인프런 커뮤니티 질문&답변
섹션1-10 질문
해결된 질문
작성
·
19
0
1. Section 8. 시계열 데이터, 필터링, 데이터 개수 문제
df['subscribed']=pd.to_datetime(df['subscribed'])
df['y_m']=df['subscribed'].dt.to_period("m")
# print(df.head())
print(df.info())
cond1=df['y_m']=='2024-02'
cond2=df['f3']='gold'
df=df[cond1&cond2]
저는 이렇게 페리어드로 코딩 했는데 오류가 납니다ㅠ
/tmp/ipython-input-3254161643.py:7: FutureWarning: 'm' is deprecated and will be removed in a future version, please use 'M' instead.
df['y_m']=df['subscribed'].dt.to_period("m")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/usr/local/lib/python3.12/dist-packages/pandas/core/ops/array_ops.py in na_logical_op(x, y, op)
361 # (xint or xbool) and (yint or bool)
--> 362 result = op(x, y)
363 except TypeError:
TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
6 frames
ops.pyx in pandas._libs.ops.scalar_binop()
ValueError: Buffer dtype mismatch, expected 'Python object' but got 'bool'
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
/usr/local/lib/python3.12/dist-packages/pandas/core/ops/array_ops.py in na_logical_op(x, y, op)
383 ) as err:
384 typ = type(y).__name__
--> 385 raise TypeError(
386 f"Cannot perform '{op.__name__}' with a dtyped [{x.dtype}] array "
387 f"and scalar of type [{typ}]"
TypeError: Cannot perform 'and_' with a dtyped [bool] array and scalar of type [bool]
이렇게 오류가 납니다
2. 결측치가 삭제된 데이터를 사용하여 지역별(city) 평균을 계산하시오.
이문제에서
df=df.groupby('city').mean()이렇게 하면 오류가 나던데ㅠ
df = df.groupby(['city']).mean(numeric_only=True) 이렇게 뒤에 numeric 까지 반드시 해야하나요?
답변 2
0
1
질문 전에 풀이와 비교 한번 부탁드리겠습니다.
오타입니다. =이 아닌 ==
df['f3']='gold'
2
없어도 되는 데이터가 있고 필요한 데이터가 있어요
그때 그때 달리가져가면 혼란이 올 수 있으니 사용하는 것으로 연습하시죠!
숫자와 문자가 함께 있는 데이터라면 필요합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 합격님.
질문주신 두 가지 문제에 대해서 설명드리겠습니다.
1. df[cond1&cond2] 구문에서 발생하는 오류
cond2를 정의하실 때 = 연산자를 사용하셨지만, 동등 비교를 위해서는 == 연산자를 사용해야 합니다. cond2 = df['f3'] == 'gold'로 수정하셔야 합니다. 또한, & 연산자를 사용해서 두 조건을 결합할 경우, 괄호를 사용하여 각각의 조건을 감싸주는 것이 중요합니다. 수정된 코드는 다음과 같습니다:
cond1 = df['y_m'] == '2024-02'
cond2 = df['f3'] == 'gold'
df = df[cond1 & cond2]
또한, ’m’을 사용해 period를 설정하는 코드에서 Warning이 발생하고 있습니다. 'm' 대신 'M'을 사용하도록 변경하세요.
2. 지역별(city) 평균 계산 시 발생하는 오류
groupby와 함께 mean() 함수를 사용할 때, numeric_only=True를 추가하는 것은 Python의 최신 버전에서의 변경사항으로 인한 것입니다. mean() 함수가 수치형 데이터만 계산할 수 있도록 명시적으로 알려주는 옵션입니다. 따라서 df = df.groupby('city').mean(numeric_only=True) 와 같이 해주시면 오류를 피할 수 있습니다.
추가 참고 자료
관련된 비슷한 문제를 다룬 질문과 답변도 참고하시기 바랍니다:
작업형1 모의문제3 - 9번 문제 (답글에 대한 답이 없어 다시 질문 드립니다.): 이 질문에서는
pandas의 데이터를 불러오고 변환하는 과정에서 발생할 수 있는 에러와 그 해결 방법을 다루고 있습니다.3회 기출 작업형 1. 문제 2번: pandas 라이브러리에서 인덱스를 설정하고 데이터를 필터링하는 과정에서 주의할 점에 대해 다루고 있습니다.
이 답변이 도움이 되셨기를 바랍니다. 문제가 해결되지 않거나 이해가 어려운 부분이 있다면, 추가적으로 질문을 남겨 주세요. 지식공유자님께서 곧 답변해주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





