แชร์ผ่าน


การแสดงภาพสมุดบันทึกใน Microsoft Fabric

Microsoft Fabric เป็นบริการวิเคราะห์แบบรวมที่เร่งเวลาสําหรับข้อมูลเชิงลึกทั่วทั้งคลังข้อมูลและระบบข้อมูลขนาดใหญ่ การแสดงภาพข้อมูลในสมุดบันทึกเป็นคุณลักษณะสําคัญที่ช่วยให้คุณสามารถรับข้อมูลเชิงลึกลงในข้อมูลของคุณ ช่วยให้ผู้ใช้ระบุรูปแบบ แนวโน้ม และค่าผิดปกติได้อย่างง่ายดาย

เมื่อทํางานกับ Apache Spark ใน Fabric คุณมีตัวเลือกในตัวสําหรับการแสดงภาพข้อมูล รวมถึงคุณลักษณะของแผนภูมิโน้ตบุ๊ก Fabric และการเข้าถึงไลบรารีโอเพนซอร์สยอดนิยม

โน้ตบุ๊ค Fabric ยังช่วยให้คุณสามารถแปลงผลลัพธ์แบบตารางเป็นแผนภูมิแบบกําหนดเองโดยไม่ต้องเขียนโค้ดใด ๆ ทําให้สามารถใช้งานการสํารวจข้อมูลได้ง่ายและราบรื่นมากขึ้น

คําสั่งการแสดงภาพที่มีอยู่แล้วภายใน - ฟังก์ชัน display()

ฟังก์ชันการแสดงภาพที่มีอยู่ภายใน Fabric ช่วยให้คุณสามารถแปลง Apache Spark DataFrames, Pandas DataFrames และผลลัพธ์คิวรี SQL เป็นการแสดงภาพแบบโต้ตอบที่หลากหลาย

ด้วยการใช้ฟังก์ชัน แสดงผล คุณสามารถแสดง PySpark และ Scala Spark DataFrames หรือชุดข้อมูลแบบกระจายที่ยืดหยุ่น (RDDs) เป็นตารางหรือแผนภูมิแบบไดนามิกได้

คุณสามารถระบุจํานวนแถวของดาต้าเฟรมที่แสดงผลได้ ค่าเริ่มต้นคือ 1000 วิดเจ็ต แสดงผลของโน้ตบุ๊ค รองรับการดูและโปรไฟล์ แถวของดาต้าเฟรมที่ 10000 แถวมากที่สุด

สกรีนช็อตของตัวอย่างของการระบุช่วง

คุณสามารถใช้ฟังก์ชันตัวกรองบนแถบเครื่องมือส่วนกลางเพื่อนํากฎที่กําหนดเองไปใช้กับข้อมูลของคุณ เงื่อนไขตัวกรองจะถูกนําไปใช้กับคอลัมน์ที่ระบุ และผลลัพธ์จะปรากฏทั้งในมุมมองตารางและแผนภูมิ

สกรีนช็อตของตัวอย่างของการกําหนดคอลัมน์เอง

ผลลัพธ์ของคําสั่ง SQL ใช้วิดเจ็ตเอาต์พุตเดียวกันกับ การแสดงผล () ตามค่าเริ่มต้น

มุมมองตาราง dataframe ที่สมบูรณ์

การสนับสนุนการเลือกฟรีในมุมมองตาราง

