블로그 이미지
shadowchaser
이곳 저곳 이것 저것

calendar

1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Notice

주식 차트 만들 때 필수로 쓰이는 기술에 대해 논하고자 한다.

차트를 만들때 datetime을 index로 처리를 해줘야할 때가 있다.

종종 시간과 날짜 정보는 별도의 열에 있을뿐만 아니라 실제 색인이 되기도 한다.

그럴 때를 위하여 index로 처리를 해줘야할 필요가 있다.


이번 강의에서는 서로 서로 다르게 모여진 자료들을 모으고 모아서 하나의 DataFrame으로 구성해보는 시간을 갖겠다.


백문이 불여일견

우선 아래와 같이 작업을 해보자.

지금까지 배워왔던 library들이 지속적으로 쓰일 것이니, 항상 붙여주도록하자.


datetime함수

Python의 datetime 함수는 정말 굉장히 쓰기 용이하다.

대략적인 스트링을 내가 작성한다음에 이렇게 시간을 구성해줘~ 라고 외치면 알아서 시간化 해준다.

아래와 같이 년, 월, 일, 시간, 분, 초를 작성해봤다.



년, 월, 일 세가지만 작성해도 정상적으로 작동한다.

정상적으로 보이는지 확인해보자.

datetime.datetime의 형태로 보여지는 것을 확인할 수 있다.


또 우리가 바랬던 것 처럼, 시간, 분, 초까지 작성하니 그 내용도 제대로 보이는 것이 보인다.


아울러 등록한 이후엔, 내가 원하는 시간을 뽑아서 사용할 수 있는 것도 확인할 수 있다. (my_date_time.day는 일자를 뜻하는 것이겠지..)


본격적으로 시간을 만들어보자.

헷갈리지 않게 최소한의 내용으로 Data Frame를 구성해보자.
2*2를 테이블을 작성하려면, 최소한 3가지 type의 요소가 필요하다.
index와 column과 data

index 및 Data 만들기

first_two라는 날자를 만들어보자. 2016년 1월 1일, 2016년 1월 2일의 날짜를 등록해보았다.
간단하다. 그냥 배열로서 [ ] 집어 넣으니, list라고 리턴하는 것을 확인할 수 있다.


DatetimeIndex함수

그리고서는 pd.DatetimeIndex함수를 넣으면! dt_ind라는 index를 가진 python만의 특별한 index로 변하게 된다.
잠시후에 보겠지만, 이 함수를 통해 python은 각 index의 값에서 최대값, 최소값등을 관리하게 된다.

그리고 data에는 random한 값을 2x2배열에 값을 넣어주도록 했다. np.random.randn 함수를 써서 표준화된 수를 생성해보았다.

column 만들기

그냥 cols라고 해서 a, b를 넣어보았다. 설마 잃어버린 건아니겠지... 


합산하여 Data Frame으로 만들기

자 지금까지 작성된 데이터(data, dt_ind, cols)를 바탕으로 datFrame을 만들어보자. 정말 단순하다.
df = pd.DataFrame(data,dt_ind,cols)

그리고 df를 찍어보면 값이 정상적으로 찍히는 것을 확인할 수 있다.


DataFrame에 datetimeindex가 된이상

type(df.index)를 찍어보니, datetimes,DatetimeIndex라는 속성을 갖고 있다.

아까전에 말했던 것처럼, pandas.core.indexes.datetimes.DatetimeIndex은 다양한 내용을 제공해준다.

argmax(), max(), argmin(), min()등.. 정말 다양한 값을 제공해준다.



자 여기까지 DataFrame을 작성하는 내용을 만들어보았다.


내일, 아니면 모레.. 시간이 난다면 Time Resampling에 대한 강좌를 작성해보겠다.

Time Resampling은 정말 꿀정보다.! 매일갖고 있는 데이터를 month단위로, year단위로 데이터를 변경하여 작성하는 것이니 말이다.


암튼 많은 기대 해주시고~ 궁금한 내용 있으면 댓글 부탁부탁드려요~


posted by shadowchaser

Quandl에 대해서 공부를 하는 시간을 갖도록 하겠다.

