はじめに
データ分析でEDAをするとMatplotlibやSeabornは欠かせないです。
可視化をするときには必須のライブラリですが、思い通りにいかないことが多々あります。
今回は、箱ひげ図やSwarmなどのグラフを描画したときにxlabelが変になっていたので、その解決方法について説明します。
問題
以下のデータフレームがあります。
このデータフレームの都道府県が北海道
の行をすべて抽出して、x=都道府県名
、y=取引価格(総額)_log
、hue=改装
の項目(改装済、未改装)に対して行います。
箱ひげ図やswarmplotなどで描画をすると以下のようになります。
boxplot.py
# 抽出
df = df[df["都道府県名"]=="北海道"]
# 箱ひげ図
import seaborn as sns
sns.boxplot(x='都道府県名', y='取引価格(総額)_log', hue="改装", data=df[:100])
plt.show()
swarmplot.py
# 抽出
df = df[df["都道府県名"]=="北海道"]
# swarmplot
import seaborn as sns
sns.boxplot(x='都道府県名', y='取引価格(総額)_log', hue="改装", data=df[:100])
plt.show()
データ数が多いため100行だけ可視化しています。
するとxlabelが北海道のはずだけのはずが、全都道府県表示されていました。
解決方法
原因は都道府県名
のカラム型がcategory型
であることでした。
LightGBMの前処理の最後にカテゴリ型にしていました。
ですので、この処理をなくしてobject形
にするとうまく表示されます。
おわりに
まさかのところに原因が潜んでいました。
同じところで悩まされる人が早くこの記事で解決できることを願っています。