파이썬(Python)/pandas

[Python] 코스피 1년 차트 그리기(Pandas, Matplotlib)

끄적끄적아무거나 2021. 10. 30. 09:10
반응형

 

목차

     

     

     

     

     

     

     

     

    [Python] 코스피 1년 차트 그리기 : 진행 과정

     

     

    이번 포스트에서는 지난 1년간의 코스피 차트를 그려볼 예정입니다. 이번 프로젝트를 진행하기 위해 아래와 같은 과정이 필요합니다. 

     

    1. 코스피 1년 동안의 차트 데이터 수집
    2. 판다스를 이용해서 차트 데이터를 테이블로 정리하기
    3. 정리된 테이블 중 비교를 원하는 데이터를 가져오기
    4. 그래프로 만들기
    5. 데이터 분석하기

     

    1번 과정은 Web Scrawling을 통해서 가능합니다. 웹 스크롤링의 방법은 아래 링크를 참조하시면 됩니다. 

     

    https://scribblinganything.tistory.com/372

     

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

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

    scribblinganything.tistory.com

     

    하지만 이전 과정에서 네이버 금융이 아닌 야후 파이낸스에서 CSV로 쉽게 받아오는 방법에 대해 알아 보았습니다. 야후 파이낸스에서 KOSPI 검색 후 차트 정보를 확인해보시면 CSV 파일을 받을 수 있는 링크가 있습니다.

     

    혹시 그래도 이해가 안되신다면 아래 링크를 통해 확인하시면 됩니다. 

     

    https://scribblinganything.tistory.com/374

     

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

    목차 [Python] 코스피, 코스닥 값 불러와서 분석하기 : 설정 주식에 관심이 많아서 코딩으로 투자에 접목해볼 만한것이 뭐가 있나 생각하던 참에 최근에 사용하고 있던 파이썬의 판다스(pandas)라는

    scribblinganything.tistory.com

     

     

     

     

     

    [Python] 코스피 1년 차트 그리기: 내용 분석하기

     

     

    차트 분석과 차트 그리기를 위해서는 Pandas와 Matplotlib 이라는 라이브러리가 필요합니다. 없으시다면 "pip install 모듈명" 명령어로 설치하시면 됩니다.  

     

    판다스에서 제공하는 read_csv 함수를 통해서 읽을 파일을불러오고 테이블에 넣어서 확인하고 싶은 데이터만 불러서 확인해보겠습니다. 

     

     

    코드>>

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('kospi.csv')
    
    print(df)
    print(df["High"].describe())
    print(df["Low"].describe())

     

     

    결과>>

               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]
    count     247.000000
    mean     3063.837847
    std       235.246708
    min      2302.639893
    25%      3025.574951
    50%      3145.810059
    75%      3214.344971
    max      3316.080078
    Name: High, dtype: float64
    count     247.000000
    mean     3024.246762
    std       235.873980
    min      2266.929932
    25%      2981.599976
    50%      3106.969971
    75%      3183.654908
    max      3295.439941
    Name: Low, dtype: float64

     

     

    코드설명>>

    1~2번 라인: pandas와 matplotlib 라이브러리를 import 합니다.

    4번 라인: read_csv() 함수로 야후 금융(Yahoo Finance)에서 받은 kospi.csv 파일을 불러 옵니다.

    6번 라인: 판다스 테이블 값을 읽지만 일반 print 문의 경우 데이터가 많을 때 위/아래 5줄씩 불러 옵니다.

    7번 라인: "High" 열의 데이터만 가져와서 describe 함수를 사용해서 해당 열의 내용을 분석합니다. (개수, 표준편차, 평균, 최소, 최대, 25/50/75% 값)

    8번 라인: "Low" 열의 데이터만 가져와서 describe 함수를 사용해서 해당 열의 내용을 분석합니다. 

     

    Pandas에서 Column의 값을 추출할때는 딕셔너리(Dictionary)에 키 값을 넣는 것처럼 사용하면 됩니다. Row(행)의 값을 가져올 때는 loc(), iloc() 함수를 사용하면 됩니다.

    반응형

     

     

     

    [Python] 코스피 1년 차트 그리기: 그래프 그리기

     

    우선 High 열의 값으로만 그래프를 그려 보겠습니다. 

     

    코드>>

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('kospi.csv')
    
    print(df)
    print(df["High"].describe())
    print(df["Low"].describe())
    
    df["High"].plot()
    plt.show()

     

     

    결과>>

     

     

    코드 설명>>

    10~11번 라인: matplotlib의 plot과 show 함수로 그래프를 쉽게 그렸습니다. matplotlib 사용법에 대해 조금 더 상세히 알고 싶으시면 아래 링크를 참조 하시면 됩니다. 

     

    https://scribblinganything.tistory.com/category/%ED%8C%8C%EC%9D%B4%EC%8D%AC%28Python%29/matplotlib

     

    '파이썬(Python)/matplotlib' 카테고리의 글 목록

    파이썬(python), flask, db, coding, 코딩, 주식, IT, 진동, 피로 등 여러가지 공부합니다.

    scribblinganything.tistory.com

     

     

     

    이번에는 High열과 Low 열의 결과를 한 화면에 두개의 그래프로 표현 해보겠습니다.

     

     

    코드>>

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('kospi.csv')
    
    print(df)
    print(df["High"].describe())
    print(df["Low"].describe())
    
    
    fig, ax1 = plt.subplots()
    ax1.plot(df["High"], color="red")
    ax1.tick_params(axis='y', labelcolor="red")
    
    ax2 = ax1.twinx() #한 그래프에 두번째 plot 넣기
    ax2.plot(df["Low"], color="blue")
    ax2.tick_params(axis='y', labelcolor="blue")
    
    plt.show()

     

    결과>>

     

     

     

     

    마지막으로 히스토그램(histogram)으로 코스피(Kospi) 값을 표현해보겠습니다. 

    히스토그램으로 표현하면 코스피 수치가 어디에 편중되어 있는지를 시각적으로 보기 편합니다.

     

    코드>>

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.read_csv('kospi.csv')
    
    print(df)
    print(df["High"].describe())
    print(df["Low"].describe())
    
    df["High"].plot(kind = 'hist')
    plt.show()

     

    결과>>

     

     

     

    반응형