[ad_1]
Trực quan hóa dữ liệu, kể chuyện dữ liệu
Hướng dẫn sẵn sàng chạy cho biết cách điều chỉnh tập dữ liệu về các bất thường về nhiệt độ toàn cầu cho đối tượng là các chuyên gia, bằng cách sử dụng Python và Altair
Bạn có biết rằng cùng một tập dữ liệu có thể được biểu diễn bằng đồ họa khác nhau dựa trên đối tượng mà chúng ta có trước mặt không? Điều này là do mỗi đối tượng có những yêu cầu khác nhau, nghĩa là mỗi đối tượng sẽ tìm kiếm nội dung nào đó khác nhau trong dữ liệu. Việc nhận biết những gì khán giả đang tìm kiếm trong biểu đồ trở nên cần thiết để xây dựng biểu đồ phù hợp với loại đối tượng đó.
Chúng tôi sẽ bao gồm:
- Phân loại đối tượng
- Yêu cầu chung đối với chuyên gia
- Nghiên cứu điển hình
Hãy bắt đầu từ đầu. Chúng tôi xem xét ba loại đối tượng cơ bản:
- Các Công chúng không biết dữ liệu cũng như chủ đề. Nhiều nhất, họ có một sự hiểu biết chung về chủ đề. Mục tiêu của họ là được thông báo về chủ đề này hoặc để giải trí.
- Chuyên gia—đây là những kỹ thuật viên rất chuyên nghiệp. Họ biết rất rõ chủ đề và dữ liệu, đồng thời mục tiêu của họ là hiểu rõ hơn về dữ liệu cũng như động cơ đằng sau một hiện tượng nhất định được dữ liệu nêu bật.
- Người ra quyết định – là những người đưa ra quyết định. Họ biết chủ đề nhưng không biết dữ liệu cụ thể. Mục tiêu của họ là đưa ra quyết định dựa trên dữ liệu.
Hình dưới đây cho thấy các loại đối tượng khác nhau và mục tiêu cụ thể của họ.
Trong bài viết này, chúng tôi sẽ tập trung vào khán giả chuyên nghiệp. Trong phần tiếp theo, chúng tôi sẽ phân tích các loại đối tượng khác. Chúng tôi sẽ sử dụng tập dữ liệu mẫu và xây dựng biểu đồ nhắm mục tiêu cụ thể đến đối tượng này. Hiển thị cùng một hình ảnh được sản xuất cho một loại khán giả khác có thể sẽ chỉ có tác động tiêu cực và làm giảm mức độ hiểu thông điệp.
Như đã đề cập, các chuyên gia biết rất rõ chủ đề này và muốn hiểu rõ hơn về dữ liệu. Do đó, chúng tôi càng đưa nhiều chi tiết dữ liệu vào biểu đồ thì chúng tôi càng đáp ứng được nhu cầu của họ. Trên thực tế, trong trường hợp này, tốt hơn là bạn nên đưa ra các giá trị cụ thể của dữ liệu mà không làm tròn quá nhiều.
Việc đưa vào biểu đồ một số yếu tố mời họ suy ngẫm, thực hiện tính toán hoặc thảo luận cũng phù hợp. Ví dụ: các chuyên gia có thể quan tâm đến:
Chúng ta muốn khán giả chuyên nghiệp của chúng ta làm gì?
- Phân tích xu hướng và phát hiện bất thường
- Tương quan với các yếu tố khác
- Dự đoán xu hướng tương lai
- Cuộc thảo luận.
Tóm lại, đối với loại đối tượng này, chúng tôi cung cấp thông tin sau dưới dạng biểu đồ:
- Chi tiết dữ liệu
- Ý tưởng để phân tích thêm.
Chúng tôi sử dụng Dị thường nhiệt độ toàn cầu tập dữ liệu do NOAA phát hành theo Giấy phép Creative Commons 1.0 Cống hiến miền công cộng toàn cầu (CC0–1.0). Chúng tôi xây dựng một biểu đồ dành riêng cho đối tượng chuyên nghiệp để thể hiện tập dữ liệu. Là một công cụ xây dựng đồ thị, chúng tôi sử dụng Python Altair, nhưng bạn có thể khái quát hóa và cũng có thể sử dụng các công cụ khác như Tableau, Energy BI hoặc Matplotlib.
Chúng tôi sẽ làm theo các bước được mô tả dưới đây:
- Tải tập dữ liệu
- Vẽ sơ đồ sơ bộ
- Thêm thông tin chi tiết cho khán giả chuyên nghiệp
- Thêm các yếu tố khuyến khích phân tích sâu hơn.
Tải tập dữ liệu
Bắt đầu bằng cách tải tập dữ liệu chưa sẵn sàng để sử dụng vì ngày không chính xác. Quá trình xử lý trước dữ liệu nằm ngoài phạm vi trực quan hóa dữ liệu, nhưng ở đây, chúng tôi báo cáo mã chuyển đổi chỉ để thuận tiện.
import pandas as pddf = pd.read_csv('supply/1850-2024.csv')
Hình dưới đây cho thấy đầu ra:
Xác định hàm để chuyển đổi, lấy năm từ bốn ký tự đầu tiên của ô và ngày từ hai ký tự tiếp theo:
# Perform to transform YYYYMM to YYYY-MM-DD
def convert_to_date(yyyymm):
12 months = int(str(yyyymm)(:4))
month = int(str(yyyymm)(4:6))
return pd.Timestamp(12 months=12 months, month=month, day=1)# Apply the conversion perform to the Date column
df('Date') = df('Date').apply(convert_to_date)
Vẽ sơ đồ sơ bộ
Điều đầu tiên chúng ta có thể làm là vẽ biểu đồ thô để biết chúng ta có dữ liệu gì. Sử dụng một dòng để thể hiện dữ liệu, như được hiển thị trong đoạn mã sau:
import altair as altchart = alt.Chart(df
).mark_line(
).encode(
x='Date',
y='Anomaly'
).properties(
width=800
)
chart
Hình dưới đây cho thấy biểu đồ kết quả:
Chúng tôi có một biểu đồ rất cơ bản cho thấy sự bất thường về nhiệt độ từ năm 1850 đến năm 2023. Giá trị được biểu thị không phải là nhiệt độ mà là sự bất thường của nhiệt độ tính bằng độ. Ví dụ, vào năm 1850, độ dị thường là 0,4 độ dưới giá trị kỳ vọng, được đặt thành 0. Biểu đồ cơ bản này cần được làm rõ.
Hãy cải thiện biểu đồ cơ bản bằng cách điều chỉnh nó cho phù hợp với khán giả chuyên nghiệp.
Thêm thông tin chi tiết cho khán giả chuyên nghiệp
Các chuyên gia là những người rất kỹ thuật, đã biết chủ đề này và muốn hiểu các chi tiết liên quan đến dữ liệu.
Để điều chỉnh biểu đồ cho các chuyên gia, hãy bắt đầu bằng cách chuyển đổi biểu đồ thành biểu đồ thanh, chỉ bằng cách sử dụng mark_bar()
chức năng.
chart = alt.Chart(df
).mark_bar(
).encode(
x='Date',
y='Anomaly'
).properties(
width=900
)chart
Hình dưới đây cho thấy biểu đồ kết quả.
Bây giờ, thay đổi màu bằng cách đặt kênh màu. Sử dụng thuộc tính bảng phối màu để thiết lập bảng phối màu. Đặt cũng reverse
thuộc tính đảo ngược màu sắc và liên kết tông màu đỏ với nhiệt độ nóng hơn và tông màu xanh lam với tông màu lạnh hơn.
chart = alt.Chart(df
).mark_bar(
).encode(
x='Date',
y='Anomaly',
shade=alt.Coloration('Anomaly', scale=alt.Scale(scheme='redblue', reverse=True))
).properties(
width=800
)chart
Hình dưới đây cho thấy biểu đồ kết quả:
Vấn đề bây giờ là nhiều thanh chồng lên nhau và không được hiển thị chính xác. Một giải pháp khả thi có thể là mở rộng chiều rộng biểu đồ hoặc giảm kích thước thanh. Một giải pháp khác liên quan đến việc nhóm dữ liệu theo thập kỷ. Hãy áp dụng giải pháp cuối cùng này: nhóm dữ liệu theo thập kỷ và loại bỏ thập kỷ trước (những năm 2020), dữ liệu chưa đầy đủ. Sử dụng các hàm Altair liên quan đến các phép biến đổi:
transform_calculate()
để tính toán một trường mới, Thập kỷtransform_aggregate()
để tổng hợp các giá trị dị thường theo thập kỷtransform_filter()
để xóa thập kỷ trước (bắt đầu từ năm 2020).
Đoạn mã sau đây cho thấy cách triển khai biểu đồ:
chart = alt.Chart(df
).mark_bar(
).encode(
x='Decade:N',
y='Anomaly',
shade=alt.Coloration('Anomaly', scale=alt.Scale(scheme='redblue', reverse=True))
).properties(
width=800
).transform_filter(
"12 months(datum.Date) < 2020"
).transform_calculate(
Decade = "(12 months(datum.Date) - 12 months(datum.Date) % 10)" # Calculate the last decade
).transform_aggregate(
Anomaly='imply(Anomaly)',
groupby=('Decade')
)chart
Hình dưới đây cho thấy biểu đồ kết quả:
Bây giờ chúng ta có thể điều chỉnh các trục bằng cách đặt tiêu đề của trục y và xoay nhãn trục x:
chart = chart.encode(
x=alt.X('Decade:O', axis=alt.Axis(
title='',
labelAngle=0,
labelExpr="datum.worth + 's'", # Add 's' to the top of every decade label
)
),
y=alt.Y('Anomaly', title='International Floor Temperature Anomalies (°C)'),
shade=alt.Coloration('Anomaly', scale=alt.Scale(scheme='redblue', reverse=True))
)chart
Đây là biểu đồ kết quả:
Chúng ta đã hoàn thành biểu đồ cơ bản. Giờ đây, chúng tôi có thể thêm thông tin chi tiết cụ thể cho đối tượng chuyên nghiệp của mình, chẳng hạn như giá trị cho từng thanh.
Hãy sử dụng hàm mark_text() để thêm nhãn cho mỗi thanh:
textual content = chart.mark_text(
align='heart',
baseline='prime',
dy = alt.expr(alt.expr.if_(alt.datum.Anomaly > 0, -15, 5))
).encode(
textual content=alt.Textual content('imply(Anomaly):Q', format='.2f'), # Format the anomaly worth with 2 decimal locations)
chart + textual content
Ngoài ra, hãy điều chỉnh phạm vi trục y để làm cho nhãn hiển thị rõ hơn.
Biểu đồ sau đây hiển thị biểu đồ kết quả:
Thông tin hữu ích khác mà khán giả của chúng tôi có thể muốn trích xuất từ biểu đồ là:
- Khoảng cách giữa những năm 2010 và 1850
- Khi nào nhiệt độ bắt đầu tăng?
Hãy thêm phần đầu tiên làm phụ đề của biểu đồ, như trong đoạn mã sau:
chart = chart.properties(
title=alt.TitleParams(
textual content='International Floor Temperature Anomalies',
subtitle='Between the 1850s and the 2010s, floor temperatures elevated by 0.94°C.',
)
)chart + textual content
Hãy thêm giây làm đường thẳng đứng tham chiếu tương ứng với năm 1977 khi nhiệt độ bắt đầu tăng:
# reference linerl_df = pd.DataFrame({
'x' : (1970),
'textual content' : (('Since 1977 temperatures', 'slowly began to extend.'))
})
rl = alt.Chart(rl_df).mark_rule(
shade='crimson',
).encode(
x='x:N'
)
text_rl = rl.mark_text(
shade = 'crimson',
baseline='prime',
align='left',
y=10,
dx=10
).encode(
textual content='textual content'
)
chart + textual content + rl + text_rl
Lưu ý rằng chúng tôi đã đặt giá trị x cho giá trị tham chiếu thành 1970, vì trục x không chứa 1977, nhưng để cụ thể hơn, chúng tôi đã thêm văn bản chỉ định năm chính xác (1977). Hình dưới đây cho thấy biểu đồ kết quả:
Thêm các yếu tố khuyến khích phân tích sâu hơn
Chúng ta muốn khán giả chuyên nghiệp của chúng ta làm gì? Các câu trả lời có thể có cho câu hỏi này bao gồm:
- Phân tích xu hướng và phát hiện bất thường
- Tương quan với các yếu tố khác
- Dự đoán xu hướng tương lai
- Cuộc thảo luận.
Hãy tập trung vào việc dự đoán các xu hướng trong tương lai và giả sử rằng chúng ta muốn khuyến khích khán giả bắt đầu thực hiện các dự đoán. Ví dụ: trong thư từ, chúng ta có thể thêm một thanh mới vào biểu đồ, biểu thị một hộp đen của những năm 2050 với dấu chấm hỏi làm nhãn. Điều này sẽ khuyến khích khán giả của chúng tôi thực hiện phân tích.
Để triển khai biểu đồ, hãy thực hiện các thao tác sau:
- Thêm hộp đen làm biểu đồ thanh mới
- Thêm văn bản đánh dấu mới với nhãn dấu chấm hỏi
- Đặt tiêu đề cho câu hỏi yêu cầu khán giả thực hiện hành động.
Đoạn mã sau thực hiện các bước được mô tả:
pred_df = pd.DataFrame({
'x' : ('2050'),
'y' : (1.2),
'textual content' : '?'
})pred = alt.Chart(pred_df
).mark_bar(
shade = 'black'
).encode(
x = 'x:N',
y = 'y'
)
pred_text = pred.mark_text(
shade = 'black',
dy=-15
).encode(
textual content = 'textual content'
)
chart = chart.properties(
title=alt.TitleParams(
textual content='How massive will the temperature anomaly be in 2050?',
subtitle='Between the 1850s and the 2010s, floor temperatures elevated by 0.94°C.'
)
)
ultimate = (chart + textual content + rl + text_rl + pred + pred_text)
ultimate
Hình dưới đây cho thấy biểu đồ kết quả:
Bây giờ, bạn đã sẵn sàng hiển thị biểu đồ của mình cho khán giả là các chuyên gia!
Trong hướng dẫn này, bạn đã học cách điều chỉnh biểu đồ cho phù hợp với đối tượng là các chuyên gia. Các chuyên gia là những người làm kỹ thuật nhằm mục đích hiểu dữ liệu, vì vậy họ muốn có những con số.
Hãy làm phép tính cho họ và trả lời các câu hỏi có thể có của họ. Ngoài ra, hãy mời họ thực hiện một số bước tiếp theo, chẳng hạn như phân tích sâu hơn.
Bạn có thể tìm thấy mã của hướng dẫn này trong kho lưu trữ GitHub này.
Bạn cũng có thể xem hướng dẫn tại liên kết sau:
Nếu bạn đã đọc được đến mức này, đối với tôi, hôm nay thế là đủ! Cảm ơn và hẹn gặp lại lần sau!
Nếu bạn muốn tăng kích thước phông chữ tiêu đề, hãy sử dụng lệnh sau:
ultimate.configure_title(
fontSize = 30,
subtitleFontSize= 20
)
[ad_2]
Source link