Làm thế nào để bạn khớp các thanh lỗi trong python?

nhập khẩu cốt truyện. graph_objects as go import numpy as np x_theo = np. linspace(-4, 4, 100) sincx = np. sin(x_theo) x = [-3. 8, -3. 03, -1. 91, -1. 46, -0. 89, -0. 24, -0. 0, 0. 41, 0. 89, 1. 01, 1. 91, 2. 28, 2. 79, 3. 56] y = [-0. 02, 0. 04, -0. 01, -0. 27, 0. 36, 0. 75, 1. 03, 0. 65, 0. 28, 0. 02, -0. 11, 0. 16, 0. 04, -0. 15] vả = đi. Hình () hình. add_trace(đi. Phân tán( x=x_theo, y=sincx, name='sinc(x)' )) hình. add_trace(đi. Phân tán( x=x, y=y, mode='markers', name='measured', error_y=dict( type='constant', value=0. 1, màu='tím', độ dày=1. 5, width=3, ), error_x=dict( type='constant', value=0. 2, màu='tím', độ dày=1. 5, chiều rộng=3, ), điểm đánh dấu=dict(color='purple', size=8) )) hình. chỉ()

Trong các nghiên cứu khoa học, việc hiển thị các thanh lỗi trong hình ảnh mô tả của bạn là điều không thể tránh khỏi. Nắm giữ thông tin về tính biến thiên của dữ liệu của bạn, chúng là phần bổ sung cần thiết cho điểm trung bình của bạn. Tuy nhiên, hình dung khoa học có xu hướng đẹp bên trong hơn bên ngoài

Là nhà khoa học dữ liệu, chúng ta được dạy sử dụng hình ảnh trực quan hấp dẫn để kể chuyện. Bất cứ thứ gì khiến người xem mất tập trung vào điểm chính mà chúng tôi đang cố gắng thực hiện đều được khuyên nên loại bỏ. Điều này hoàn toàn hợp lý, vì người quản lý và khách hàng thường không nắm rõ các số liệu thống kê cũng như không có nhiều thời gian và năng lượng để dành cho hình ảnh của bạn

Để diễn giải các thanh lỗi, bạn cần

  • kiến thức cơ bản về thống kê mô tả
  • thông tin về loại thanh lỗi nào được hiển thị (thường là độ lệch chuẩn hoặc lỗi chuẩn)

Cả hai giả định này đều xung đột với mục đích của người kể chuyện dữ liệu. Bạn muốn bất cứ ai hiểu kết quả mà không cần phải đọc qua tám dòng ghi chú

Người kể chuyện dữ liệu coi các thanh lỗi là trở ngại, bởi vì chúng ngăn cản việc giải thích dữ liệu của họ một cách dễ dàng, thoải mái và thống nhất. Mặt khác, các nhà khoa học được đào tạo để hiển thị tất cả thông tin cần thiết và để người đọc tự giải thích kết quả. Cả hai cách tiếp cận này đều không vượt trội. Việc đơn giản hóa quá mức các kết quả trong các báo cáo kỹ thuật hoặc các cuộc họp của nhóm dữ liệu cũng gây bất lợi như việc làm phiền người quản lý và khách hàng của bạn bằng các bài giảng tự phát về thống kê

Đối với bất kỳ ai sẵn sàng biện minh cho “khoa học” trong chức danh công việc khoa học dữ liệu của họ, việc tìm hiểu thời điểm và cách sử dụng các thanh lỗi là điều không thể tránh khỏi

Khi tôi tạo hình ảnh trực quan cho bài báo khoa học đầu tiên của mình, tôi đã thử rất nhiều phương pháp khác nhau. Hãy để tôi tiết kiệm thời gian cho bạn và giới thiệu cho bạn phương pháp nhanh chóng và dễ dàng mà tôi tìm thấy. Tất cả những gì bạn cần để theo dõi bài viết này và tự mình áp dụng phương pháp là một số kiến ​​thức cơ bản về thống kê, python và thư viện pandas

C phép tính

Có hai tham số chính phù hợp với các thanh lỗi

  1. (2x) Độ lệch chuẩn
  2. Lỗi tiêu chuẩn

Tôi đặc biệt khuyên bạn nên làm quen với các tham số này để bạn có thể đưa ra quyết định có học thức về việc sử dụng tham số nào cho hình ảnh hóa của mình. Trong bài viết này của Claudia Clement, các khái niệm được giải thích một cách hoàn hảo

Trước tiên, chúng tôi cần nhập thư viện và tải dữ liệu của mình. Chúng tôi sẽ sử dụng bộ dữ liệu giá bơ từ kaggle. Bạn không cần biết nhiều về tập dữ liệu. Tất cả những gì chúng tôi muốn biết là liệu bơ thông thường và bơ hữu cơ (cột “loại”) có giá khác nhau hay không (cột “Giá trung bình”)

# Imports
import pandas as pd
import numpy as np # for calculating standard deviation and mean
import scipy.stats as sp # for calculating standard error
import matplotlib.pyplot as plt # for improving our visualizations
# Read data
avocado = pd.read_csv("avocado.csv")

Cách dễ nhất để thực hiện các tính toán của chúng tôi là sử dụng pandas df. chức năng nhóm. Hàm này có nhiều ứng dụng hữu ích, nhưng trong trường hợp này, chúng tôi sẽ sử dụng nó để tính toán tổng hợp các tham số thống kê. Dưới đây, bạn có thể xem nguyên mẫu mã

df.groupby("col_to_group_by").agg([func_1, func_2, func_3])