ตามค่าเริ่มต้น มุมมองตาราง จะแสดงเมื่อใช้คําสั่ง display() ในสมุดบันทึก Fabric ตัวอย่าง dataframe ที่สมบูรณ์มีฟังก์ชันการเลือกฟรีที่ใช้งานง่ายออกแบบมาเพื่อเพิ่มประสบการณ์การวิเคราะห์ข้อมูลโดยการเปิดใช้งานตัวเลือกการเลือกแบบโต้ตอบที่ยืดหยุ่น คุณลักษณะนี้ช่วยให้ผู้ใช้สามารถนําทางและสํารวจกรอบข้อมูลได้อย่างมีประสิทธิภาพได้อย่างง่ายดาย

  • การเลือกคอลัมน์

    • คอลัมน์เดียว : คลิกส่วนหัวของคอลัมน์เพื่อเลือกทั้งคอลัมน์
    • หลายคอลัมน์: หลังจากเลือกคอลัมน์เดียวแล้ว ให้กดปุ่ม 'Shift' ค้างไว้ จากนั้นคลิกส่วนหัวของคอลัมน์อื่นเพื่อเลือกหลายคอลัมน์
  • การเลือกแถว

    • แถวเดียว: คลิกที่ส่วนหัวของแถวเพื่อเลือกทั้งแถว
    • หลายแถว: หลังจากเลือกแถวเดียวแล้ว ให้กดปุ่ม 'Shift' ค้างไว้ จากนั้นคลิกส่วนหัวของแถวอื่นเพื่อเลือกหลายแถว
  • ตัวอย่างเนื้อหาของเซลล์: แสดงตัวอย่างเนื้อหาของเซลล์แต่ละรายการเพื่อดูข้อมูลอย่างรวดเร็วและละเอียดโดยไม่จําเป็นต้องเขียนโค้ดเพิ่มเติม

  • สรุปคอลัมน์: รับข้อมูลสรุปของแต่ละคอลัมน์ รวมถึงการกระจายข้อมูลและสถิติหลัก เพื่อทําความเข้าใจลักษณะของข้อมูลได้อย่างรวดเร็ว

  • การเลือกพื้นที่ฟรี: เลือกเซกเมนต์แบบต่อเนื่องของตารางเพื่อดูภาพรวมของเซลล์ทั้งหมดที่เลือกและค่าตัวเลขในพื้นที่ที่เลือก

  • คัดลอกเนื้อหาที่เลือก: ในทุกกรณีการเลือก คุณสามารถคัดลอกเนื้อหาที่เลือกโดยใช้ทางลัด 'Ctrl + C' ได้อย่างรวดเร็ว ข้อมูลที่เลือกจะถูกคัดลอกในรูปแบบ CSV ทําให้ง่ายต่อการประมวลผลในแอปพลิเคชันอื่น ๆ

    GIF แบบเคลื่อนไหวที่รองรับการเลือกฟรี

การสนับสนุนการสร้างโพรไฟล์ข้อมูลผ่านบานหน้าต่างตรวจสอบ

GIF แบบเคลื่อนไหวของการแสดงตัวอย่างดาต้าเฟรมที่หลากหลาย

  1. คุณสามารถทําโปรไฟล์กรอบข้อมูลของคุณได้โดยคลิกที่ปุ่มตรวจสอบ ซึ่งมีการแจกแจงข้อมูลสรุปและแสดงสถิติของแต่ละคอลัมน์

  2. การ์ดแต่ละใบในแผนที่ด้านข้าง "ตรวจสอบ" ไปยังคอลัมน์ของ dataframe คุณสามารถดูรายละเอียดเพิ่มเติมได้โดยคลิกที่การ์ดหรือเลือกคอลัมน์ในตาราง

  3. คุณสามารถดูรายละเอียดเซลล์โดยการคลิกที่เซลล์ของตาราง คุณลักษณะนี้มีประโยชน์เมื่อ dataframe มีชนิดสตริงยาวของเนื้อหา

ปรับปรุงมุมมองแผนภูมิ DataFrame ที่สมบูรณ์

มุมมองแผนภูมิที่ได้รับการปรับปรุงในคําสั่ง display() ให้วิธีการที่ใช้งานง่ายและมีชีวิตชีวามากขึ้นในการแสดงข้อมูลของคุณ

การเพิ่มประสิทธิภาพที่สําคัญ:

  1. การสนับสนุนหลายแผนภูมิ: เพิ่มแผนภูมิสูงสุด ห้า แผนภูมิภายในวิดเจ็ตการแสดงผลเดียว () เอาต์พุตโดยการเลือก แผนภูมิใหม่ ช่วยให้สามารถทําการเปรียบเทียบระหว่างคอลัมน์ที่แตกต่างกันได้อย่างง่ายดาย

  2. คําแนะนําแผนภูมิอัจฉริยะ: รับรายการของแผนภูมิที่แนะนําตาม DataFrame ของคุณ เลือกแก้ไขการแสดงภาพที่แนะนํา หรือสร้างแผนภูมิแบบกําหนดเองตั้งแต่เริ่มต้น