한국에서는 quandl이 별로 유명하지 않다. 몇몇 애널리스트들이나 data scientist들에겐 익숙하긴 한데..
일반 사람들에게는 딱히 유명하지 않다. 
google api나 키움 api나.. 그런 것 몇개만 있으면 충분히 주식 자동 매매를 돌릴 수 있으니까..
헌데 Quandl은 그런 쪽의 perspective 뿐만이 아니라 굉장히 다양한 경제, 주식, 의료, 집값등.. 정말 다양한 perspective를 제공한다.

왜냐면, 하나의 Market이기 때문이라 그렇다.
아 걱정하지 않아도 된다. 내가 얘기하고 싶은 것은 Quandl을 어떻게 사용하느냐에 대해서 안내해주고 싶은 것이지,
무조건 주식 거래 자동화하는 것을 하기 위해서 quandl에 있는 특정 data를 사야한 다거나 하는 것은 아니기 때문이다.

Quandl 사이트 알아보기

일단 quandl site에 들어가보면 대략 어떤 느낌인지 알 것이다.
이 사이트를 이용하려면 우선 가입이 필요하다. 구글 계정등 다양한 계정을 통해 가입을 할 수 있으니 일단 가입을 해보자.

가입후 다시 정신을 차려다 보면 아래와 같이 두가지 메뉴가 있다.
alternative data는 일단 모두 유료니까 Core Financial Data를 들여보도록 하자.


일단 화면으로 들어가면 바로 Free를 클릭하자. 일단 테스트용이니까.... 나중에 데이터가 마음에 든다면, 이것을 통해 뭔가를 진행해도 된다. 


Wiki EOD Stock Prices를 나는 선택했다. 

선택을 하면 바로 다음과 같은 데이터가 뜬다.

그렇다. 모든 주식들에 대한 데이터가 있다.

Quandl을 모든 주식 데이터를 조회할 수 있는 것이다! 

googleapi와 같다고 생각하면 되겠다.


또한 이 사이트는 data를 csv, xls등의 다운로드 타입이라던지 query 타입이라던지, 다양한 방식으로 정보를 제공한다. 짱이다!


아래에 있는 USAGE 화면을 보면, 일단 PYTHON을 클릭해보자. 

내게 고유의 key가 제공이되는데, 내가 갖고 있는 API key를 통해서 작업을 할 수 있다. (특정 작업의 경우 키 없이도 가능함)



이제 진짜로 quandl을 통해 데이터를 가져와보도록 하자.

Quandl을 import를 해보자.

quandl.get은 하나의 함수다. 그 안에 들어있는 IEA/PET_RWTC_D는 세계 유가 지수이다.

심플하게도 그날의 지수를 모두 가져올 수 있다.

엄청 심플하지 않나? 대박이다~


물론 데이터를 통해 matplotlib를 통해 차트로 만들어서 보여줄 수도 있다. 아마 지금까지 내 강의를 봤다면, 문제없이 따라 할 수 있었을것이라 믿는다.. (아닌가.. --;;)


방금 quandl.get을 했을 때는 그냥 data값들만 우르르 내려 왔는데, 이번엔 아예 array로 받아와보자.

그렇다 returns 파라메터에 원하는 속성의 값만 쓰면 바로 array 값으로 원하는 형태로서의 return type을 맞춰줄 수 있다.

아래 보이면 1986, 1, 2, 0, 0이라고 써있는데 이 것은 1986년 1월 2일 이라는 의미이다.


조금 화제를 바꾸어보자.

Quandl을 통해 부동산 정보 조회하기

아까 주식 차트 뿐만 아니라고 했었던 것 기억하는지 모르겠다.

샌프란시스코의 평당렌탈비를 알아보도록 하자.


zillow에서 제공하는 real estate 가격를 추출해보자. 

1억1천만이 넘는 가구에서 발생한 데이터들이니까 믿을 수 있겠지.

아쉽게도 약 1~1개월 반정도 늦은 정보로 업데이트가 된다. 그래도 추이를 보는데는 큰 무리가 없다. 

아래 보이는 바와 같이 2012년을 기점으로 큰 폭으로 상승하고 있다는 사실... 



