Hướng dẫn dùng numpy rolling python
Để làm việc trên dữ liệu số, Pandas cung cấp một số biến thể như trolling, expanding và exponentially theo cấp số nhân cho thống kê window. Trong số này có tổng, trung bình, trung vị, phương sai, hiệp phương sai, tương quan, v.v. Show Nội dung chính
Nội dung chính
Bây giờ chúng ta sẽ tìm hiểu cách áp dụng từng thứ này trên các đối tượng DataFrame. 1. Hàm .rolling()Hàm này có thể được áp dụng trên một loạt dữ liệu. Chỉ định đối số window = n và áp dụng hàm thống kê thích hợp trên nó.
Kết quả :
Lưu ý - Vì kích thước window là 3, đối với hai phần tử đầu tiên có giá trị rỗng và từ phần ba giá trị sẽ là giá trị trung bình của n, n-1 và n-2 phần tử. Vì vậy, ta cũng có thể áp dụng các hàm khác nhau như đã đề cập ở trên. 2. Hàm .expanding()Hàm này có thể được áp dụng trên một loạt dữ liệu. Chỉ định đối số min_periods = n và áp dụng hàm thống kê thích hợp trên nó.
Kết quả :
3. Hàm .ewm()ewm được áp dụng trên một loạt dữ liệu. Chỉ định bất kỳ đối số com, span, halflife nào và áp dụng hàm thống kê thích hợp lên trên nó. Nó chỉ định các trọng số theo cấp số nhân.
Kết quả :
Các hàm Window được sử dụng chủ yếu để tìm các xu hướng bên trong dữ liệu bằng đồ thị bằng cách làm mịn đường cong. Nếu dữ liệu hàng ngày có nhiều biến động và có sẵn nhiều điểm dữ liệu, thì lấy mẫu và vẽ biểu đồ là một hàm và áp dụng tính toán window và vẽ biểu đồ trên kết quả là một hàm khác. Bằng những phương pháp này, ta có thể làm mịn đường cong hoặc xu hướng. Làm việc với Time Series trong PandasPandas thật sự vượt trội trong việc xử lý với Time Series. Mặc dù chức năng này một phần dựa trên datetimes và timedeltas của NumPy, nhưng Pandas cung cấp tính linh hoạt hơn nhiều. Nội dung chính
Tạo một DataFrames với Time-Series LabelsTrong phần này, bạn sẽ tạo Pandas DataFrame bằng cách sử dụng dữ liệu nhiệt độ mỗi giờ trong một ngày (đơn vị: độ C).
Và bây giờ bạn có biến temp_c, là danh sách các giá trị nhiệt độ trong một ngày. Bước tiếp theo là tạo một chuỗi ngày và giờ. Pandas cung cấp một hàm rất tiện lợi, đó là date_range() để thực hiện việc này:
date_range() chấp nhận các đối số mà bạn sử dụng để chỉ định thời gian bắt đầu hoặc kết thúc, số khoảng thời gian, tần suất, time-zone, v.v. Bây giờ bạn đã có các giá trị nhiệt độ và thời gian tương ứng, bạn có thể tạo DataFrame như sau:
Và đây là kết quả sau khi bạn đã tạo DataFrame với time-series và date-time. Indexing Và SlicingKhi bạn có Pandas DataFrame với dữ liệu time-series, bạn có thể áp dụng phương pháp slicing để chỉ lấy một phần thông tin một cách thuận tiện:
Trong ví dụ trên, mình đã trích xuất nhiệt độ từ 6 giờ sáng đến đến 6 giờ tối. Mặc dù mình chỉ cung cấp dữ liệu dưới dạng string, nhưng Pandas có thể hiểu được rằng các row labels của mình là các giá trị ngày và giờ và phân tích chúng. Resampling và RollingVí dụ ở trên đã cho chúng ta thấy cách kết hợp các date-time row labels và sử dụng phương pháp slicing để lấy thông tin bạn cần từ dữ liệu time-series. Điều này chỉ là khởi đầu. Và có những thứ còn tốt hơn. Nếu bạn muốn chia một ngày thành từng khoảng thời gian và nhận được nhiệt độ trung bình cho mỗi khoảng thời gian, thì bạn chỉ cần thực hiện một thao tác duy nhất. Pandas cung cấp phương thức .resample() để thực hiện việc đó, và bạn có thể kết hợp phương thức này với các phương thức khác như .mean() để lấy dữ liệu mà bạn đang cần:
Bây giờ chúng ta có một Pandas DataFrame mới với 6 rows. Mỗi row tương ứng với một khoảng thời gian là bốn giờ. Ví dụ: giá trị 24.325 giá trị nhiệt độ trung bình của bốn giờ đầu tiên của DataFrame temp, và giá trị là giá trị nhiệt độ trung bình của bốn cuối cùng trong ngày là 25.700. Ngoại trừ hàm .mean(), bạn có thể sử dụng .min() hoặc .max() để lấy nhiệt độ thấp nhất và cao nhất trong mỗi khoảng thời gian. Bạn cũng có thể sử dụng .sum() để lấy tổng giá trị dữ liệu, mặc dù thông tin này có thể không hữu ích khi bạn đang làm việc với nhiệt độ. Ở một số trường hợp, bạn có thể cần thực hiện một số rolling-window analysis. Điều này liên quan đến việc tính toán, thống kê cho một số hàng liền kề được chỉ định, tạo nên window of data của bạn. Bạn có thể "roll" window bằng cách chọn một tập hợp các hàng liền kề khác nhau để thực hiện các phép toán của mình. Pandas cung cấp phương pháp .rolling() cho mục đích này:
Với ví dụ trên ta có DataFrame với nhiệt độ trung bình mỗi 4 giờ cho mỗi khung window. Tham số window chỉ định kích thước di chuyển của window. Ở trong ví dụ, giá trị thứ 4 (24.325) là nhiệt độ được tính trung bình của các giờ (00:00:00, 01:00:00, 02:00:00, 03:00:00). Giá trị thứ 5 là nhiệt độ trung bình cho các giờ (01:00:00, 02:00:00, 03:00:00, 04:00:00). Và cứ thế, nhiệt độ trung bình sẽ được tính toán đến hàng cuối cùng. Với 3 hàng đầu tiên sẽ không có giá trị vì thiêu dữ liệu để tính toán. Plotting với Pandas DataFramesVới Pandas, bạn có thể visualize data hoặc tạo các plot dựa trên DataFrames. Nếu bạn muốn làm việc với plots, thì trước tiên bạn cần import matplotlib.pyplot:
Và giờ bạn có thể sử dụng pandas.DataFrame.plot() để tạo và plt.show() để hiển thị nó.
Bạn cũng có thể áp dụng .plot.line() và nhận được kết quả tương tự. Cả .plot() và .plot.line() đều có nhiều tham số tùy chọn mà bạn có thể sử dụng để chỉ định giao diện plot của mình. Bạn có thể lưu hình ảnh plot bằng cách sử dụng phương thức .getfigure() và .savefig():
Hành trình làm quen với Pandas đến đây là kết thúc! Hi vọng bạn sẽ yêu thích nó. |