始める無料で始める

州ごとの販売品目の人気

Farmer's market のデータセットには、28種類の品目それぞれについて、その市場で販売されているかどうかを示す列があります。各州の市場で特定の品目に出会える「可能性」について、何か面白い傾向がないか知りたいと考えました。そこで、データを次の3列に集約しました。

  • state - 州名
  • good - 関心のある品目
  • prop_selling - その州で「その」品目を販売している市場の割合

まずはパターンが見えてくるか手早く確かめるため、興味深いと感じた品目に絞り、シンプルなテキスト散布図を作ることにしました。x軸に品目、y軸にその品目を販売している州内の市場の割合を置きます。

この演習はコースの一部です

Pythonでデータ可視化を磨く

コースを見る

演習の手順

  • to_plot に列挙された品目に合致するように、goods_by_state をフィルタします。

  • 散布図の点を表示しないよう、サイズを空(一定のサイズ)に設定します。

    • なお、sns.scatterplot() では、size は列の値をサイズスケールにマッピングするために使われ、s は全ての点に同じサイズを設定するために使われます。
  • テキストは中央揃えにして、品目の x 軸上の位置にちょうど重なるように配置します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Subset goods to interesting ones
to_plot = ['Cheese','Maple','Fruits','Grains','Seafood','Plants','Vegetables']
goods_by_state_small = goods_by_state.____("good in "+str(to_plot))

g = sns.scatterplot('good','prop_selling', data = goods_by_state_small,
                    # Hide scatter points by shrinking to nothing
                    ____ = ____)

for _,row in goods_by_state_small.iterrows():
  g.annotate(row['state'], (row['good'], row['prop_selling']), 
             # Center annotation on axis
             ha = '____', 
             size = 10)

plt.show()
コードを編集して実行