암튼 위 상단의 내용과 같이 quandl에 대한 code가 ZILLOW/C9_ZRIFAH임을 확인했으니, 이것도 그대로 가져와보자.

오오... 너무 쉽게 뽑힌다.




자 그럼 Quandl을 통해, 애플 주식 회사의 정보를 가져와볼까?

문제 없다.  

음 느끼는게 있는지 모르겠는데, 이전 강좌에서 배웠던, pandas-datareader보다 조금 더 자세한 값들을 제공한다.

사실 모든 컬럼에 대한 내용을 가져오면, query를 가져오는 데 시간이 오래걸리겠지.

그래서 아래와 같이 특정컬럼만 가져올 수도 있다. .1, .2, .3 이런 식으로 선택적으로 조회하기 원하는 column을 선택할 수 있다.


지난 3일 동안 많은 내용을 알아본 것 같다. 



나름대로 알고있었던 사항, 모르고 있었던 사항 테스트 해가면서 상세히 써봤는데, 이해가 쉽게 되려는지 모르겠다.

사실 사람들이 이 사이트 강좌를 얼마나 보는지도 모르겠고...

궁금한 사항 있으면 알려주세요~

posted by shadowchaser

지난 장에서 Pandas를 통한 Visualization에 대한 기초를 맛보았다.

이번엔 조금 더 잘 활용하는 방법에 대해서 알아보겠다.

예를 들어서 

1. 챠트에서 년/월등 시간이 겹쳐보일 때 해결하는 방법이라던지, 

2. 챠트의 표시선을 하나가 아닌 두개로 늘려서 보여준다던지

3. active한 chart를 만든다던지..


이 모든 것을 pandas에서 해줄 수 있다.

다음과 같이 작업해주자

명확한 이해를 위해서 파일이 하나 필요하다. mcdonalds.csv 파일을 통해서 그래프를 그려보자.


mcdonalds.csv


아래와 같이 우선 작업해준다.


csv파일엔 위와같이 Adj.Close, Adj.Volume 데이터가 매일마다 기록되어있다. 

이 두 컬럼의 내용을 한 챠트에 그래프로 그려보도록하자.


어떤가? 이상한가? 왜 하나만 보이는가? (궁예 말투로... --;;) 

그렇다. 하나의 데이터가 하나의 데이터에 가려지고 있는 현상이 생기는 것이다.

이런 일을 피하기 위해서 하나의 데이터만 선택하여 그래프로만들어보도록하자.



물론 데이터를 만들 때,꼭 figsize를 조절하여 적절한 모양으로 보이게 하는 것을 잊지 말자.


아까전보다 좀 나아졌다. 챠트를 해석해 보면 2007년도에 무슨 일이 발생했던 것만 같다. 이게 무슨일이지?

하지만 모든 데이터를 historical하게 보여주고 있어서 특정 일자만을 상세하게 볼 수 없어 답답하다.


그래, 이럴 때를 위해서 xlim과 ylim을 사용하는 것이다.

이전 장에서 배웠던 xlim함수와 ylim함수를 활용하자.


너무 ylim을 높였나보다 조금더 사실적으로 보이도록 몇가지 customization을 해보자.

ylim을 조절하고, linespace와 color를 조절해보았다.


어떤가? 조금 더 나아 보이는가??


동일한 방법으로 xlim과 ylim 를 설정하지 말고 , 명시적으로  2007-01-01과 2007-05-01까지의 index를 뽑아서 만들어 줄 수도 있다. 

일단 날짜만 한 번 뽑아보면 다음과 같다.


정상적으로 된 것같으니 해당하는 날짜의 Adj. Close까지 뽑아보자.



감이 왔는지 모르겠다. 일단 이렇게 해서 plot_date에 맞춰서 작성해보면 다음과 같다.

뭔가 점으로만 찍혀서 있어서 이쁘지 않은 것을 확인할 수 있다.

이를 피하기 위하여 좀더 이쁘게 선으로 연결해보자. 



좀 적당히 보인다. 근데 또 맘에 안드는 화면이 보인다. 각 챠트에서 년/월등 시간이 겹쳐 보이는 것이 확인된다.


이때, autofmt_xdate()를 쓰면, 자기가 알아서 시간에 맞추어 indentation 해준다. (대박 기능중 하나)


