본문 바로가기

분류 전체보기

(658)
[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 - join merge 는 특정 컬럼값을 기준으로 데이터를 병합하고, join 은 인덱스를 기준으로 데이터를 병합한다. how 옵션에는 left, right, outer, inner 옵션이 있다. how 옵션을 지정하지 않으면 기본 옵션은 left 입니다. df1 ---------------------------------------------------------- 종목코드종목명현재가 업종 전기전자005930삼성전자74400 화학051910LG화학896000 서비스업035720카카오121500 df2 ---------------------------------------------------------- 등락률 항목 은행2.92 보험0.37 화학0.06 전기전자-2.43 df1.join(other=df2) ----..
[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 - add data 이번 시간에는 기존 데이터프레임에 데이터를 추가하는 방법에 대해서 알아보겠습니다. 먼저 횡방향(컬럼 데이터 추가) 데이터 추가하는 샘플입니다. from pandas import DataFrame import pandas as pd data = { '종가': [113000, 111500], '거래량': [555850, 282163] } index = ["2019-06-21", "2019-06-20"] df1 = DataFrame(data=data, index=index) df1 ------------------------------------------- 종가거래량 2019-06-21113000555850 2019-06-20111500282163 data = { '시가': [112500, 110000], ..
[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) -------..