GIF แบบเคลื่อนไหวของแผนภูมิที่แนะนํา

  1. การกําหนดค่าที่ยืดหยุ่น: ปรับแต่งการแสดงภาพของคุณด้วยการตั้งค่าที่ปรับได้ซึ่งปรับเปลี่ยนได้ตามชนิดแผนภูมิที่เลือก

    หมวดหมู่ การตั้งค่าพื้นฐาน คำอธิบาย:
    ชนิดแผนภูมิ ฟังก์ชันการแสดงผลสนับสนุนชนิดแผนภูมิที่หลากหลาย รวมถึงแผนภูมิแท่ง แผนภูมิกระจาย กราฟเส้น ตาราง Pivot และอื่น ๆ
    คำนำหน้าชื่อ คำนำหน้าชื่อ ชื่อของแผนภูมิ
    คำนำหน้าชื่อ ชื่อเรื่องรอง ซับไตเติลของแผนภูมิพร้อมคําอธิบายเพิ่มเติม
    ข้อมูล แกน X ระบุคีย์ของแผนภูมิ
    ข้อมูล แกน Y ระบุค่าของแผนภูมิ
    คำอธิบายสัญลักษณ์ แสดงคําอธิบายแผนภูมิ เปิด/ปิดใช้งานคําอธิบายแผนภูมิ
    คำอธิบายสัญลักษณ์ ฐานะ กําหนดตําแหน่งของคําอธิบายแผนภูมิ
    อื่นๆ กลุ่มชุดข้อมูล ใช้การกําหนดค่านี้เพื่อกําหนดกลุ่มสําหรับการรวม
    อื่นๆ การรวม ใช้วิธีนี้เพื่อรวมข้อมูลในการแสดงภาพของคุณ
    อื่นๆ แบบ เรียง ซ้อน กําหนดค่าลักษณะการแสดงผลของผลลัพธ์
    อื่นๆ ค่าหายไปและค่า NULL กําหนดค่าวิธีแสดงค่าแผนภูมิที่หายไปหรือ NULL

    หมายเหตุ

    นอกจากนี้ คุณสามารถระบุจํานวนแถวที่แสดง ด้วยการตั้งค่าเริ่มต้นที่ 1,000 วิดเจ็ต การแสดงผล ของสมุดบันทึกสนับสนุนการดูและการทําโปรไฟล์สูงสุด 10,000 แถวของ DataFrame เลือก การรวม ผลลัพธ์ทั้งหมด จากนั้นเลือก นําไปใช้ เพื่อนําการสร้างแผนภูมิจากกรอบข้อมูลทั้งหมดไปใช้ งาน Spark จะถูกทริกเกอร์เมื่อการตั้งค่าแผนภูมิเปลี่ยนแปลง ซึ่งอาจใช้เวลาหลายนาทีในการคํานวณและแสดงแผนภูมิให้เสร็จสมบูรณ์

    หมวดหมู่ การตั้งค่าขั้นสูง คำอธิบาย:
    สี ธีม กําหนดชุดสีธีมของแผนภูมิ
    แกน X ป้ายชื่อ ระบุป้ายชื่อไปยังแกน X
    แกน X สเกล ระบุฟังก์ชันมาตราส่วนของแกน X
    แกน X ช่วง ระบุช่วงค่าแกน X
    แกน Y ป้ายชื่อ ระบุป้ายชื่อไปยังแกน Y
    แกน Y สเกล ระบุฟังก์ชันมาตราส่วนของแกน Y
    แกน Y ช่วง ระบุช่วงค่าแกน Y
    การแสดงผล แสดงป้ายชื่อ แสดง/ซ่อนป้ายชื่อผลลัพธ์บนแผนภูมิ

    การเปลี่ยนแปลงการกําหนดค่าจะมีผลทันที และการกําหนดค่าทั้งหมดจะถูกบันทึกลงในเนื้อหาของสมุดบันทึกโดยอัตโนมัติ

    สกรีนช็อตของตัวอย่างการกําหนดค่าแผนภูมิ

  2. คุณสามารถ เปลี่ยนชื่อทําสําเนาลบ หรือ ย้าย แผนภูมิในเมนูแท็บแผนภูมิได้อย่างง่ายดาย คุณยังสามารถลากแล้วปล่อยแท็บเพื่อจัดลําดับใหม่ได้อีกด้วย แท็บแรกจะแสดงเป็นค่าเริ่มต้นเมื่อเปิดสมุดบันทึก

    สกรีนช็อตของตัวอย่างของแผนภูมิการดําเนินงาน

  3. แถบเครื่องมือแบบโต้ตอบจะพร้อมใช้งานในประสบการณ์แผนภูมิใหม่เมื่อผู้ใช้โฮเวอร์เหนือแผนภูมิ การดําเนินการสนับสนุน เช่น ซูมเข้า ซูมออก เลือกเพื่อซูม, รีเซ็ต, เลื่อน, แก้ไขคําอธิบายประกอบ ฯลฯ

    สกรีนช็อตของตัวอย่างของแถบเครื่องมือแผนภูมิ

    นี่คือตัวอย่างของคําอธิบายประกอบแผนภูมิ

    สกรีนช็อตของตัวอย่างของคําอธิบายประกอบแผนภูมิ