따라서 fig.autofmt_xdate()와 plt.tight_layout() 함수는 항상 맨 아래쪽 코드에 자리하고 있어야 한다.


깔끔해진 것을 발견할 수 있다.


챠트에 그리드(grid)도 넣고 뺄 수 있다.

yaxis.grid(), xaxis.grid() 두가지 함수를 통해 각 축별 그리드를 추가/삭제할 수 있다.


마지막으로 Major, Minor를 통해 챠트를 이쁘게 만들어보도록 하겠다.

백문이 불여일견이라고 아래 이미지를 보면 느낌이 올듯하다.
Major에 우선 월별로 간격을 만들어주고, formatting을 한뒤, Minor에는 weekly로 간격을 만들어주고 요일을 작성한다. 
일반적으로 Major만 작성해도 된다.
  • ax.xaxis.set_major_locator
  • ax.xaxis.set_major_formatter
  • ax.xaxis.set_minor_locator
  • ax.xaxis.set_minor_formatter
(참고: byweekday=0값이 월요일을 의미하기 때문에 Mon이라고 아래에 모두 찍혀있는 것임)



Bonus!

보너스로 jupyter notebook에서는 챠트를 좀더 dynamic하게 사용할 수 있다.
맨위에서 %matplotlib inline이라고 작성 후 실행했었는데,
이것을 %matplotlib notebook이라고 수정하고 다시 실행해주면 (이때 kernel restart가 한번 필요하다)
아래와 같이 완전 멋있는 챠트로 변신한다.


아래와 같은 챠트로 변신한다. 

다양한 키들을 제공한다. 엥간한 컴포넌트보다 높은 수준의 기능을 제공한다.

특정 화면으로 이동도 가능하다.

특정부분의 확대도 가능하다.

  -> 



지금까지 pandas를 통한 데이터 visualization을 알아보았다.

다음장에서는 외부에서 실시간 데이터를 가져오면서 챠트를 갱신하는 기능을 보여주도록 하겠다.


혹시 블로그 보다가 궁금한 내용 있으면 물어보세요. 누가 이 블로그 글을 볼런지는 모르겠지만.. --;;

'Python > 02_Visualization with Matplotlib, Pandas' 카테고리의 다른 글

3. Pandas Visualization 개요  (0) 2017.10.07
2. Matplotlib 활용하기  (1) 2017.10.06
1. Matplotlib 기초  (0) 2017.10.06
0. 들어가기전에  (0) 2017.10.06
posted by shadowchaser

Pandas에 대해 알아보도록 하자.

앞에서 Pandas를 통해 데이터를 관리하는 방법을 배웠다. 이번에도 Pandas를 통해 Data를 Visualization을 하는 방법을 알아보자.
진행하면서 matplotlib와 어떻게 다른지, 뭐가 좀 더 편한지 비교해보면서 진행한다면, 값진 시간이 될 것이다. 


Imports 

일단 df1 파일과 df2파일음 다음링크에서 다운 받고, 아래와 같이 준비를 하도록하자.


Style Sheets

hist함수를 통해 표현할 수 있다. 굉장히 편하다.


물론 plot함수로도 동일한 방법으로 표현도 되고.. 다른 방식으로도 가능하다. 



Plot Type에 대해 보도록하자

Plot은 아래와 같이 여러가지 타입을 제공한다.

  • df.plot.area
  • df.plot.barh
  • df.plot.density
  • df.plot.hist
  • df.plot.line
  • df.plot.scatter
  • df.plot.bar
  • df.plot.box
  • df.plot.hexbin
  • df.plot.kde
  • df.plot.pie

자 다시 df2를 한번 확인해보도록 하자. 한 번씩 확인해보면 다음과 같다.


Area와 Bar


사실 df2 파일은 index가 10까지로 구성되어 있다.

따라서 그냥 데이터를 표시하는 것도 좋지만 뭔가 의미 있게 보는 방법도 필요하겠지.


Barplot 

plot.bar(stacked=True)

위 함수는 굉장히 유용하다. 



이뿐만이 아니다. figsize를 통하여 챠트의 크기를 변경하고, 특정 그래프만 보여줄 수도 있으며,

