Trực quan hóa dữ liệu chuỗi thời gian Python

Chuỗi thời gian là một chuỗi các điểm dữ liệu [quan sát] được sắp xếp theo trình tự thời gian và cách đều nhau theo thời gian. Một số ví dụ đáng chú ý về dữ liệu chuỗi thời gian là giá cổ phiếu, kỷ lục về lượng mưa hàng năm hoặc số lượng khách hàng sử dụng ứng dụng chia sẻ xe đạp hàng ngày. Dữ liệu chuỗi thời gian thể hiện các mẫu nhất định, chẳng hạn như giá cao và thấp của giá khách sạn tùy theo mùa

InfluxDB là cơ sở dữ liệu chuỗi thời gian [TSDB] hàng đầu, hiệu suất cao, hỗ trợ các nhà phát triển xây dựng các ứng dụng phân tích thời gian thực, IoT và đám mây với dữ liệu chuỗi thời gian

Trong bài viết này, bạn sẽ tìm hiểu cách tận dụng các khả năng của InfluxDB cùng với tính linh hoạt và sức mạnh của Matplotlib để trực quan hóa dữ liệu chuỗi thời gian một cách hiệu quả

InfluxDB là gì?

InfluxDB là một TSDB mã nguồn mở, không liên quan được tối ưu hóa để có tính sẵn sàng cao và chức năng đọc và ghi nhanh đối với dữ liệu chuỗi thời gian được viết bằng ngôn ngữ lập trình Golang. Khả năng truy xuất và lưu trữ nhanh hơn khiến nó trở nên phổ biến đối với nhiều ứng dụng, chẳng hạn như giám sát các ứng dụng trong sản xuất, lưu trữ dữ liệu từ các cảm biến IoT và thực hiện phân tích thời gian thực. InfluxDB cung cấp nhiều tùy chọn truy cập, bao gồm các truy vấn giống như SQL

InfluxDB lý tưởng để lưu trữ dữ liệu cần xử lý nhanh sau khi đến cơ sở dữ liệu. Do đó, nó tận dụng Giao thức thời gian mạng [NTP] để đồng bộ hóa thời gian trên các hệ thống. Nó cũng sử dụng phương pháp lập chỉ mục đơn giản, mang lại lợi thế rõ ràng về tốc độ so với các TSDB khác

InfluxDB hữu ích cho tất cả các loại ứng dụng liên quan đến lượng lớn dữ liệu được đánh dấu thời gian. Dưới đây là một số ví dụ về cách các doanh nghiệp sử dụng InfluxDB cho nhiều mục đích khác nhau

  • Tín hiệu giám sát trong dây chuyền sản xuất. Texas Instruments [TI] sử dụng InfluxDB để giám sát hoạt động sản xuất và phát hiện sự bất thường trước khi chúng trở nên tốn kém. TI theo dõi hơn một nghìn tín hiệu khác nhau về các sự cố tiềm ẩn có thể trở nên rắc rối. Mục đích là xây dựng các ứng dụng có thể xác định các vấn đề nghiêm trọng và hành động một cách tự chủ

  • Nâng cao hiệu quả kết nối trong Internet vạn vật công nghiệp [IIoT]. ThingWorx Kepware sử dụng InfluxDB để giúp các công ty kết nối tài sản kế thừa của họ với cơ sở dữ liệu [tại chỗ và đám mây]. Các công ty có thể thu thập và lưu trữ dữ liệu thẻ một cách dễ dàng và ở quy mô lớn, cho phép người quản lý theo dõi các sự kiện trên nhiều thiết bị trong thời gian thực

  • Theo dõi thống kê người dùng theo thời gian thực. Index Exchange sử dụng InfluxDB để theo dõi số liệu thống kê người dùng. Trình kích hoạt cụm InfluxDB cho phép lưu trữ dữ liệu theo thời gian thực, sau đó các nhà phân tích có thể truy cập và xử lý theo thời gian thực với chi phí thấp

