본문 바로가기

Python

(60)
[Python] Data Analysis - DataFrame - excel 이번에는 데이터프레임을 엑셀로 저장/읽는 방법에 대해서 알아보겠습니다. CSV 파일로 저장하기 df --------------------------------------------------- 종목명현재가등락률 종목코드 0377303R15107.36 0363603SOFT17901.65 005760ACTS11851.28 df.to_csv("data.csv") 엑셀로 저장하기 df.to_excel("data.xlsx") # 시트 이름을 설정 df.to_excel("data2.xlsx", sheet_name="종목정보") # 인덱스 제거 df.to_excel("data3.xlsx", index=False) # 컬럼 제거 df.to_excel("data4.xlsx", header=False) 엑셀 파일 불러오기..
[Python] Data Analysis - DataFrame - Melt 이번에는 melt 에 대해서 알아보겠습니다. melt 메서드는 컬럼의 수가 많아서 와이드 포맷의 데이터프레임을 세로로 긴 포멧의 데이터프레임으로 구조를 변경할 수 있다. df -------------------------------------------------- 종목코드종목명시가고가저가종가 0005930삼성전자75800760007410074400 1035720카카오147500147500144500146000 2000660SK하이닉스9960010150098900101500 melt 를 적용하면 모든 컬럼명은 variable 컬럼으로 이동하고 값들은 value 컴럼으로 이동한다. df.melt() melt 사용시, 유지하고 싶은 컬럼이 있다면 id_vars 옵션을 사용하여 유지할 수 있다. df.melt..
[Python] Data Analysis - DataFrame - Stack / Unstack 이번에는 Stack / Unstack 에 대해서 알아보겠습니다. 가끔은 컬럼을 인덱스로 옮기거나 반대로 인덱스를 컬럼으로 옮기는것이 데이터를 다루는데 또는 이해하는데 효과적일 때가 있다. stack 메서드는 컴럼을 인덱스로 변경할 수 있다. 반대로 unstack 메서드는 인덱스를 컬럼으로 변경한다. df ----------------------------------- 영업이익당기순이익 컨센서스잠정치컨센서스잠정치 2020/06100900800700 2020/0912001400900800 # 기본적으로 높은레벨(level 0 가 낮은 레벨임)의 컬럼이 인덱스로 변경된다 df.stack() ----------------------------------- 당기순이익영업이익 2020/06잠정치700900 컨센서스..
[Python] Data Analysis - DataFrame - multi-column 이번에는 멀티컬럼에 대해서 알아보겠습니다. 멀티컬럼은 멀티인덱스와 구조만 다릅니다. from pandas import DataFrame data = [ [100, 900, 800, 700], [1200, 1400, 900, 800] ] columns = [ ['영업이익', '영업이익', '당기순이익', '당기순이익'], ['컨센서스', '잠정치', '컨센서스', '잠정치'] ] index = ["2020/06", "2020/09"] df = DataFrame(data=data, index=index, columns=columns) df ------------------------------------------ 영업이익당기순이익 컨센서스잠정치컨센서스잠정치 2020/06100900800700 2020/09..
[Python] Data Analysis - DataFrame - multi-index 이번에는 멀티 인덱스에 대해서 알아보겠습니다. df --------------------------------------- 23 01 영업이익컨센서스10001200 잠정치9001400 당기순이익컨센서스800900 잠정치700800 # 인덱스 이름 지정 및 컬럼명 지정 df.index.names = ["재무연월", ""] df.columns = ["2020/06", "2020/09"] df --------------------------------------- 2020/062020/09 재무연월 영업이익컨센서스10001200 잠정치9001400 당기순이익컨센서스800900 잠정치700800 멀티 인덱스에서 인덱싱 및 슬라이싱 하는 방법 레벨0 인덱스를 이용한 인덱싱 df -------------------..
[Python] Data Analysis - DataFrame - merge 단순한 데이터프레임을 합치는 경우에는 concat 도 가능하지만 특정 컬럼값을 기준으로 데이터를 병합하기 위해서는 merge 를 사용해야 한다. 2개의 데이터프레임을 merge 하는 방법은 아래와 같다. df1 --------------------------------- 업종종목코드종목명 현재가 0전기전자005930삼성전자 74400 1화학051910LG화학 896000 2전기전자000660SK하이닉스 101500 df2 --------------------------------- 업종등락률 0은행2.92 1보험0.37 2화학0.06 3전기전자-2.43 merge 에서 inner / outer 의 차이는 아래와 같다. pd.merge(left=df1, right=df2, on='업종') ---------..
[Python] Data Analysis - DataFrame - groupby groupby 함수는 다양한 옵션 및 기능이 있지만 여기서는 기본적인 기능에 대해서만 알아보겠습니다. df ---------------------------------------------- 테마종목명PERPBR 02차전지(생산)SK이노베이션10.191.29 1해운팬오션21.230.95 2시스템반도체티엘아이35.971.12 3해운HMM21.523.20 4시스템반도체아이에이37.323.55 52차전지(생산)LG화학83.063.75 df1 = df[df["테마"] == "2차전지(생산)"] df2 = df[df["테마"] == "해운"] df3 = df[df["테마"] == "시스템반도체"] df1 ---------------------------------------------- 테마종목명PERPBR 02..
[Python] Data Analysis - DataFrame - sort, rank sort df ----------------------------------------- 종목명현재가 종목코드 0377303R1510 0363603SOFT1790 005670ACTS1185 df.sort_values("현재가") ----------------------------------------- 종목명현재가 종목코드 005670ACTS1185 0377303R1510 0363603SOFT1790 df.sort_values(by="현재가") ----------------------------------------- 종목명현재가 종목코드 005670ACTS1185 0377303R1510 0363603SOFT1790 df.sort_values(by="현재가", ascending=False) -------..