Line Plot과 Scatter Plot

scatter를 통해서 심도를 구분해서 활용할 수도 있다.


한편 심도를 표기할 때 윗처럼 보이면 뭐가 중요한지 차이점을 구분할 수가 없다. 

그때, cmap등의 값을 활용하여 다음과 같이 매우 잘 활용할 수 있다.

BoxPlot



Hexagonal Bin Plot

scatter plot의 변형으로서, Bivariate(두 개의 변수[변량]을 갖는) Data를 처리할 때 매우 유용하다. 
이것도 색상을 좀 이쁘게 처리하면 더 일목요연하게 볼 수 있겠지. 똑같은 데이터인데 정말 달라보인다.


Kernel Density Estimation Plot(KDE)

커널 밀도 추청이라고 하는 KDE(Kernel Density Estimation)를 보아보자. 
다음과 같이 하나만 보여줄 수도 있고, 

여러개를 동시에 진행할 수도 있다.


이 정도만 보면 일단 Pandas 가지고 Visualization을 하는 기본정도는 알고 있네... 라고 생각할 수 있겠다.


특히 matplotlib를 사용하는 것보다 훨씬 사용하기 쉽다는 것이 느껴졌을 것이다~!!! 즉 엥간하면 pandas를 쓰자~ 라고 생각하면 되겠다~


다음편에는 조금더 상세한 Pandas 응용편을 소개하도록 하겠다.!

'Python > 02_Visualization with Matplotlib, Pandas' 카테고리의 다른 글

4. Pandas를 통한 시간별 시각화  (2) 2017.10.07
2. Matplotlib 활용하기  (1) 2017.10.06
1. Matplotlib 기초  (0) 2017.10.06
0. 들어가기전에  (0) 2017.10.06
posted by shadowchaser

Matplotlib을 상세히 다뤄보도록 하자.


들어가기전에

여기에서는 matplotlib를 활용하여 챠트를 만들어보는 작업을 하도록 한다.
아래와 같이 작업해보자


그렇게 입력하고 shit + tab을 눌러보면..

아래와 같은 결과를 확인할 수 있다.



몇가지 기능을 하나씩 소개하겠다.

Funtional로 구현하는 방식

전 장에서 이야기했지만, mtplotlib를 구현하는 방식은 Functional로 사용하는 방법과 객체지향(Object Oriented)방식으로 구현하는 방법 두가지로 나뉠 수 있다. 일단 Functional로 구현하는 방식에 대해서 이야기 하겠다. (후에 기술하겠지만 Object Oriented 방식으로 개발하는 것이 훨씬 용이하다.)

xlabel, ylabel, title  

xlabel은 Xlabel을 추가하는 함수이고
ylabel은 Ylabel을 추가하는 함수이고
title은 Title을 추가하는 함수이다.

즉, 실행하면 다음과 같이 만들 수 있겠다.




헌데 그래프를 작성할 때, 그냥 하나만 작성해서 보여줄 일은 실상 별로 많지 않다.

비교표로 두 개의 그래프를 동시에 작성하던지, 아예 두개의 차트로서 표현을 해야할 때가 있다.

subplot 함수

그래서 subplot함수가 엄청 유요하다. subplot에는 파라메터를 최소 3개를 요구한다. 몇개의 행과 열로 구성될 것이고, 그중에 몇 번째것인지.

plot 함수

plot(x,y)만 써줘도 되지만 세번째 파라미터에 색상을 집어 넣어주면 색상까지 입혀져있는 모습을 확인할 수 있다.


Object Oriented로 구현하는 방식

우리가 class를 초기화하는 것처럼 fig = plt.figure()라는 방식으로 빈 figure object를 만들고 거기에 각 속성을 집어넣는 방식이다.
생각보다 매우 쉬우니까 이 방법으로 개발하자.

아래 이미지를 보면 아까전에 봤던 것과 비슷한 모습이 보이기도 하고, 새로운 녀석들이 보이기도 한다.
예를 들어 plt.Xlabel('X Label')axes.set_xlabel('XLabel')로 변경된 것을 확인할 수 있다.
눈치가 있으면 느꼈겠지만 fig.add_axes가 뭔가 중요한 역할을 하는 것 같다... 후술하겠다.


