인프런 커뮤니티 질문&답변

Jason Chung님의 프로필 이미지
Jason Chung

작성한 질문수

단 두 장의 문서로 데이터 분석과 시각화 뽀개기

12) melt, pivot 으로 Tidy Data 만들기

Library 질문입니다.

작성

·

209

1

안녕하세요

Library 다음에 method 지정하는데, melt는 pd.에 나오고,  pivot은 df.에 따르는데,  어떤 규칙이 있나요. logic에서도 마찬가지여서, 작성하면서 혼돈이 많이 되네요. 아님 그냥 외워야 되는건지요. 

그리고 별개의 질문인데요. data 읽어  올 때  list of dictionary 하고 list of list  개념 설명 부탁합니다.  어떤 차이점이 있고 어떤 방식으로 활용해야 되는지요 

답변 3

1

Jason Chung님의 프로필 이미지
Jason Chung
질문자

답변 고맙습니다.  DATA 불러오기 문제가 있어서 설명 부탁 할께요. 

우선 회사에서 구글 사용해서 colab를 사용하고요. Spreadsheet를 불러와서 판다스 활용합니다. 

그래서 gsspread(https://gspread.readthedocs.io/en/latest/api.html)설명서를 참고 하는데요. 

그 부분에서 get_all_values와 가get_all_records 차이를 파악하다, 2번째 질문을 하였습니다. 

현재 데이타 볼러올 때의 문제점은

Spreadsheet 아래 날짜를 읽어올 때, datatype이 int64로 바뀌고요

get_all_values(value_render_option='UNFORMATTED_VALUE')

일자 출금
2019. 10. 31 0
2019. 10. 31 1,000
2019. 10. 31 18,000
2019. 10. 31 57,450

그래서 다시 datetime으로 변경하면 df['일자'] = pd.to_datetime(df['일자'])

전혀 다른 날짜(시간포함해서)가 아래와 같이 나옵닙니다.

다른 숫자나 text는 int,object로 불러와서 이상 없이 보이는데, date는 sheet 자체에서 어떤 날짜 포맷으로 저장 문제인지 아님 api 자체내에서 불러올때 type를 지정 해야 되는 문제인지 몰라서요. 설명 해 주시면 감사하겠습니다. 

1

박조은님의 프로필 이미지
박조은
지식공유자

안녕하세요.

1.

데이터프레임을 그대로 사용한다면 df.메소드명으로 사용할 수 있습니다.

하지만 concat의 경우 여러 데이터프레임을 지정해 주어야 하기 때문에  pd로 지정합니다.

반면에 merge 는 pd.으로도 df.으로도 사용할 수 있는데 데이터프레임이 그 기준이 되느냐로 이해하시면 될것 같습니다.

2. 

 list of dictionary  라면 컬럼명을 따로 지정해 주지 않아도 됩니다.

d = {'col1': [1, 2], 'col2': [3, 4]}
>>> df = pd.DataFrame(data=d)
>>> df
   col1  col2
0     1     3
1     2     4

 list of list 라면 컬럼명을 따로 지정해 주셔야 합니다.

df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
...                    columns=['a', 'b', 'c'])
>>> df2
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9

공식문서를 링크합니다.

[pandas.DataFrame — pandas 1.1.2 documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)

0

박조은님의 프로필 이미지
박조은
지식공유자

여기에 질문을 주셨었네요. 새로 올려주신 질문에 답변해 드렸습니다.

일자의 타입을 int가 아니라 str 으로 변경하고 datetime 으로 변환하면 해결됩니다.

Jason Chung님의 프로필 이미지
Jason Chung

작성한 질문수

질문하기