Trực quan hóa dữ liệu chuỗi thời gian với Matplotlib và InfluxDB

Bây giờ, hãy xem xét kỹ hơn cách sử dụng Matplotlib và InfluxDB để trực quan hóa dữ liệu chuỗi thời gian. Bạn sẽ tìm hiểu về những kiến ​​thức cơ bản về Matplotlib và xem lại một số biểu đồ mẫu, sau đó xem qua hướng dẫn sẽ chỉ cho bạn cách thiết lập và sử dụng ứng dụng khách InfluxDB Python để thực hiện các thao tác CRUD

Giới thiệu về Matplotlib

Matplotlib là một thư viện mã nguồn mở để trực quan hóa dữ liệu dưới dạng biểu đồ, sơ đồ và đồ thị. Nó được cho là thư viện vẽ sơ đồ phổ biến nhất cho Python và được sử dụng bởi các nhà khoa học dữ liệu và kỹ sư máy học trên toàn thế giới

Trong Matplotlib, các ô được phân cấp, lồng các đối tượng Python để tạo cấu trúc dạng cây. Một đối tượng hình đóng gói từng ô, như hình ở đây

"Hình" này là vùng chứa cấp cao nhất của trực quan hóa. Nó có thể có nhiều trục, về cơ bản là các ô riêng lẻ bên trong vùng chứa

Matplotlib sử dụng API được gọi là pyplot để giúp người dùng tạo trực quan hóa dễ dàng hơn — bạn không cần phải tự định cấu hình hình và trục một cách rõ ràng

Bạn cũng có thể tìm thấy các đối tượng Python điều khiển trục, dấu tick, chú thích, tiêu đề, hộp văn bản, lưới và nhiều đối tượng khác, tất cả đều có thể được tùy chỉnh

Giải phẫu của một âm mưu Matplotlib trông như thế này

Hình ảnh lịch sự của Hội thảo trực quan hóa dữ liệu

Matplotlib có thể được cài đặt bằng trình quản lý gói

pip install numpy
2 hoặc
pip install numpy
3, tùy theo sở thích của bạn

pip install matplotlib

Hoặc

conda install matplotlib

Sau đó cài đặt mô-đun Numpy như sau

pip install numpy

Thật tiện lợi khi sử dụng bí danh

pip install numpy
4 để tham chiếu mô-đun con đã nhập

import matplotlib.pyplot as plt

import numpy as np # for creating arrays

import pandas as pd # for manipulating dataframes

Với Matplotlib, bạn có thể tạo tất cả các loại trực quan hóa, chẳng hạn như biểu đồ thanh, biểu đồ hình tròn, biểu đồ radar, biểu đồ và biểu đồ phân tán. Dưới đây là một vài ví dụ cho thấy cách tạo một số loại biểu đồ cơ bản

Lô đất

plt.plot[[1, 2, 3], label='Label 1']

plt.plot[[2, 4, 3], label='Label 2']

# Add title

plt.title['Two-way line plot']

plt.legend[]

plt.show[]

Âm mưu phân tán

________số 8

Biểu đồ cột

labels = ['A', 'B', 'C', 'D']

x = np.arange[len[labels]]

width = 0.4

plt.bar[x - width / 2, [20, 25, 40, 10], width=width]

plt.bar[x + width / 2, [30, 15, 30, 20], width=width]

# Ticks and tick labels must be set manually

plt.xticks[x]

ax = plt.gca[]

ax.set_xticklabels[labels]

# Add axes and titles

ax.set_xlabel["x-axis"]

ax.set_ylabel["y-axis"]

plt.title['Bar chart']

# Show plot

plt.show[]

Biểu đồ tròn

pip install numpy
0

Thiết lập InfluxDB

Bây giờ, hãy đi sâu vào chi tiết của hướng dẫn, phần này sẽ tập trung vào phiên bản đám mây của InfluxDB. Bắt đầu rất dễ dàng nhờ có nhiều mô-đun khác nhau để thu thập, đánh giá và trực quan hóa dữ liệu

