파이썬(Python)/pandas

[Python] 코스피, 코스닥 값 불러와서 분석하기(pandas)

끄적끄적아무거나 2021. 10. 28. 19:07
반응형

 

목차

     

     

     

     

     


     

     

    [Python] 코스피, 코스닥 값 불러와서 분석하기 : 설정

     

    주식에 관심이 많아서 코딩으로 투자에 접목해볼 만한것이 뭐가 있나 생각하던 참에 최근에 사용하고 있던 파이썬의 판다스(pandas)라는 모듈을 가지고 코스피(Kospi), 코스닥(Kosdaq)을 분석 해보려고 합니다. 

     

    판다스(Padas)는 최근에 많이 사용되는 라이브러리(Library)로 데이터 분석을 효율적으로 처리해줍니다. 데이터를 엑셀과 같은 테이블에 배치하여 내부 값을 쉽게 처리해줍니다. 

     

    가령 최소값(min), 최대값(max), 표준편차(standard deviation), 퍼센트(Percentile)에 따른 값 찾기 등을 명령어 하나로 간단하게 처리 할수 있게 도와 줍니다. 해당 내용에 대해서는 아래에서 다루도록 하겠습니다.

     

     

    우선 Pandas 를 설치하여야 하는데 저는 Visual Studio를 사용해서 Command prompt 를 사용해서 설치 합니다. 

     

    pip install pandas

     

    위 명령어로 간단하게 설치가 완료 됩니다. 

     

     

     

     

    [Python] 코스피, 코스닥 값 불러와서 분석하기 : CSV 파일로 저장하기

     

    코스피, 코스닥의 1년 동안의 일별 시세 변화 값을 가져오려고 합니다. 야후 금융(Yahoo finance)에서 CSV 파일 형태로 간단하게 제공합니다. 만일 네이버나 카카오다음 금융에서 코스피, 코스닥 값을 가져오려면 별도의 csv 파일로 제공하지 않기 때문에 BS4와 같은 웹 스크롤링(Web Scrawling) 라이브러리를 사용해서 가져와야 합니다.

     

     

    BS4 방법을 자세하 알고 싶으시면 아래 링크를 참조 하시길 바랍니다.

     

     

    [Python] BS4로 네이버금융 종목분석-재무분석 값 가져오기

    목차 [Python] BS4로 네이버금융 종목분석 : 사용 소프트웨어, 설치 이번 포스트에서는 웹스크롤링(Web scrawling) 기술로 네이버금융의 재무제표 항목들을 가져올 것 입니다. 웹 스크롤링에 이용할 라

    scribblinganything.tistory.com

     

     

    하지만 우리는 간단하게 코스피, 코스닥 일일 종가를 받을 수 있으므로 쉬운 길로 가겠습니다. 우선 야후 파이낸스에서 KOSPI를 검색하고 "Historical Data" 탭을 클릭하면 아래와 같은 화면을 들어 갈 수 있습니다. 오른쪽에 Download라고 CSV 파일을 쉽게 받을 수 있게 제공하니 다운 받으시면 됩니다. 

     

    KOSDAQ도 마찬가지 방법으로 받으시면 됩니다. 

     

     

     

     

     

    [Python] 코스피, 코스닥 값 불러와서 분석하기 : CSV 파일 읽기, 불러오기

     

    pandas 코딩을 사용해서 csv 파일을 읽어 올 것입니다. 판다스를 이용하면 csv 뿐 아니라 행, 열과 같은 구조를 가진 json, 엑셀(excel) 파일들을 읽을 수 있습니다. 

     

    코드>>

    import pandas as pd
    
    df = pd.read_csv('kospi.csv')
    
    print(df)

     

    결과>>

               Date         Open         High          Low        Close    Adj Close  Volume
    0    2020-10-28  2324.179932  2345.459961  2316.469971  2345.260010  2345.260010  705200
    1    2020-10-29  2312.340088  2330.169922  2299.909912  2326.669922  2326.669922  509100
    2    2020-10-30  2319.560059  2320.199951  2266.929932  2267.149902  2267.149902  795600
    3    2020-11-02  2276.610107  2302.639893  2267.949951  2300.159912  2300.159912  678500
    4    2020-11-03  2315.810059  2344.770020  2315.300049  2343.310059  2343.310059  887400
    ..          ...          ...          ...          ...          ...          ...     ...
    242  2021-10-21  3012.280029  3025.879883  3002.739990  3007.330078  3007.330078  887000
    243  2021-10-22  3005.360107  3018.699951  2996.260010  3006.159912  3006.159912  695000
    244  2021-10-25  3001.100098  3025.270020  2983.290039  3020.540039  3020.540039  791500
    245  2021-10-26  3039.820068  3051.649902  3030.530029  3049.080078  3049.080078  564100
    246  2021-10-27  3045.830078  3049.020020  3019.000000  3025.489990  3025.489990  607875
    
    [247 rows x 7 columns]

     

    주석>>

    라인1 : pandas를 import해서 가져옵니다.

    라인3 : read_csv 함수를 사용해서 csv파일의 값을 df에 저장합니다.

     

    위처럼 가져온 값을 print 하면 위에 5줄 아래 5줄로 결과가 나옵니다.

     

     

     

    만일 모든 값을 다 확인하고 싶다면 아래와 같이 코드를 작성하시면 됩니다. 

     

    코드>>

    import pandas as pd
    
    df = pd.read_csv('kospi.csv')
    
    print(df.to_string())

     

    결과>>

               Date         Open         High          Low        Close    Adj Close   Volume
    0    2020-10-28  2324.179932  2345.459961  2316.469971  2345.260010  2345.260010   705200
    1    2020-10-29  2312.340088  2330.169922  2299.909912  2326.669922  2326.669922   509100
    2    2020-10-30  2319.560059  2320.199951  2266.929932  2267.149902  2267.149902   795600
    3    2020-11-02  2276.610107  2302.639893  2267.949951  2300.159912  2300.159912   678500
    4    2020-11-03  2315.810059  2344.770020  2315.300049  2343.310059  2343.310059   887400
    5    2020-11-04  2361.320068  2371.139893  2339.949951  2357.320068  2357.320068   986800
    6    2020-11-05  2373.409912  2413.790039  2370.850098  2413.790039  2413.790039   702000
    7    2020-11-06  2421.790039  2431.110107  2404.969971  2416.500000  2416.500000   825600
    8    2020-11-09  2438.629883  2459.149902  2434.520020  2447.199951  2447.199951  1354900
    9    2020-11-10  2453.949951  2457.939941  2435.590088  2452.830078  2452.830078  1464200
    
    ######################생략##################

     

     

    5번라인의 to_string으로 출력하면 csv 파일 모든 결과 값을 가져 옵니다. 

     

     

     

     

     

     

    [Python] 코스피, 코스닥 값 불러와서 분석하기 : 개수, 평균, 표준편차, 최소값, 최대값, 퍼센트 값 구하기

     

    다음은 판다스의 강력한 기능 중에 하나인 데이터의 여러가지 특성을 하나의 함수로 표현하는 방법입니다. 

     

    해당 함수의 Syntax는 아래와 같습니다.

     

     

    dataframe.describe(percentiles, include, exclude, datetime_is_numeric)

     

    • percentiles : 몇 퍼센트까지의 특징을 표현할지에 대한 정의 (1이 100퍼센트임)
    • include : 결과에 포함시킬 데이터 타입
    • exclude : 결과에 배제할 데이터 타입
    • datetime_is_numeric : 날짜 시간을 수로 표현할지에 대한 설정으로 True / False 로 정함 (Default 는 false 임)

     

     

    코드>>

    import pandas as pd
    
    df = pd.read_csv('kospi.csv')
    
    print(df.describe())

     

     

    결과>>

                  Open         High          Low        Close    Adj Close        Volume
    count   247.000000   247.000000   247.000000   247.000000   247.000000  2.470000e+02
    mean   3044.796072  3063.837847  3024.246762  3044.689509  3044.689509  1.144052e+06
    std     236.785555   235.246708   235.873980   233.622278   233.622278  4.204797e+05
    min    2276.610107  2302.639893  2266.929932  2267.149902  2267.149902  5.091000e+05
    25%    2999.635010  3025.574951  2981.599976  3005.449951  3005.449951  8.231500e+05
    50%    3127.750000  3145.810059  3106.969971  3127.080078  3127.080078  1.084800e+06
    75%    3200.590087  3214.344971  3183.654908  3201.690064  3201.690064  1.359150e+06
    max    3305.459961  3316.080078  3295.439941  3305.209961  3305.209961  3.455500e+06

     

    주석>>

    5번 라인:  describe 함수를 사용해서 default 설정만으로 csv 분석을 가져 옵니다.

     

    결과에서 볼수 있듯이 시작가, 최고가, 종가, 최저가 코스닥 주식의 1년간 개수와 평균(mean), 표준편차(Standard deviation), 최소값, 25%, 50%, 75%에서의 값, 최고값(max)을 짧은 시간만에 분석해서 알려줍니다.

     

    반응형