강의 2.3 에서 갑자기 생긴 궁금한 점(답변 항상 감사합니다)
205
작성한 질문수 5
s1 = pd.Series(np.arange(1, 6, 1))
s2 = pd.Series(np.arange(6, 11, 1))
s3 = np.arange(1, 6, 1)
s4 = np.arange(6, 11, 1)
pd.DataFrame([s1, s2], columns=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'], index=["a", "b"])
pd.DataFrame([s3, s4], columns=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'], index=["a", 'b'])
pd.DataFrame({"a": s1, "b": s2}, index=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'])
pd.DataFrame({"a": s3, "b": s4}, index=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'])
강의 2.3. 듣다가 제가 궁금해서그냥 위와 같이 해 봤는데요.
이렇게 실행해 보니까 시리즈로 변환된 s1, s2를 병합할 때는
칼럼명을 지정해서 병합이 안되네요
애초에 시리즈 만들 때부터 각각 칼럼명을 입력해야만 하나요?
왜 그런가요?
s1 = pd.Series(np.arange(1, 6, 1)) s2 = pd.Series(np.arange(6, 11, 1)) s3 = np.arange(1, 6, 1) s4 = np.arange(6, 11, 1) pd.DataFrame([s1, s2], columns=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'], index=["a", "b"]) Out[75]: x xx xxx xxxx xxxxx a NaN NaN NaN NaN NaN b NaN NaN NaN NaN NaN pd.DataFrame([s3, s4], columns=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'], index=["a", 'b']) Out[76]: x xx xxx xxxx xxxxx a 1 2 3 4 5 b 6 7 8 9 10 pd.DataFrame({"a": s1, "b": s2}, index=['x', 'xx', 'xxx', 'xxxx', 'xxxxx']) Out[77]: a b x NaN NaN xx NaN NaN xxx NaN NaN xxxx NaN NaN xxxxx NaN NaN pd.DataFrame({"a": s3, "b": s4}, index=['x', 'xx', 'xxx', 'xxxx', 'xxxxx']) Out[78]: a b x 1 6 xx 2 7 xxx 3 8 xxxx 4 9 xxxxx 5 10
답변 1
0
안녕하세요! 좋은 실험을 하셨네요.
솔직히 말씀드리면, 일반적으로 Series type에 대한 값들을(여기서 s1, s2) 합칠 때는 pd.DataFrame보다는 뒤에서 배울 pd.concat()으로 진행하는 것이 더 일반적인 관례입니다. 저도 물론 그렇구요.
그리고 제 관점에서 위의 차이에 대해서 분석을 해보면,
s1, s2는 Series이기 때문에, pd.DataFrame 입장에서는 '열' 방향 벡터로 생각을 기본적으로 생각을 할 것 같고, np.arrange의 결과인 np.array에 대해서는 '행' 방향 벡터로 인식을 해서 DataFrame을 만들기 때문에, 위와 같은 결과를 만들어내지않을까 라고 조심스레 추측해봅니다.
예를 들어
pd.DataFrame(
columns=['x', 'xx', 'xxx', 'xxxx', 'xxxxx'], index=["a", "b"]
)
처럼 '데이터의 값' 없이도 똑같은 모습의 DataFrame이 만들어지는데, [s1, s2]의 형태는 지정한 columns, index 형태와 align이 안맞아서 그냥 쓰레기값인 NaN으로 메꾸는게 아닐까 싶네요.
저도 추측성이라 실제 pandas 코드를 다 까보고 들여다봐야 제대로 판단이 가능할 것 같긴합니다 ( pandas github에 가셔서 코드를 직접 까보시는 것도 공부하는데 큰 도움이 되기도 한답니다^^)
한가지 말씀드리면 수없이 Series, DataFrame를 쓰는 입장에서, pd.DataFrame()을 이용해서 다수의 Series를 합치는 경우는 거의 없고, 보통 concat을 많이 쓰기 때문에(일반적으로 보통 그렇습니다), 이 부분 감안하셔서 너무 크게 연연하여 뒷부분 내용을 진행하는데 방해가 되지 않으셨으면 좋겠습니다 : ) (하지만 이런 코드적 내용을 가정하고 검증해보는 것은 정말 좋은 실험입니다! 앞으로도 이런 태도는 향후 큰 도움이 되실거에요!)
감사합니다.
No module named 'FinanceDataReader' 문제
0
873
3
처음 requirements.txt 폴더, 문의 드립니다.
0
475
2
강의 5.9 질문있습니다.
0
288
1
2.1 라이브러리가 설치부터 에러가 발생하네요..
0
378
1
파일 설치시 오류 메세지
0
315
1
질문이 있습니다.
0
297
2
7.9 왜 재생이 안되죠? 다른건 다 되는데..
0
231
1
append삭제
0
457
1
이틀째 설치에서 멈췄어요..제발도와주세요
0
1281
1
강의자료
0
358
1
2.6 reindex 관련 예제 질문
0
568
1
my_data
0
293
1
드랍박스 경로 다시 공유해주실수있나요?
0
473
1
fdr 오류 도오ㅏ주세요 ㅠ
0
674
1
row 출력 개수 변경
0
416
1
df.nsmallest(5, "PER(배)") 중 양수값만 표출
0
361
1
df1 = fdr.DataReader("005930", '2018-01-02', '2018-10-30') 오류
0
681
3
!pip install -r requirements.txt 설치시 에러2
0
919
1
!pip install -r requirements.txt 설치시 에러
0
1577
1
강의 7.9, 슈퍼가치전략 질문
0
298
0
주피터 라이브러리 설치(pandas, numpy, finance-datareader) 관련 문의
0
595
1
pivot() 하니 row의 수가 줄어들었는데 이유가 무엇인지요?
0
363
1
설치 에러
0
383
3
가상환경에서 FinanceDataReader import
0
550
1