Để bắt đầu, hãy đăng ký làm người dùng miễn phí trên trang web InfluxDB Cloud. Đảm bảo xác minh tài khoản của bạn bằng cách nhấp vào liên kết được gửi đến email của bạn. Sau đó đăng nhập và chọn nhà cung cấp đám mây [AWS, Azure hoặc GCP]. Lưu ý rằng phiên bản miễn phí cung cấp số lần đọc và ghi hạn chế, tối đa 10.000 bộ dữ liệu và chính sách lưu giữ trong ba mươi ngày

Sau khi đăng ký, bạn sẽ thấy mình trên trang bảng điều khiển

Tiếp theo, điều hướng đến phần Nhóm và tạo nhóm

Điều hướng đến phần Mã thông báo API và tạo Mã thông báo API không giới hạn. Điều này rất quan trọng vì bạn sẽ ghi dữ liệu vào thùng của mình;

Sau đó, bạn sẽ muốn tạo các thư mục cần thiết, thiết lập môi trường ảo Python và cài đặt các gói cần thiết

pip install numpy
1

Tiếp theo, tạo một môi trường ảo bằng thư viện

pip install numpy
5. Lưu ý rằng nên dùng
pip install numpy
5 khi chạy Python v3. 6+. Xem tài liệu này để biết thêm thông tin

pip install numpy
4

Lưu trữ thông tin đăng nhập của bạn [mã thông báo, nhóm và tổ chức] trong tệp

pip install numpy
7. Hãy nhớ bao gồm tệp
pip install numpy
7 trong tệp
pip install numpy
9

conda install matplotlib
0

Trong tệp

import matplotlib.pyplot as plt

import numpy as np # for creating arrays

import pandas as pd # for manipulating dataframes
0, bắt đầu nhập các mô-đun dotenv và os để đọc thông tin đăng nhập từ tệp
pip install numpy
7

Sau đó, quay lại InfluxDB Cloud UI, đến phần Nguồn. Trong thư viện máy khách, hãy chọn “Python. ” Sao chép mã bên dưới Khởi tạo ứng dụng khách và dán vào tệp

import matplotlib.pyplot as plt

import numpy as np # for creating arrays

import pandas as pd # for manipulating dataframes
0

conda install matplotlib
1

Tiếp theo, chạy tệp Python của bạn

conda install matplotlib
2

Nếu không có thông báo lỗi, bạn đã kết nối thành công với InfluxDB Cloud

Sử dụng Matplotlib với InfluxDB

Hướng dẫn này sử dụng giá đóng cửa đã điều chỉnh từ Yahoo Finance cho bốn công ty công nghệ. Apple [AAPL], Amazon [AMZN], Google [GOOG] và Microsoft [MSFT], từ ngày 1 tháng 1 năm 2020 đến ngày 30 tháng 3 năm 2022. Ý tưởng là hình dung xu hướng giá của cổ phiếu trong giai đoạn COVID-19

Tải xuống và lưu dữ liệu

Đầu tiên, sử dụng thư viện yfinance để tải dữ liệu

conda install matplotlib
3

Dữ liệu đã nhập sẽ xuất hiện như sau

Sau đó, sử dụng mã này để lưu dữ liệu dưới dạng tệp CSV

conda install matplotlib
4

Chuẩn bị ghi dữ liệu

Tiếp theo, sử dụng đoạn mã sau để tải các thư viện cần thiết và liên kết với ứng dụng InfluxDB Python

conda install matplotlib
5

Tạo hàm ghi dữ liệu

Sau đó, sử dụng mã bên dưới để chuẩn bị dữ liệu CSV ở cấu trúc điểm và ghi dữ liệu đó vào bộ chứa InfluxDB có tên là bộ chứa tài chính

conda install matplotlib
6

