DataFrameでのプロット

Juliaで学ぶデータ可視化入門

Gustavo Vieira Suñe

Data Analyst

保険データセット

  • 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 用のプロットレシピを提供
    • @df 記法を紹介
Juliaで学ぶデータ可視化入門

DataFrame から配列を抽出

  • 地域×喫煙別の平均費用
# 地域と喫煙でグループ化
grouped = groupby(insurance, [:Region, :Smoker])

# 平均費用を計算 grouped_mean_charges = combine(grouped, :Charges => mean)
  • 各列は配列を返す
    • 例: grouped_mean_charges.Region は地域の文字列配列を取り出す。
Juliaで学ぶデータ可視化入門

配列からのプロット

# グループ化棒グラフ
groupedbar(

# 配列を引数に渡す 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 から直接プロット

# DataFrame からプロット
@df grouped_mean_charges groupedbar(

# 列名を渡す :Region, :Charges_mean,
group=:Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")

各地域の保険料を喫煙状況ごとに示すグループ化棒グラフ。

Juliaで学ぶデータ可視化入門

並列比較

# 積み上げではないグループ化棒グラフ
groupedbar(

# 配列を引数に渡す 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)")
# DataFrameからプロット
@df grouped_mean_charges groupedbar(

# 列名を渡す :Region, :Charges_mean, group=:Smoker,
color=[:teal :orangered2], linewidth=0, legend_title="Smoker", legend_position=:outertopright) xlabel!("Region") ylabel!("Insurance Premium (USD)")
Juliaで学ぶデータ可視化入門

DataFrameコマンドのチェーン

  • 以前の方法

    # 地域と喫煙でグループ化
    grouped = groupby(insurance, [:Region, :Smoker])
    # 平均費用を計算
    grouped_mean_charges = combine(grouped, :Charges => mean)
    
  • 代わりにチェーンを使用

    using Chain
    # groupby と combine を連結
    grouped_mean_charges = @chain insurance begin
      groupby([:Region, :Smoker])
      combine(:Charges => mean)
    end
    
Juliaで学ぶデータ可視化入門

チェーンでプロット

# プロットのチェーン
@chain insurance begin
    # データ整形
    groupby([:Region, :Smoker])
    combine(:Charges => mean)

# プロット @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で学ぶデータ可視化入門

Ayo berlatih!

Juliaで学ぶデータ可視化入門

Preparing Video For Download...