• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

pd.concat(result.tolist()) 에 대해 문의드립니다.

21.06.17 07:37 작성 조회수 282

1

- 선생님의 강의는 모두 듣고 있습니다. 벌써 다음 강의도 기대하고 있는 중입니다. ㅎㅎㅎ

- 제가 궁금한 것은 제목에도 썼지만 pd.concat(result.tolist())로 result에 있는 값들을 리스트로 변환한 뒤, 다시 concat로 DF형태로 전환하는 이유가 궁금합니다. (그러니까 제말은 어떻게 result결과를 보고 아 이렇게 리스트로 바꾸고 concat 해주면 되겠구나라는 그런 감이 전혀 오지 않는 초보들은 어떻게 해야하나라는 말입니다.)

- 그리고 여기 result는 함수를 이용해서 모은 자료들인데, 얘네들은 Series도 아니고, DF도 아닌 이런 애들은 실제 현실에서 어떨경우에 생기게 되는 건지 궁금합니다.(함수를 이용해 자료를 취합하면 그냥 이렇게 되는건지요?)

- 실제 현장에서 데이타를 핸들링할 때, 위와 같이 뭔가를 데이타 프레임으로 만들고 싶은데 잘 안되었던 경우가 많았고, 그때마다 검색하고 뭐하고 해봤지만 답을 찾기가 너무 어려웠던 기억이 있어서 여쭤봅니다.

- 혹시 위와같이 우리가 흔히 알고 있는 자료형인 Series나 DF 외에 다른 자료형태를 DF로 변환하는 방법에 대해 간략히 정리해 주실 수 있으실지 정중하게 부탁드려봅니다.

- 대한민국 데이타분석 최고전문가이신 박조은 선생님 응원합니다.. ^^

답변 1

답변을 작성해보세요.

1

안녕하세요.

과찬과 응원 감사합니다. 큰 힘이 됩니다 :)

[Merge, join, concatenate and compare — pandas 1.2.4 documentation](https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html)

판다스 문서를 보면 여러 데이터프레임을 행(axis=0) 혹은 열(axis=1)을 기준으로 합쳐주게 됩니다.

데이터프레임이 들어가는 옵션에 대한 설명이 아래의 내용인데요.

  • objs : a sequence or mapping of Series or DataFrame objects. If a dict is passed, the sorted keys will be used as the keys argument, unless it is passed, in which case the values will be selected (see below). Any None objects will be dropped silently unless they are all None in which case a ValueError will be raised.

합쳐 줄 여러 데이터프레임을 전달할 때 데이터프레임 여러 개를 넘겨주면 각각의 옵션 값으로 인식하기 때문에 첫 옵션에 대한 인자값으로 넘겨주기 위해 리스트 형태로 묶어서 전달을 하게 됩니다.

아래 예제가 수업에서 사용했던 예제와도 비슷한 예입니다.

In [4]: frames = [df1, df2, df3]

In [5]: result = pd.concat(frames)

데이터프레임을 하나씩 전달하려면 리스트의 원소를 추가할 때 처럼 append를 사용하는 방법도 있습니다.

판다스에서는 여러 개의 데이터를 하나의 파라메터로 전달하기 위해 리스트 형태를 사용하는데

여기에서도 여러 개의 데이터를 하나의 파라메터값으로 전달하기 위해 리스트 형태로 변환해 주었다고 보면 됩니다.

result = df1.append(df2)
  • ../_images/merging_concat_basic.png

../_images/merging_concat_axis1.png

또, 어떤 데이터는 dict형태이고 어떤 데이터는 1차원 리스트, 어떤 데이터는 2차원 리스트인데 아래와 같이 데이터프레임이나 시리즈를 만들어 주는 형태로 전달하는 것으로 봐주시면 될 것 같아요.

리스트가 1차원일때는 시리즈, 2차원 일 때는 데이터프레임 형태로 변환된다는 것을 이해하고 있으면 데이터프레임의 형태를 다양하게 변환할때 도움이 될 것 같습니다.

그리고 다른 형태의 자료를 판다스의 데이터프레임으로 변환 할때도 해당 데이터의 구조가 데이터프레임과 같은 표 형태로 변환할 수 있는지에 대해 고민해 보시면 좋을 것 같아요.

다차원 형태의 배열은 판다스로 다루기 위해서는 2차원 형태로 변환을 해주셔야 판다스로 다루기에 좋습니다.

가끔 표 안에 표가 들어가 있기도 한데, 이런 데이터를 2차원으로 변환하는게 데이터프레임을 사용하기에 적합합니다. 분석하시다 궁금하신 점이 있으면 또 질문해 주세요!

감사합니다 :)

늘 빠르고 친절한 답변 진심으로 감사드립니다. 

다음 강의도 진심 기대하고 있습니다...

늘 건강하시고,  좋은 강의 부탁드려요~~~  ^^

저도 파이썬 학습 응원 하겠습니다. 

감사인사 감사합니다 :)