มุมมองสรุป display()

ใช้ การแสดงผล(df, summary = true) เพื่อตรวจสอบสรุปสถิติของ Apache Spark DataFrame ที่ระบุ ข้อมูลสรุปประกอบด้วยชื่อคอลัมน์ ชนิดคอลัมน์ ค่าที่ไม่ซ้ํากัน และค่าที่ขาดหายไปสําหรับแต่ละคอลัมน์ คุณยังสามารถเลือกคอลัมน์เฉพาะเพื่อดูค่าต่ําสุด ค่าสูงสุด ค่าเฉลี่ย และค่าเบี่ยงเบนมาตรฐานได้

GIF แบบเคลื่อนไหวของมุมมองสรุป

ตัวเลือก displayHTML()

สมุดบันทึกผ้ารองรับกราฟิก HTML โดยใช้ฟังก์ชัน displayHTML

รูปภาพต่อไปนี้เป็นตัวอย่างของการสร้างการแสดงภาพโดยใช้ D3.js

สกรีนช็อตของตัวอย่างแผนภูมิที่สร้างขึ้นโดยใช้ D3.js

หากต้องการสร้างการแสดงภาพนี้ ให้เรียกใช้โค้ดต่อไปนี้

displayHTML("""<!DOCTYPE html>
<meta charset="utf-8">

<!-- Load d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>

<!-- Create a div where the graph will take place -->
<div id="my_dataviz"></div>
<script>

// set the dimensions and margins of the graph
var margin = {top: 10, right: 30, bottom: 30, left: 40},
  width = 400 - margin.left - margin.right,
  height = 400 - margin.top - margin.bottom;

// append the svg object to the body of the page
var svg = d3.select("#my_dataviz")
.append("svg")
  .attr("width", width + margin.left + margin.right)
  .attr("height", height + margin.top + margin.bottom)
.append("g")
  .attr("transform",
        "translate(" + margin.left + "," + margin.top + ")");

// Create Data
var data = [12,19,11,13,12,22,13,4,15,16,18,19,20,12,11,9]

// Compute summary statistics used for the box:
var data_sorted = data.sort(d3.ascending)
var q1 = d3.quantile(data_sorted, .25)
var median = d3.quantile(data_sorted, .5)
var q3 = d3.quantile(data_sorted, .75)
var interQuantileRange = q3 - q1
var min = q1 - 1.5 * interQuantileRange
var max = q1 + 1.5 * interQuantileRange

// Show the Y scale
var y = d3.scaleLinear()
  .domain([0,24])
  .range([height, 0]);
svg.call(d3.axisLeft(y))

// a few features for the box
var center = 200
var width = 100

// Show the main vertical line
svg
.append("line")
  .attr("x1", center)
  .attr("x2", center)
  .attr("y1", y(min) )
  .attr("y2", y(max) )
  .attr("stroke", "black")

// Show the box
svg
.append("rect")
  .attr("x", center - width/2)
  .attr("y", y(q3) )
  .attr("height", (y(q1)-y(q3)) )
  .attr("width", width )
  .attr("stroke", "black")
  .style("fill", "#69b3a2")

// show median, min and max horizontal lines
svg
.selectAll("toto")
.data([min, median, max])
.enter()
.append("line")
  .attr("x1", center-width/2)
  .attr("x2", center+width/2)
  .attr("y1", function(d){ return(y(d))} )
  .attr("y2", function(d){ return(y(d))} )
  .attr("stroke", "black")
</script>

"""
)