기본적으로 fig = plt.figure() 후 axes = fig.add_axes([.1, .1, .8, .8])은 암기하자

아래와 같이 두개의 챠트를 중복해서 그릴 수도 있다. 

( 옛날에 이런 거 한 번 그릴려면 정말 난리가 났었다. 옛날 activeX 컴포넌트에서는 저것을 그릴 수 있는 유료콤포넌트가 없어서 외주 고객에게 정말 많이 깨졌었는데.. 이런 게 무료라니.. 이런 게 이렇게 쉽게 구현된다니.. 정말 기가 차다. 하긴 벌써 15년전 이야기니까... )


fig.add_axes함수

이 함수는 각각의 위치를 지정하는 함수다. 
axes1과 같은 경우 0.1, 0.1, 0.8, 0.8이라고 작성이 되어있는데 , 첫 0.1은 이미지의 x축의 위치, 두번째 0.1은 이미지의 y축의 시작위치, 세번째 0.8은 이미지의 가로길이, 네번째 0.8은 높이를 의미한다.
0~1까지 값을 입력할 수 있으며 모두 상대적인 길이이다.
axes2도 마찬가지다. 훨씬 이해하기 쉬울 것이다. 0.2정도의 가로 위치에, 0.5정도의 높이에, 0.4정도의 너비, 0.3정도의 높이로 표현을 하겠다는 것이다.

혹시나 이해가 안될까봐 하나씩 바꾸면서 작성을 해보았다. 이래도 이해가 안가면 나도 난감해질 수 있다.


복합편

자 이제, 기초적인, 주요하게 사용되는 함수들을 배웠다.  활용을 해보도록 하자.
챠트 두개에 지금까지 배웠던 모든 것을 다 입력해보도록 하자.

쪼개기

functional api를 사용할 때 subplot함수를 활용했었던 것을 기억하는지 모르겠다.
마찬가지로서 객체지향 방식 구현에서도 동일하게 활용할 수 있다.
한 화면에 이미지를 6개를 넣을수도 3개를 넣을 수도 있다.

tight_layout 함수

tight_layout은 각 챠트들이 겹치지 않도록 해주는 정말 고마운 함수다.  항상 사용하도록 하자.


Size와 DPI 조절

챠트를 그리다 보면 width와 height를 조절해야할 필요가 있다. 이때, figsize가 사용된다.
"인치"가 단위로서 사용되는 것을 필히 유의하자.


Legend의 활용

한 챠트에 여러개의 그래프 표현이 필요할 때가 있다. 그럴 때는 색상 혹은 marker로서 구분을 하는데 이때, legend가 있으면 굉장히 편리하다.

legend함수

legend함수를 통해서 legend가 어디에 위치할지를 결정할 수 있다. parameter 속성을 확인해보면 다양한 값이 있으니 직접 확인해보도록.
예를 들어 10이라고 하면 정가운데에 위치한다.

또한 상대수치를 입력하여 옮길 수도 있다. 어쩔대는 아예 외부에다가 둘때 더 이쁘더라.



Plot 모양새 바꾸기 정리

plot 함수를 총정리해보았다.
color, linewidth, alpha, linestyle, marker, markersize, markerfacecolor, markeredgewidth, markeredgecolor등 여러가지가 있다.
나는 아래이미지처럼 초록색의 외곽선 마커를 갖고 있고 노란색으로 채워져있으며 선이 ":" 로 구성되어있는 챠트로 만들어보았다. 어떤가?


수치 변경에 따른 결과는 아래 챠트의 내용과 같다. 총정리랄까...




축의 모양 변경

set_xlim함수, set_ylim함수

set_xlim함수와 set_ylim함수는 x와 y축에서 데이터가 표시될 구간을 결정한다.
예를 들어, 데이터값들이 1~100까지 있다고 하더라도, [0,1]이라고 지정했다면 1~100값은 표시되지 않고 0~1까지만의 값이 표시되는 것이다.

그이외의 방법들

scatter함수

scatter함수는 값들을 말그대로 흩뿌리는 효과를 낸다.

hist함수