Sử dụng Flux để truy vấn dữ liệu từ InfluxDB Cloud

Khi dữ liệu nằm trong nhóm, bạn có thể truy vấn dữ liệu đó bằng ngôn ngữ Flux và trả về khung dữ liệu [df] bằng mã sau

conda install matplotlib
7

Như bạn có thể thấy, dữ liệu trong khung dữ liệu được trình bày theo cấu trúc phẳng, với mỗi trường liên tiếp

Viết truy vấn Flux để xoay chuỗi thời gian thành khung dữ liệu

Tiếp theo, sử dụng Flux để truy vấn và xoay dữ liệu vào một khung dữ liệu với tất cả các trường được trình bày dưới dạng cột

conda install matplotlib
8

Đầu ra cho thấy dữ liệu hiện đang ở trong khung dữ liệu dự định. Tuy nhiên, như bạn có thể thấy trong ảnh chụp màn hình bên dưới, InfluxDB đã thêm các cột 'kết quả' và 'bảng' mà bạn sẽ thả trong phần tiếp theo

Bỏ các cột không liên quan

Sử dụng phương pháp

import matplotlib.pyplot as plt

import numpy as np # for creating arrays

import pandas as pd # for manipulating dataframes
3 để xóa các cột 'kết quả' và 'bảng' không liên quan đến phân tích này

conda install matplotlib
9

Khung dữ liệu cuối cùng được trình bày như sau

Chuẩn hóa khung dữ liệu để tạo biểu đồ chuyên nghiệp

Khung dữ liệu cho thấy giá cổ phiếu của AMZN và GOOG là hàng nghìn, trong khi AAPL và MSFT có giá cổ phiếu là hàng chục và hàng trăm. Vẽ sơ đồ nguyên trạng dữ liệu sẽ có hai biểu đồ ở trên cùng [AMZN và GOOG] và hai biểu đồ ở dưới cùng [MSFT và AAPL], trông sẽ không chuyên nghiệp. Để giải quyết vấn đề này, bạn có thể bình thường hóa dữ liệu chứng khoán về ngày 1, buộc giá ngày đầu tiên bắt đầu ở mức 1 đô la

Sử dụng mã sau đây để làm như vậy

pip install numpy
0

Trực quan hóa dữ liệu với Matplotlib

Cuối cùng, sử dụng mã này để tạo biểu đồ chuỗi thời gian của giá cổ phiếu

pip install numpy
1

Sau khi chạy mã, đầu ra sẽ như thế này

Phân tích dữ liệu

Như bạn có thể thấy trong cốt truyện cuối cùng, đã có sự giảm giá tạm thời trong khoảng thời gian từ tháng 3 đến tháng 4 năm 2020, khi các chính phủ công bố các biện pháp phong tỏa do COVID-19. Kể từ đó, cổ phiếu công nghệ hoạt động tương đối tốt bất chấp ảnh hưởng của COVID-19. Có một số tùy chọn có sẵn để phân tích dữ liệu chuỗi thời gian chuyên sâu hơn, cũng như cách lập dự báo thông qua các phương pháp dự báo chuỗi thời gian

Phần kết luận

Trong hướng dẫn này, bạn đã học những kiến ​​thức cơ bản về trực quan hóa chuỗi thời gian trong Matplotlib, một thư viện vẽ đồ thị phổ biến cho Python. Bạn cũng đã học cách thiết lập Đám mây InfluxDB, ghi dữ liệu vào bộ chứa và đọc dữ liệu vào Python để phân tích, sử dụng các tập lệnh Python đơn giản để thực hiện các thao tác đọc và ghi trong InfluxDB

Như bạn đã thấy, có rất nhiều sức mạnh và tính linh hoạt trong việc kết hợp các khả năng của InfluxDB và Matplotlib để tạo trực quan hóa dữ liệu chuỗi thời gian một cách hiệu quả. Bạn có thể truy cập mã nguồn đầy đủ cho hướng dẫn này trong repo GitHub này