ฝังรายงาน Power BI ในสมุดบันทึก

สำคัญ

คุณลักษณะนี้อยู่ในตัวอย่าง

แพ็คเกจ Powerbiclient Python ได้รับการรองรับในแบบดั้งเดิมใน Fabric notebooks คุณไม่จําเป็นต้องทําการตั้งค่าเพิ่มเติม (เช่น กระบวนการรับรองความถูกต้อง) บน Fabric Notebook Spark รันไทม์ 3.4 เพียงแค่นําเข้า powerbiclient และดําเนินการสํารวจของคุณต่อไป หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการใช้แพคเกจ powerbiclient โปรดดูเอกสาร ประกอบ powerbiclient

Powerbiclient สนับสนุนคุณลักษณะหลักต่อไปนี้

แสดงรายงาน Power BI ที่มีอยู่

คุณสามารถฝังและโต้ตอบกับรายงาน Power BI ในสมุดบันทึกของคุณด้วยโค้ดเพียงไม่กี่บรรทัดได้อย่างง่ายดาย

รูปภาพต่อไปนี้เป็นตัวอย่างของการแสดงผลรายงาน Power BI ที่มีอยู่

สกรีนช็อตของวิชวลแบบประกายไฟที่แสดงรายงาน Power BI

เรียกใช้โค้ดต่อไปนี้เพื่อแสดงรายงาน Power BI ที่มีอยู่

from powerbiclient import Report

report_id="Your report id"
report = Report(group_id=None, report_id=report_id)

report

สร้างวิชวลรายงานจาก Spark DataFrame

คุณสามารถใช้ Spark DataFrame ในสมุดบันทึกของคุณเพื่อสร้างการแสดงภาพเชิงลึกได้อย่างรวดเร็ว คุณยังสามารถเลือก บันทึก ในรายงานแบบฝังตัวเพื่อสร้างรายงานในพื้นที่ทํางานเป้าหมาย

รูปภาพต่อไปนี้เป็นตัวอย่างของ จาก QuickVisualize() Spark DataFrame

สกรีนช็อตของรายงาน Power BI จาก dataframe

เรียกใช้โค้ดต่อไปนี้เพื่อแสดงรายงานจาก Spark DataFrame

# Create a spark dataframe from a Lakehouse parquet table
sdf = spark.sql("SELECT * FROM testlakehouse.table LIMIT 1000")

# Create a Power BI report object from spark data frame
from powerbiclient import QuickVisualize, get_dataset_config
PBI_visualize = QuickVisualize(get_dataset_config(sdf))

# Render new report
PBI_visualize

สร้างวิชวลรายงานจาก pandas DataFrame

คุณยังสามารถสร้างรายงานโดยยึดตาม DataFrame ของ pandas ในสมุดบันทึกได้

รูปภาพต่อไปนี้เป็นตัวอย่างของ QuickVisualize() A จาก DataFrame ของ pandas

สกรีนช็อตของรายงานจากกรอบข้อมูลของ pandas

เรียกใช้โค้ดต่อไปนี้เพื่อแสดงรายงานจาก Spark DataFrame

import pandas as pd

# Create a pandas dataframe from a URL
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv")

# Create a pandas dataframe from a Lakehouse csv file
from powerbiclient import QuickVisualize, get_dataset_config

# Create a Power BI report object from your data
PBI_visualize = QuickVisualize(get_dataset_config(df))

# Render new report
PBI_visualize

เมื่อพูดถึงการแสดงภาพข้อมูล Python มีไลบรารีกราฟหลายรายการที่มาพร้อมกับคุณลักษณะต่าง ๆ มากมาย ตามค่าเริ่มต้น ทุก Apache Spark pool ใน Fabric จะมีชุดของไลบรารีโอเพนซอร์สที่รวบรวมและได้รับความนิยม

Matplotlib

คุณสามารถแสดงไลบรารีการลงจุดมาตรฐานเช่น Matplotlib โดยใช้ฟังก์ชันการแสดงผลที่มีอยู่ภายในสําหรับแต่ละไลบรารี

