판다스 데이터프레임은 리스트, 딕셔너리, 넘파이 등 다양한 데이터에서 만들어질 수도 있고, 그 반대로 변환하는 것도 가능하다.
특히 사이킷런에서는 데이터프레임을 인자로 입력받을 수는 있지만 넘파이의 ndarray를 입력 인자로 사용하는 경우가 많기 때문에 상호 간의 변환 방법을 잘 익혀놓는 게 좋다.
1차원 리스트 넘파이를 판다스 데이터프레임으로 변환
먼저 데이터프레임은 행과 열이 있는 2차원 데이터기 때문에, 1차원 혹은 2차원의 데이터들만 변환이 가능하다.
1차원 데이터를 (A)라는 1개의 칼럼을 가진 데이터프레임으로 변환해보자.
a,b,c라는 3개의 값을 가진 list1이라는 1차원 리스트를 생성한 후,
np.array를 이용해서 list1을 array1이라는 1차원 배열로 변경해주었다.
이제 이 리스트와 배열을 이용해 데이터프레임 생성을 해보자.
아주 간단하게 pd.DataFrame(데이터셋명, columns=칼럼이름)으로 지정해줄 수 있다.
2차원 리스트 넘파이를 판다스 데이터프레임으로 변환
1차원 형태의 데이터를 기반으로 할 때는 칼럼명이 한 개만 필요했다.
2차원부터는 열의 갯수만큼의 칼럼명이 필요한데,
예를 들어서 2행 3열 형태의 리스트와 넘파이 배열을 판다스 데이터프레임으로 변환하기 위해서는 3개의 칼럼명이 필요하다.
아래와 같이 이름, 나이, 성별에 관한 값들을 가지고 있는 리스트를 배열로 변환하고,
이를 판다스데이터프레임으로 변환하면서 칼럼명을 지정해줌으로써 어떤 정보를 가지고 있는지 나타낼 수 있다.
딕셔너리 판다스 데이터프레임 변환
딕셔너리에는 키(Key)와 값(Value)이 있는데,
이를 판다스 데이터프레임으로 변환할 때는 일반적으로 키는 칼럼명, 값은 데이터로 변경된다.
따라서 키는 문자열, 값은 리스트나 배열 형태로 구성된 딕셔너리를 구성하는 것이 좋다.
예를 들어 딕셔너리를
dic1 = {'이름':['Bob','Sally'], '나이':[26,28], '성별' : ['M','F']}
으로 구성하고 변환한다면, 간단하게 위에서 사용한 예시와 똑같은 데이터프레임으로 변환된다.
판다스 데이터프레임을 넘파이 배열로 변환
DataFrame 객체의 values를 이용하면 손쉽게 넘파이 배열로 변환할 수 있다.
쉽고 간단하지만 가장 많이 사용되는 것이므로 반드시 기억해두어야 한다.
조금 전에 딕셔너리를 데이터프레임으로 변환한 df_dic1을 다시 넘파이 배열로 변환해보자.
새로운 배열명 = 데이터프레임명.values
이후 새로운 배열명을 type을 이용해 확인해보면 넘파이로 잘 변환된 것을 볼 수 있다.
또한 shape 변수로 2행 3열을 가진 배열이라는 것을 확인했다.
판다스 데이터프레임을 리스트, 딕셔너리로 변환
위에서 values로 얻은 넘파이 배열에 tolist()를 호출하면 리스트로 변환된다.
values가 아니라 to_dict() 메서드를 호출하면 딕셔너리로 변환되는데, 인자로 'list'를 입력하면 딕셔너리의 값을 리스트형으로 반환하는 것도 가능하다.
판다스 기본 개념 정리하기
2022.08.07 - [Data Science] - [Pandas] 판다스 데이터프레임 기초 with 캐글 타이타닉 파일
넘파이 (numpy) 기초에 대한 공부가 필요하다면 아래 링크들을 참고 부탁드린다.
차근차근 넘파이 개념 정리하기
2022.08.02 - [Data Science] - [Numpy] 넘파이 설치+차원 확인+데이터 타입 확인 및 변경
2022.08.02 - [Data Science] - [Numpy] 넘파이 배열 생성 arange range 차이+파이썬 빈 배열 만들기
2022.08.03 - [Data Science] - [Numpy] 넘파이 reshape 차원 추가 축소 변경하기
2022.08.04 - [Data Science] - [Numpy] 넘파이 인덱싱 슬라이싱 팬시인덱싱 등으로 인덱스 반환하기 +찾기
2022.08.05 - [Data Science] - [Numpy] argsort 넘파이 정렬 내림차순까지 간단히 정리
'Data Science' 카테고리의 다른 글
[Pandas] 판다스 인덱스 초기화 재정렬 (0) | 2022.08.16 |
---|---|
[Pandas] Column 열 생성 및 삭제 (0) | 2022.08.15 |
[Pandas] 판다스 데이터프레임 기초 with 캐글 타이타닉 파일 (0) | 2022.08.07 |
[Numpy] argsort 넘파이 정렬 내림차순까지 간단히 정리 (0) | 2022.08.05 |
[Numpy] 넘파이 인덱싱 슬라이싱 팬시인덱싱 등으로 인덱스 반환하기 +찾기 (0) | 2022.08.04 |
댓글