chúng tôi sử dụng df. theo nhóm. agg để biết cách nhanh chóng và dễ dàng tính toán các tham số thống kê để so sánh nhóm

Chúng tôi có khung dữ liệu và cột để nhóm theo, vì vậy chúng tôi cần tìm các chức năng phù hợp ngay bây giờ. Hãy nhớ rằng, chúng ta muốn giá trị trung bình, độ lệch chuẩn x 2 và sai số chuẩn. Đây là những chức năng chúng ta cần

NumPy

  • Nghĩa là. np. nghĩa là
  • Độ lệch chuẩn. np. tiêu chuẩn

khoa học viễn tưởng

  • Lỗi tiêu chuẩn. scipy. số liệu thống kê. sem

Bởi vì df. theo nhóm. Hàm agg chỉ lấy danh sách các hàm làm đầu vào, chúng ta không thể chỉ sử dụng np. std * 2 để có được độ lệch chuẩn gấp đôi của chúng tôi. Tuy nhiên, chúng ta chỉ có thể viết chức năng của riêng mình

def double_std(array):
return np.std(array) * 2

Bây giờ, hãy sử dụng mã nguyên mẫu và điền vào chỗ dành sẵn

# df.groupby("col_to_group_by").agg([func_1, func_2, func_3])
avocado_prices =
avocado.groupby("type").agg([np.mean, double_std, sp.sem])

Đẹp. Bây giờ, hãy chỉ chọn cột “Giá trung bình”, vì chúng ta không cần phần còn lại

avocado_prices = avocado_prices["AveragePrice"]

bơ_prices. head() hiện cung cấp cho chúng tôi đầu ra sau

Bảng 1 — df. theo nhóm. đầu ra agg

Tuyệt vời. Bây giờ chúng tôi có tất cả dữ liệu chúng tôi cần

Hình dung

Pandas có một chức năng thực sự hữu ích cho phép chúng tôi nhanh chóng có được hình dung đầu tiên mà không cần thực hiện toàn bộ quy trình matplotlib. df. kịch bản

Về cơ bản, nó là một đại diện matplotlib trong pandas

Để có được một biểu đồ đầu tiên mà không có bất kỳ thanh lỗi nào, chúng ta chỉ cần một dòng mã

avocado_prices.plot(kind = "barh", y = "mean", legend = False, title = "Average Avocado Prices")

đầu ra

Hình 1 - Không có thanh lỗi

Có thể thấy bơ hữu cơ có giá trung bình cao hơn so với bơ thông thường. Nhưng đây có phải là một sự khác biệt thực sự hay chỉ là sự lây lan ngẫu nhiên? . Tất cả những gì chúng ta cần làm là gán tham số thống kê cho đối số xerr. Hãy bắt đầu với tham số “double_std”

avocado_prices.plot(kind = "barh", y = "mean", legend = False, title = "Average Avocado Prices", xerr = "double_std")

đầu ra

Hình 2 - Độ lệch chuẩn x 2 thanh lỗi

họ đây rồi. Ngay cả khi không có bất kỳ kiến ​​thức chuyên sâu nào về cách diễn giải các thanh lỗi này, chúng ta có thể thấy rằng mức độ biến động của giá là khá cao và các thanh lỗi của mỗi thanh chạm vào thanh kia. Có lẽ sự khác biệt không rõ ràng và lớn như chúng ta mong đợi khi chỉ nhìn thấy cốt truyện đầu tiên? . Chỉ cần lưu ý rằng cốt truyện này để lại cho chúng ta một ấn tượng khác với phần trước

Điều gì xảy ra nếu chúng ta vẽ lỗi tiêu chuẩn tiếp theo?

avocado_prices.plot(kind = "barh", y = "mean", legend = False, title = "Average Avocado Prices", xerr = "sem")

đầu ra

Hình 3 - Thanh lỗi tiêu chuẩn

Gì? . Sai số chuẩn nhạy cảm với kích thước mẫu, vì nó thấp hơn trong các mẫu lớn so với các mẫu nhỏ. Mẫu bơ có hơn 250k lượt quan sát nên kết quả hợp lý. Cốt truyện thứ ba này lại để lại ấn tượng hoàn toàn khác

Việc bạn sử dụng các thanh lỗi có tạo ra sự khác biệt lớn trong “câu chuyện” mà hình ảnh hóa của bạn kể hay không và cách bạn sử dụng như thế nào. Điều quan trọng là phải hiểu số liệu thống kê đằng sau các thanh lỗi để sử dụng và giải thích chúng một cách chính xác

Cho đến nay, chúng tôi đã nhận được kết quả rất tốt chỉ từ một dòng mã. Nếu chúng ta dành thêm thời gian để cải thiện khả năng trực quan hóa của mình, chúng ta có thể nhận được kết quả như Hình 4

________số 8_______

đầu ra

Hình 4 - Biểu đồ cuối cùng

Tạo các thanh lỗi trong python rất dễ dàng. Sử dụng một số chức năng gấu trúc nâng cao, chúng ta có thể chuyển từ khung dữ liệu sang trực quan hóa có (hoặc không có) thanh lỗi chỉ trong hai dòng mã. Tuy nhiên, nếu bạn chưa tìm hiểu số liệu thống kê đằng sau các thanh lỗi, trước tiên bạn cần làm điều đó. Bạn đã thấy ba ô khác nhau như thế nào (không có thanh lỗi so với. độ lệch chuẩn nhân đôi so với. lỗi tiêu chuẩn) nhìn. Lúc đầu, điều này có vẻ đáng sợ, nhưng khi bạn đã học nó, đó là một công cụ rất hữu ích khác trong bộ kỹ năng khoa học dữ liệu của bạn