Lấy mẫu lại dữ liệu chứng khoán Python
Xin chào và chào mừng đến với phần 4 của loạt bài hướng dẫn Python for Finance. Trong hướng dẫn này, chúng ta sẽ tạo biểu đồ hình nến/OHLC dựa trên cột Adj Close, điều này sẽ cho phép tôi đề cập đến việc lấy mẫu lại và một vài khái niệm trực quan hóa dữ liệu khác Show Biểu đồ OHLC, được gọi là biểu đồ nến, là biểu đồ cô đọng tất cả dữ liệu mở, cao, thấp và đóng trong một định dạng đẹp. Thêm vào đó, nó tạo ra màu sắc đẹp, và hãy nhớ những gì tôi đã nói với bạn về các biểu đồ đẹp mắt? Mã bắt đầu đã được trình bày cho đến thời điểm này trong các hướng dẫn trước import datetime as dt import matplotlib.pyplot as plt from matplotlib import style import pandas as pd import pandas_datareader.data as web style.use('ggplot') df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0) Thật không may, việc tạo biểu đồ hình nến ngay từ Pandas không được tích hợp sẵn, mặc dù việc tạo dữ liệu OHLC là. Một ngày nào đó, tôi chắc chắn rằng loại biểu đồ này sẽ được cung cấp, nhưng hôm nay thì không. Không sao đâu, chúng tôi sẽ làm cho nó xảy ra. Đầu tiên, chúng ta cần thực hiện hai lần nhập mới from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates Lần nhập đầu tiên là loại biểu đồ OHLC từ matplotlib và lần nhập thứ hai là loại from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates3 đặc biệt. chủ yếu chỉ là một nỗi đau ở mông, nhưng đó là loại ngày cho biểu đồ matplotlib. Pandas tự động xử lý việc đó cho bạn, nhưng, như tôi đã nói, chúng tôi chưa có sự xa xỉ đó với chân nến Đầu tiên, chúng tôi cần dữ liệu OHLC thích hợp. Dữ liệu hiện tại của chúng tôi có các giá trị OHLC và, trừ khi tôi nhầm, Tesla chưa bao giờ chia tách, nhưng bạn sẽ không luôn may mắn như vậy. Do đó, chúng tôi sẽ tạo dữ liệu OHLC của riêng mình, điều này cũng sẽ cho phép chúng tôi hiển thị một chuyển đổi dữ liệu khác đến từ Pandas df_ohlc = df['Adj Close'].resample('10D').ohlc() Những gì chúng tôi đã làm ở đây là tạo một khung dữ liệu mới, dựa trên cột from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates4, được lấy mẫu lại với khoảng thời gian 10 ngày và việc lấy mẫu lại là from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates5 (đóng cửa cao thấp). Chúng tôi cũng có thể làm những việc như from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates6 hoặc from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates7 cho trung bình 10 ngày hoặc tổng 10 ngày. Xin lưu ý rằng mức trung bình 10 ngày này sẽ là mức trung bình 10 ngày, không phải mức trung bình luân phiên. Vì dữ liệu của chúng tôi là dữ liệu hàng ngày nên việc lấy mẫu lại thành dữ liệu 10 ngày sẽ thu nhỏ đáng kể kích thước dữ liệu của chúng tôi. Đây là cách bạn có thể chuẩn hóa nhiều bộ dữ liệu. Đôi khi, bạn có thể có dữ liệu theo dõi mỗi tháng một lần vào ngày đầu tiên của tháng, dữ liệu khác được ghi vào cuối mỗi tháng và cuối cùng là một số dữ liệu được ghi hàng tuần. Bạn có thể lấy mẫu lại khung dữ liệu này vào cuối tháng, hàng tháng và bình thường hóa tất cả một cách hiệu quả. Đó là một tính năng nâng cao hơn của Pandas mà bạn có thể tìm hiểu thêm từ chuỗi Pandas nếu muốn Chúng tôi muốn vẽ biểu đồ cả dữ liệu nến cũng như dữ liệu khối lượng. Chúng tôi KHÔNG PHẢI lấy mẫu lại dữ liệu khối lượng, nhưng chúng tôi nên làm, vì dữ liệu này quá chi tiết so với dữ liệu định giá 10D của chúng tôi ________số 8_______Chúng tôi đang sử dụng tổng ở đây, vì chúng tôi thực sự muốn biết tổng khối lượng giao dịch trong 10 ngày đó, nhưng bạn cũng có thể sử dụng giá trị trung bình thay thế. Bây giờ nếu chúng ta làm print(df_ohlc.head()) Chúng tôi nhận được open high low close Date 2010-06-29 23.889999 23.889999 15.800000 17.459999 2010-07-09 17.400000 20.639999 17.049999 20.639999 2010-07-19 21.910000 21.910000 20.219999 20.719999 2010-07-29 20.350000 21.950001 19.590000 19.590000 2010-08-08 19.600000 19.600000 17.600000 19.150000 Điều đó được mong đợi, nhưng, bây giờ chúng tôi muốn chuyển thông tin này sang matplotlib, cũng như chuyển đổi ngày thành phiên bản from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates3. Vì chúng ta sẽ vẽ biểu đồ các cột trong Matplotlib, nên chúng ta thực sự không muốn ngày tháng là một chỉ mục nữa, vì vậy chúng ta có thể làm df_ohlc = df_ohlc.reset_index() Bây giờ from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates9 chỉ là một cột thông thường. Tiếp theo, chúng tôi muốn chuyển đổi nó df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num) Bây giờ chúng ta sẽ thiết lập hình fig = plt.figure() ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1) ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1,sharex=ax1) ax1.xaxis_date() Mọi thứ ở đây bạn đã thấy, ngoại trừ df_ohlc = df['Adj Close'].resample('10D').ohlc()0. Điều này làm cho chúng tôi là chuyển đổi trục từ số mdate thô thành ngày Bây giờ chúng ta có thể vẽ biểu đồ nến candlestick_ohlc(ax1, df_ohlc.values, width=2, colorup='g') Sau đó làm âm lượng from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates0 Hàm df_ohlc = df['Adj Close'].resample('10D').ohlc()1 sẽ vẽ đồ thị x, y, sau đó điền gì vào/giữa. Trong trường hợp của chúng tôi, chúng tôi đang chọn 0 from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates1 Mã đầy đủ cho hướng dẫn này from matplotlib.finance import candlestick_ohlc import matplotlib.dates as mdates2 Trong một số hướng dẫn tiếp theo, chúng ta sẽ bỏ qua phần trực quan hóa một chút trong khi chúng ta tập trung vào việc thu thập dữ liệu và xử lý dữ liệu đó hướng dẫn tiếp theo. Tự động lấy danh sách S&P 500 - Lập trình Python cho Tài chính p. 5
|