tài nguyên bổ sung

Nếu bạn quan tâm đến một số hướng dẫn khác chỉ ra cách trực quan hóa dữ liệu với InfluxDB, hãy xem các liên kết bên dưới

  • Hướng dẫn Recharts - Tìm hiểu cách trực quan hóa dữ liệu IoT bằng thư viện biểu đồ Recharts với InfluxDB

  • Hướng dẫn Highcharts InfluxDB - Tìm hiểu cách sử dụng thư viện biểu đồ Highcharts JavaScript với InfluxDB để trực quan hóa dữ liệu thủy triều đại dương

  • Hướng dẫn React Native Victory - Hướng dẫn này cho biết cách sử dụng phiên bản React Native của thư viện biểu đồ Victory, cho phép bạn sử dụng kinh nghiệm phát triển web của mình để tạo các ứng dụng di động gốc

  • Hướng dẫn Nivo- Trong bài viết này, bạn tìm hiểu về các nguyên tắc cơ bản của thư viện biểu đồ Nivo và cách tạo các loại biểu đồ khác nhau trong khi lấy dữ liệu từ InfluxDB

  • âm mưu. js Tutorial- Sử dụng thư viện biểu đồ PlotlyJS để hiển thị dữ liệu được lưu trữ trong InfluxDB

Giới thiệu về tác giả

Armstrong Asenavi là một kỹ sư máy học và nhà phân tích dữ liệu dày dạn kinh nghiệm với thiên hướng hiểu biết sâu sắc, kinh doanh thông minh [BI], bảng điều khiển, số liệu, phân tích, mô hình hóa và trực quan hóa. Anh ấy có kinh nghiệm cần thiết với tất cả các giai đoạn của dự án kỹ thuật dữ liệu nâng cao giá trị và thông thạo các ngôn ngữ lập trình chính bao gồm Python, R, JavaScript, SQL và DAX. Ông có nền tảng vững chắc về nghiên cứu, quản lý dự án và viết báo cáo kỹ thuật. Anh ấy là một nhà phân tích, có tư duy phản biện và dựa trên dữ liệu. Armstrong giao tiếp rõ ràng và có thể dịch thông tin phức tạp thành các giải pháp khả thi. Anh ấy cộng tác tốt với các thành viên trong nhóm và phát triển mạnh trong môi trường làm việc nhóm

Cách tốt nhất để trực quan hóa dữ liệu chuỗi thời gian là gì?

Biểu đồ đường có lẽ là cách đơn giản nhất để trực quan hóa dữ liệu chuỗi thời gian. Nó sử dụng các điểm được kết nối để minh họa những thay đổi. Là biến độc lập, thời gian trong biểu đồ đường luôn được biểu diễn dưới dạng trục hoành.

Làm cách nào để vẽ dữ liệu thời gian trong Python?

Trong trục X, chúng ta nên có một biến DateTime. Trong trục Y, chúng ta có thể có biến mà chúng ta muốn phân tích theo thời gian. plt. phương thức plot[] được sử dụng để vẽ biểu đồ trong matplotlib .

Làm cách nào để vẽ dữ liệu chuỗi thời gian trong gấu trúc?

Sơ đồ nhiệt độ bằng Pandas . Vì chúng ta cần đặt lại chỉ mục của khung dữ liệu bằng biến ngày của mình và sau đó, áp dụng hàm plot[] nó sẽ trả về chuỗi thời gian .

Làm cách nào để vẽ dữ liệu chuỗi thời gian trong seaborn?

MatPlotLib với Python .
Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con
Tạo khung dữ liệu Pandas, df, để giữ "thời gian" chuỗi date_time và một dữ liệu biến khác, tốc độ
Tạo biểu đồ đường Seaborn với dữ liệu, "thời gian" và "tốc độ"
Xoay thông số đánh dấu bằng 45

Chủ Đề