hist함수는 데이터의 값을 히스토그램으로 만들어준다.


여기까지 Matplotlib를 활용하여 챠트를 만들어 보는 방법을 정리해보았다.


이외에도

아래의 사이트는 꼭 들어가볼 것을 권한다.


간략하게 정리해보았는데, 어땠는지 모르겠다.

궁금한 사항있으면 언제든지 댓글 남겨주세요. 감사합니다.

'Python > 02_Visualization with Matplotlib, Pandas' 카테고리의 다른 글

4. Pandas를 통한 시간별 시각화  (2) 2017.10.07
3. Pandas Visualization 개요  (0) 2017.10.07
1. Matplotlib 기초  (0) 2017.10.06
0. 들어가기전에  (0) 2017.10.06
posted by shadowchaser

Matplotlib은 python 2D plotting library로서 png, jpg등의 파일 형식으로 이미지를 생성해주는, cross platform의 라이브러리이다.


Matplotlib를 통해 무엇을 만들 수 있냐면, plot, histogram, power spectra, bar chart, error chart, scatterplot 등등을 매주 적은 코드만을 가지고 만들 수가 있다. 


Python에서 

최고로 유용하고 강력한 !!!

Visualization 라이브러리라는 것을 잊지 말자!!!



사실 Matlab의 plotting 기능을 베낀 거...

Matlab의 plotting 기능을 차용하여 동일하게 만든 것이긴한데

상세정보는 https://matplotlib.org에

Matplotlib는 https://matplotlib.org 에서 자세한 내용을 확인할 수 있다. 특히 gallery에서 내가 원화는 화면을 클릭하면 어떻게 구현할 수 있는지에 대한 코드가 나와 있는데, 굉장히 유효하다.


갤러리는 꼭 들어가보자

barh_demo
barh_demo
 
fill_demo
fill_demo
fill_demo_features
fill_demo_features
 
line_demo_dash_control
line_demo_dash_control

customized_violin_demo
customized_violin_demo
 
errorbar_demo
errorbar_demo
 
errorbar_demo_features
errorbar_demo_features
errorbar_limits
errorbar_limits
 
errorbars_and_boxes
errorbars_and_boxes
 
histogram_demo_cumulative
histogram_demo_cumulative
 
histogram_demo_features
histogram_demo_features
histogram_demo_histtypes
histogram_demo_histtypes
 
histogram_demo_multihist
histogram_demo_multihist
 

사람들이 matplot을 별로 안좋아하는 이유

이렇게 강력한 기능을 소지하고 있음에도 불구하고, 안좋아하는 사람들이 있다. 
첫번째이유는 객체지향(object oriented) API 구조이기 때문이다.
두번째이유는 function API oriented 구조이기 때문이다. 
그래서 이 두가지가 사람들을 헷갈리게 만드는데 그래서 사람들이 사용하길 원하지 않더라. (어느 부분을 어떻게 수정해야할지 감이 잘 안와서..)
그렇기에 이 두가지를 제대로 마스터 해야한다.


그럼 함 진행해보자!

'Python > 02_Visualization with Matplotlib, Pandas' 카테고리의 다른 글

4. Pandas를 통한 시간별 시각화  (2) 2017.10.07
3. Pandas Visualization 개요  (0) 2017.10.07
2. Matplotlib 활용하기  (1) 2017.10.06
0. 들어가기전에  (0) 2017.10.06
posted by shadowchaser
2017. 10. 6. 03:03 Python/01_Pandas

굉장히 심플하고 자주쓰이는 세가지를 정리해보자.


Join, Merge, Concatenating!!


먼저 이해를 하려면 백문이 불여일견... 우선 아래와 같은 테이블을 작성해보도록 하자.

Concat

concat은 말 그대로 각 셀별로 붙이는 것이다.  세로로 그대로 붙일 수도 있고, 가로방향으로 붙일 수도 있다. 물론 세로로 계속 붙이는 것을 다 많이 하겠지..


Merge

Merge는 특정 key를 중심으로 하여 각 테이블간의 데이터를 합치는 것이다.

합치는 방법은 inner방식과 outer 방식이 있는데, inner 방식은 key를 중심으로 합치는 것이라고 생각하면되고,

