Kho bản đồ nhiệt python

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn từng bước cách tạo bản đồ nhiệt thị trường chứng khoán bằng thư viện Python plotly

Kho bản đồ nhiệt python
Kho bản đồ nhiệt python
Tạo bản đồ nhiệt thị trường chứng khoán với Python

Bản đồ nhiệt hiển thị khá nhiều thông tin

  • Các công ty được đặt trong các lĩnh vực khác nhau
  • Kích thước của các hộp đại diện cho vốn hóa thị trường của mỗi công ty
  • Màu sắc của mỗi cổ phiếu thể hiện sự thay đổi giá cổ phiếu so với ngày hôm trước
  • Tương tác và cho phép phóng to và thu nhỏ

thư viện

Chúng tôi sẽ sử dụng ba thư viện sau. gấu trúc, yfinance và cốt truyện

pip install pandas yfinance plotly

Lấy dữ liệu chứng khoán

Trong ví dụ này, tôi sẽ làm việc với 100 công ty được chọn ngẫu nhiên từ các công ty thuộc S&P 500

Lấy danh sách công ty S&P 500

Trang Wikipedia này chứa các công ty thuộc S&P 500. Danh sách này ở định dạng bảng, vì vậy chúng tôi có thể sử dụng gấu trúc. read_html để cạo thông tin đó trực tiếp

Lưu ý rằng có hai bảng và chúng tôi chỉ cần bảng đầu tiên

import pandas as pd
sp500 = pd.read_html(r'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0]['Symbol']

Tải xuống thông tin chứng khoán cá nhân

Chúng tôi sẽ sử dụng thư viện yfinance để tải xuống thông tin chứng khoán. Kiểm tra hướng dẫn này để giới thiệu nhanh về thư viện

Chúng tôi quan tâm đến các thông tin sau

  • Mã chứng khoán (đã được lấy từ Wikipedia)
  • lĩnh vực công ty
  • Vốn hóa thị trường của công ty
  • Thay đổi giá cổ phiếu (so với ngày giao dịch trước)

Chúng tôi sẽ khởi tạo một vài danh sách để lưu trữ thông tin trên

tickers = []
deltas = []
sectors =[]
market_caps = []

Sau đó, chúng tôi sẽ duyệt qua danh sách sp500 (chứa 100 công ty được chọn ngẫu nhiên) và tải xuống thông tin liên quan

for ticker in sp500:
    
    try:
        ## create Ticker object
        stock = yf.Ticker(ticker)
        tickers.append(ticker)

        ## download info
        info = stock.info

        ## download sector
        sectors.append(info['sector'])

        ## download daily stock prices for 2 days
        hist = stock.history('2d')

        ## calculate change in stock price (from a trading day ago)
        deltas.append((hist['Close'][1]-hist['Close'][0])/hist['Close'][0])

        ## calculate market cap
        market_caps.append(info['sharesOutstanding'] * info['previousClose'])

        ## add print statement to ensure code is running
        print(f'downloaded {ticker}')
    except Exception as e:
        print(e)

Lưu ý rằng thư viện yfinance được lấy trực tiếp từ trang web Yahoo Finance và có thể khá chậm. Chúng tôi đã bao gồm một câu lệnh in trong mã để hiển thị thông báo để chúng tôi có thể thấy mã đó đang chạy thay vì đóng băng. Kết quả là, nó phụ thuộc vào bao nhiêu công ty bạn muốn tải xuống. Để có được tất cả các công ty thuộc S&P 500, tôi khuyên bạn nên chạy mã ở chế độ nền trong khi làm việc khác

Nếu bạn chỉ muốn một tập hợp con của các công ty S&P 500, gấu trúc. phương thức sample() có thể nhanh chóng chọn một số mẫu ngẫu nhiên từ danh sách các công ty S&P 500. Ví dụ: sample(100) sẽ trả về 100 mẫu ngẫu nhiên

sp500 = sp500.sample(100)

Vẽ bản đồ nhiệt chứng khoán bằng Python Plotly

Bây giờ chúng tôi có tất cả thông tin, đã đến lúc thực hiện một số xử lý dữ liệu trước khi vẽ đồ thị

Chuẩn bị dữ liệu

Đầu tiên, chúng tôi sẽ đưa tất cả dữ liệu vào khung dữ liệu gấu trúc

df = pd.DataFrame({'ticker':tickers,
                  'sector': sectors,
                  'delta': deltas,
                  'market_cap': market_caps,
                  })

Sau đó, chúng tôi sẽ phân loại dữ liệu thành các nhóm khác nhau dựa trên sự thay đổi của giá cổ phiếu (i. e. đồng bằng). Điều này là để chỉ định màu sắc khác nhau cho mỗi công ty

Tôi đã chọn một số ngưỡng tùy ý. -100%, -2%, -1%, 0%, 1%, 2% và 100%. Bạn có thể chọn bất kỳ ban nhạc nào phù hợp với nhu cầu của bạn

Sau đó, chúng tôi bin dữ liệu bằng pd. phương pháp cắt. Chúng tôi cũng chỉ định tên màu dựa trên các thùng

color_bin = [-1,-0.02,-0.01,0, 0.01, 0.02,1]
df['colors'] = pd.cut(df['delta'], bins=color_bin, labels=['red','indianred','lightpink','lightgreen','lime','green'])
df

Khung dữ liệu kết quả trông như thế này

Kho bản đồ nhiệt python
Tìm kiếm thông tin công ty S&P 500 bằng Python

Âm mưu với cốt truyện. bày tỏ

Thư viện sơ đồ cung cấp hai lớp khác nhau (và API) để vẽ sơ đồ. Cái dễ hơn được gọi là cốt truyện. express, và cái cao cấp hơn được gọi là plotly. graph_objects. Đối với bản demo này, chúng tôi sẽ sử dụng cốt truyện. bày tỏ. Chúng ta sẽ nói về cách sử dụng cốt truyện. graph_objects trong một hướng dẫn khác vì hướng dẫn đó yêu cầu nhiều công việc chuẩn bị hơn

Plotly có một biểu đồ bản đồ nhiệt, nhưng đó không phải là thứ chúng tôi sẽ sử dụng

Thay vào đó, chúng tôi sẽ sử dụng biểu đồ sơ đồ cây, điều này rất tốt cho việc hiển thị dữ liệu phân cấp chẳng hạn như các công ty và lĩnh vực của họ