국내 주식들간의 상관계수를 구하기 위해
cor100 = df100.corr(method='pearson').round(3)
로 각 종목간의 상관 계수를 구했음
결과로 종목명이 인덱스와 컬럼인 df을 만들어짐
근데 그 리스트의 형태를 [[인덱스명,컬럼명,상관계수],[인덱스명,컬럼명,상관계수],[인덱스명,컬럼명,상관계수]....] 형태로
각각의 값들을 인덱스와 컬럼과 같이 묶어서 2차원 리스트로 만들려고 함
#df을 dict로 변환 / 2중 dict 구조 {index:{colume:corr},index:{colume:corr},index:{colume:corr}.....}
tmp =cor100.to_dict()
print("tmp : " , tmp)
# 1차원에 있는 dict를 zip로 합쳐서 리스트로 변환
tmp2 = list(map(lambda x: list(zip(x.keys(),x.values())),tmp.values()))
print("tmp2 : " , tmp2)
#2차원 dict의 key값과 tmp2 리스트를 zip으로 매칭
tmp3= list(zip(tmp.keys(),tmp2))
print("tmp3 : " , tmp3)
# 2중으로 람다 사용해서 각 리스와 index 매칭
tmp4 = list(map(lambda x: list(map(lambda y : [x[0]]+list(y),x[1])),tmp3))
print("tmp4 : " , tmp4)
#차원 축소
tmp5 = list(itertools.chain(*tmp4))
print("tmp5 : " , tmp5)
tmp5에서 내가 원하는 대로 결과가 나왔다.
람다를 이용해서 이래저래 원하는데로 처리가 됬지만 분명 더 빠르고 간단하게 처리가 가능할꺼 같은데 내 코딩 능력으로는 이게 최선인거 같다. 그래도 for문 보다는 빠르지 않을까 싶다.
'주식 데이터 분석' 카테고리의 다른 글
네이버 주식 관련 블로그 크롤링 (파이썬) (0) | 2024.06.16 |
---|---|
[python] 네이버 뉴스 갯수 크롤링하여 날짜별로 카운팅하기 (주식 종목별로) (0) | 2022.06.03 |
[Python] 국내 주식 상한 VI를 카운팅해서 관련주 찾기 (0) | 2022.05.02 |
[Python] 국내 주식 종목 간 상관관계 분석해서 관련주 찾기 (0) | 2022.05.02 |