outer방식은 key가 갖고 있는 모든 값들까지 생각해서 모두 합치는 방식이라고 생각하면 된다. 


일단 아래 처럼 left, right 테이블을 만들어보자.

이해가 가면 좋겠다. ㅜㅠ

inner, outer, 혹은 table을 기준으로 만들 수 있다.


join

mysql에서 사용하는 join과 완벽히 동일하다. 

궁금한 사항있으면 적어주세용.. 대답해드릴게용


'Python > 01_Pandas' 카테고리의 다른 글

5. Input & Output (파일 읽고 쓰기)  (0) 2017.10.06
3. Groupby 기능  (0) 2017.10.06
2. Missing Data 사용방법(dropna, fillna)  (0) 2017.10.06
1. Data Frame 사용방법  (0) 2017.10.06
posted by shadowchaser
2017. 10. 6. 02:56 Python/01_Pandas

Groupby기능에 대해서 논해보자.

groupby 기능은 우리가 알고 있는, sql에서 쓰는, groupby기능을 일컫는다.
Pandas에서 groupby를 어떻게 활용하는지 확인해보자.

일단 상기와 같이 입력하면 테이블와 같은 값이 나온다. 각각 인력별로 얼마씩 sales를 했는지 나오는데... 저렇게 된 모습은 그냥 정리를 한 것이지, 활용을 한다고는 볼 수 없다.

groupby 함수

pandas에서 groupby는 다음과 같이 다양하게 사용될 수 있다.
평균값, 합, 중간값은 물론...

다양한 유틸리티가 존재한다..

groupby().count(), groupby().max()등의 기능들이 있다.


groupby의 describe 함수

근데 이런 내용들은 모두 describe라는 곳에서 다 관리해준다. 진짜 유용하므로 필수 암기!! 적절히 확인하요 배치하기만 하면 된다.

한편 describe().transpose()를 통해 행과 열을 역전하여 볼 수 있으니까 참조... 

(버전별에 따라 기본 보기가 거꾸로인 곳도 있었다. 그러니까 당황해하지 마시길..)


'Python > 01_Pandas' 카테고리의 다른 글

5. Input & Output (파일 읽고 쓰기)  (0) 2017.10.06
4. Join, Merge, Concatenating  (0) 2017.10.06
2. Missing Data 사용방법(dropna, fillna)  (0) 2017.10.06
1. Data Frame 사용방법  (0) 2017.10.06
posted by shadowchaser
2017. 10. 6. 02:48 Python/01_Pandas

Missing Data

numpy와 pandas를 쓸때, NaN이 나오는 경우가 엄청많이 생긴다. 엑셀에서 값을 만들때 NaN들이 생기거나 Infinite 값들, 혹은 누락된 값이 생기는데 이러한 값들을 예외 처리하는 것은 정말 중요하다. 기본기라고 생각한다. 그러한 바에서 Missing Data를 관리하는 스킬을 필히 갖추도록 하자.

아래와 같이 Sample Data를 만들어보자.


Dropna 함수의 활용

굉장히 일목요연하다. dropna함수는 column내에 NaN값이 있으면 해당 내용은 필요없다 간주하고 삭제해버린다.
따라서 7번줄과 같은 경우 1행, 2행을 모두 삭제해버리는 것이다.

한편 dropna(axis=1)과 같은 경우 반대다. 열을 삭제해버린다.


dropna(thresh=2)라면 thresh는 threshold(임계값)을 설정할 수 있는데, NaN이 2개 이상 있는 것에 대해서만 삭제해버린다는 의미이다.


fillna()함수

fillna함수도 굉장히 유용한다 NaN을 특정 값으로 대체하는 기능을 한다. 특정 텍스트라던지, 평균값이라던지... 굉장히 유효한 함수니까 필히 암기하자.



'Python > 01_Pandas' 카테고리의 다른 글

5. Input & Output (파일 읽고 쓰기)  (0) 2017.10.06
4. Join, Merge, Concatenating  (0) 2017.10.06
3. Groupby 기능  (0) 2017.10.06
1. Data Frame 사용방법  (0) 2017.10.06
posted by shadowchaser
prev 1 next