Kaggle_Survey03-A: value_counts error size 0 [pandas]
Kaggle_Survey03 - Treemap 시각화 [plotly]에서 넘어왔다.
오류 식별
1 | df21_Ch = df21_ChJp[df21_ChJp.Q3.isin(["China"])] |
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-5-89d86f0a4d0b> in <module>
11 ## Q7(Program_Language): 칼럼번호 8~20 - others
12 df21_Ch_PL = pd.DataFrame()
---> 13 df21_Ch_PL['Program_Language'] = [df21_Ch[col][1:].value_counts() .index[0] for col in df21_Ch.columns[7:20]]
14 df21_Ch_PL['counts'] = [df21_Ch[col][1:].value_counts() .values[0] for col in df21_Ch.columns[7:20]]
15
<ipython-input-5-89d86f0a4d0b> in <listcomp>(.0)
11 ## Q7(Program_Language): 칼럼번호 8~20 - others
12 df21_Ch_PL = pd.DataFrame()
---> 13 df21_Ch_PL['Program_Language'] = [df21_Ch[col][1:].value_counts() .index[0] for col in df21_Ch.columns[7:20]]
14 df21_Ch_PL['counts'] = [df21_Ch[col][1:].value_counts() .values[0] for col in df21_Ch.columns[7:20]]
15
E:\Sadness\anaconda3\lib\site-packages\pandas\core\indexes\base.py in __getitem__(self, key)
4295 if is_scalar(key):
4296 key = com.cast_scalar_indexer(key, warn_float=True)
-> 4297 return getitem(key)
4298
4299 if isinstance(key, slice):
IndexError: index 0 is out of bounds for axis 0 with size 0
결측 column 식별 및 제거
*IndexError: index 0 is out of bounds for axis 0 with size 0
오류가 식별됐다.
아마 China, Program_Language의 특정 응답이 없어서 발생한거같다.
N/A 개수를 식별해보자
1 | print("df21_Ch\'s rows_num:",len(df21_Ch)) |
df21_Ch's rows_num: 814
Q7_Part_1 76
Q7_Part_2 729
Q7_Part_3 599
Q7_Part_4 588
Q7_Part_5 546
Q7_Part_6 602
Q7_Part_7 728
Q7_Part_8 810
Q7_Part_9 809
Q7_Part_10 783
Q7_Part_11 645
Q7_Part_12 814
Q7_OTHER 787
dtype: int64
Q7_Part_12 이 녀석이 문제였다.
- 행 개수는 814개고 Part_12의 N/A 개수도 814개이다.
위 식별 과정의 시행 횟수가 많아진다면 if 문을 사용한 define을 사용해도 되겠지만 일단은 수동으로 제거하자.
1 | df21_Ch = df21_ChJp[df21_ChJp.Q3.isin(["China"])] |
Kaggle_Survey03-A: value_counts error size 0 [pandas]
https://hangack.github.io/2021/12/06/Codding/Python/kaggle_survey/kaggle-survey03-a/