在 DataFrame 繪製資料

Julia 資料視覺化入門

Gustavo Vieira Suñe

Data Analyst

Insurance 資料集

  • insurance DataFrame
Age Sex BMI Children Smoker Region Charges
19 female 27.90 0 yes southwest 16884.90
18 male 33.77 1 no southeast 1725.55
28 male 33.00 3 no southeast 4449.46
... ... ... ... ... ... ...

 

  • DataFrame 對表格資料彈性高且效率佳
    • StatsPlots 提供繪製 DataFrame 的配方(recipe)
    • 介紹 @df 標記!
Julia 資料視覺化入門

從 DataFrame 取出陣列

  • 依地區與是否吸菸的平均保費
# Group by region and smoker
grouped = groupby(insurance, [:Region, :Smoker])

# Calculate mean charges grouped_mean_charges = combine(grouped, :Charges => mean)
  • 每個欄位都是一個陣列
    • 例如,grouped_mean_charges.Region 會取出含地區字串的陣列。
Julia 資料視覺化入門

以陣列繪圖

# Grouped bar chart
groupedbar(

# Pass arrays as arguments grouped_mean_charges.Region, grouped_mean_charges.Charges_mean, group=grouped_mean_charges.Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")

依是否吸菸分組,顯示各地區保險保費的群組長條圖。

Julia 資料視覺化入門

直接從 DataFrame 繪圖

# Plot from DataFrame
@df grouped_mean_charges groupedbar(

# Pass column names :Region, :Charges_mean,
group=:Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")

依是否吸菸分組,顯示各地區保險保費的群組長條圖。

Julia 資料視覺化入門

並排比較

# Grouped bar chart
groupedbar(

# Pass arrays as arguments grouped_mean_charges.Region, grouped_mean_charges.Charges_mean, group=grouped_mean_charges.Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")
# Plot from DataFrame
@df grouped_mean_charges groupedbar(

# Pass column names :Region, :Charges_mean, group=:Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")
Julia 資料視覺化入門

串接 DataFrame 指令

  • 前面示範過

    # Group by region and smoker
    grouped = groupby(insurance, [:Region, :Smoker])
    # Calculate mean charges
    grouped_mean_charges = combine(grouped, :Charges => mean)
    
  • 改用 chaining 更簡潔

    using Chain
    # Chain groupby and combine
    grouped_mean_charges = @chain insurance begin
      groupby([:Region, :Smoker])
      combine(:Charges => mean)
    end
    
Julia 資料視覺化入門

繪圖串接流程

# Plotting chain
@chain insurance begin
    # Manipulate data
    groupby([:Region, :Smoker])
    combine(:Charges => mean)

# Plot data @df groupedbar(:Region, :Charges_mean, group=:Smoker, color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright)
end xlabel!("Region") ylabel!("Insurance Premium (USD)")

依是否吸菸分組,顯示各地區保險保費的群組長條圖。

Julia 資料視覺化入門

一起來練習吧!

Julia 資料視覺化入門

Preparing Video For Download...