작성
·
162
0
one_col_df = titanic_df[['Name']]
print(one_col_df.head(3))
print("## type:",type(one_col_df))
해당 부분 이해되지 않습니다. 설명 부탁드리겠습니다.
답변 2
0
0
안녕하십니까,
어떤 부분이 이해가 안되는지 적어주시지 않아서 명확하진 않지만, 해당 내용이 DataFrame, Series, 2차원, 1차원 얘기를 하고 있으니까, 해당 부분에 대해서 말씀드리겠습니다. 다른 부분이라면 다시 질문을 올려 주십시요.
기본적으로 DataFrame은 2차원 데이터만 다룹니다. 즉 행x열, row x col 형태의 데이터를 담습니다.
그리고 DataFrame 의 [ ] 연산자는 내부에 컬럼명을 지정해주면 해당 컬럼명으로 데이터를 filtering 해줍니다. 그런데 이때 유의해야할 사항이 있습니다. DataFrame[ ] 내에 단일 컬럼명을 입력하느냐, 아니면 리스트로 여러개의 컬럼명을 입력해주느냐에 따라 1차원 데이터(Series)를 반환할 수도, 2차원 데이터(DataFrame)을 반환할 수 있습니다.
만일 DataFrame 인 df [ ] 연산자내부에 df[ ['col_1', 'col_2'] ] 와 같이 컬럼명을 리스트 [ ] 로 입력해 주면 col_1, col_2 컬럼명들로 구성된 2차원 데이터를 반환해 줍니다. 이때 반드시 컬럼명을 리스트[ ] 형태로 입력해 주어야 합니다. 즉 df[ 'col_1', 'col_2'] 와 같이 여러 컬럼명을 리스트로 감싸주지 않으면 오류가 발생합니다. [ ] 연산자 내부에 들어가는 값은 단일 컬럼명, 또는 리스트[ ] 로 여러 컬럼명을 지정해 주어야 합니다.
DataFrame 인 df [ ] 연산자내부에 df['col_1'] 과 같이 단일 컬럼명을 입력하면 이때는 1차원 데이터를 반환합니다. 1차원 데이터라는 것은 컬럼이 없습니다. 굳이 얘기하자면 로우(행)만 있습니다. 이걸 numpy로 얘기하자면 shape이 (100, ) 와 같이 100개의 원소로 되어 있는 데이터 세트를 얘기하는 것입니다. 컬럼이 있다는 것은 2차원이라는 것입니다. 컬럼이 명시적으로 하나만 있어도 2차원 입니다.
즉 df[ ['col_1']] 이라고 한다면 리스트[] 로 단일 컬럼명이 들어가 있지만 이는 명백히 컬럼이 있는 데이터 세트를 요구한 것이므로 2차원 데이터, 즉 DataFrame을 반환합니다. numpy로 얘기하자면 shape이 (100, 1) 과 같이 명확하게 100개의 로우와 1개의 컬럼을 의미하는 데이터 세트입니다.
감사합니다.