รูปภาพต่อไปนี้เป็นตัวอย่างของการสร้างแผนภูมิแท่งโดยใช้ Matplotlib

สกรีนช็อตของกราฟเส้นที่สร้างขึ้นด้วย Matplotlib

สกรีนช็อตของแผนภูมิแท่งที่สร้างขึ้นด้วย Matplotlib

เรียกใช้รหัสตัวอย่างต่อไปนี้เพื่อวาดแผนภูมิแท่งนี้

# Bar chart

import matplotlib.pyplot as plt

x1 = [1, 3, 4, 5, 6, 7, 9]
y1 = [4, 7, 2, 4, 7, 8, 3]

x2 = [2, 4, 6, 8, 10]
y2 = [5, 6, 2, 6, 2]

plt.bar(x1, y1, label="Blue Bar", color='b')
plt.bar(x2, y2, label="Green Bar", color='g')
plt.plot()

plt.xlabel("bar number")
plt.ylabel("bar height")
plt.title("Bar Chart Example")
plt.legend()
plt.show()

โบเก้

คุณสามารถแสดงไลบรารี HTML หรือแบบโต้ตอบ เช่น โบเก้ โดยใช้ displayHTML(df)

รูปภาพต่อไปนี้คือตัวอย่างของการลงจุดสัญลักษณ์รูปเดียวบนแผนที่โดยใช้ โบเก้

สกรีนช็อตของตัวอย่างการลงจุดรูปเหลืองบนแผนที่

เมื่อต้องการวาดรูปนี้ ให้เรียกใช้โค้ดตัวอย่างต่อไปนี้

from bokeh.plotting import figure, output_file
from bokeh.tile_providers import get_provider, Vendors
from bokeh.embed import file_html
from bokeh.resources import CDN
from bokeh.models import ColumnDataSource

tile_provider = get_provider(Vendors.CARTODBPOSITRON)

# range bounds supplied in web mercator coordinates
p = figure(x_range=(-9000000,-8000000), y_range=(4000000,5000000),
           x_axis_type="mercator", y_axis_type="mercator")
p.add_tile(tile_provider)

# plot datapoints on the map
source = ColumnDataSource(
    data=dict(x=[ -8800000, -8500000 , -8800000],
              y=[4200000, 4500000, 4900000])
)

p.circle(x="x", y="y", size=15, fill_color="blue", fill_alpha=0.8, source=source)

# create an html document that embeds the Bokeh plot
html = file_html(p, CDN, "my plot1")

# display this html
displayHTML(html)

Plotly

คุณสามารถแสดงไลบรารี HTML หรือเชิงโต้ตอบ เช่น Plotly โดยใช้ displayHTML()

เมื่อต้องการวาดรูปนี้ ให้เรียกใช้โค้ดตัวอย่างต่อไปนี้

สกรีนช็อตของแผนที่ของสหรัฐอเมริกาที่สร้างขึ้นด้วยการลงจุด

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response)

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv",
                   dtype={"fips": str})

import plotly
import plotly.express as px

fig = px.choropleth(df, geojson=counties, locations='fips', color='unemp',
                           color_continuous_scale="Viridis",
                           range_color=(0, 12),
                           scope="usa",
                           labels={'unemp':'unemployment rate'}
                          )
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})

# create an html document that embeds the Plotly plot
h = plotly.offline.plot(fig, output_type='div')

# display this html
displayHTML(h)

Pandas

คุณสามารถดูผลลัพธ์ HTML ของ pandas DataFrames เป็นเอาต์พุตเริ่มต้น สมุดบันทึกผ้าจะแสดงเนื้อหา HTML ที่จัดรูปแบบโดยอัตโนมัติ

สกรีนช็อตของตารางที่สร้างขึ้นด้วย pandas

import pandas as pd 
import numpy as np 

df = pd.DataFrame([[38.0, 2.0, 18.0, 22.0, 21, np.nan],[19, 439, 6, 452, 226,232]], 

                  index=pd.Index(['Tumour (Positive)', 'Non-Tumour (Negative)'], name='Actual Label:'), 

                  columns=pd.MultiIndex.from_product([['Decision Tree', 'Regression', 'Random'],['Tumour', 'Non-Tumour']], names=['Model:', 'Predicted:'])) 

df