FAQ
< All Topics

Pythonによるデータ解析入門

Table of Contents

回答

少々文字化けしていて分かりませんでしたが、labelsにtipとあるので、データセットはtipsだと思いますので、それで説明します。
まず、labelsは何の設定か分からないという部分についてお伝えします。講義で使っていたデータは下記データです。

さらに、講義のときの命令文は

#設定
fig, ax = plt.subplots()
NAME = BOX.columns#線の凡例用に、DataFrameの列名を取得
ax.boxplot(BOX,showmeans = True, labels = NAME)

こうなっていたと思います。BOXという変数に上の表のデータが入っています。
ここで、NAMEという変数には、BOXのカラムが格納されていますね?
カラムとは列のことであり、BOX.columnsによって列名が取得されています。
すなわち、labelsには列名を入れているということが分かると思います。
実際のこの命令を実行したら、箱ひげ図が3つ作成されて、ラベルがShopAとBとCになっていたと思います。
ここから、labelsというのはその名の通り、ラベルを振る名前のことです。

さて、tipsのデータで箱ひげ図を作ろうとしてもうまくいかないとことでしたね?
なぜうまくいなかいかというと、tipsのデータは下記の通りです。

まず

> NAME = I.columns
> ax.boxplot(I,showmeans = True, labels =tip )

ここですが、上図の列名がNAMEに格納されています。
続いて、ax.boxplotによって、Iという変数の箱ひげ図を作れと命令され、平均値も算出しろ、と命令していますが、上図のとおり、どう見ても平均値の算出とか、四分位数の計算すらできなさそうな列が入っていることが分かります。
そのためエラーが出るのです。
四分位計算して箱ひげ図作って、かつ平均値出せと言われたけど、どうやって出したら良いの?とコンピューター側が困っている、という状態です。
なので、たとえば、total_billとtipとsizeの箱ひげ図を出すとしましょう。
まず複数の列を抽出してほかの変数に格納しましょう。

I2 = I[[“total_bill”, “tip”, “size”]]
I2

この時注意するのは、I[“”]で列名を出せたと思いますが、今回複数なので、複数のときにはST = [“a”,”b”,”c”]と[]で入れてましたよね?
だからここでは[]の中に複数の[]を入れていて、[]の中に[]でリスト化していると思います。カッコの数を間違えるとエラーが出るのでお気を付けください。
これで、I2に数値だけのデータフレームができましたので、箱ひげ図を作ってみましょう。

fig, ax = plt.subplots()
NAME = I2.columns
ax.boxplot(I2,showmeans = True, labels =NAME )

同じ図が出来ましたでしょうか?
もしまた何か分からないことがありましたら、お気軽にお問い合わせください。

回答

I.corr()は、相関係数を算出する関数です。
相関係数を算出するためには、平均値と標準偏差が必要ですね?
すなわち、量的な計算することが可能な状態ではないと計算できません。
恐らくtipsを使っているのだと思うので、そのデータをまず見てみましょう。

このようなデータがtipsのデータです。
この中から、sexやsmokerなど、平均値と標準偏差が計算できないようなデータが入っています。
Pairplotは動いたとのことですが、図を見ると

こういう感じでしたよね?
これ、自動的に数値として計算できないものは入ってないことが分かりますか?pairplotは自動的に、数値データじゃないものを除外して、図を作ってくれます。しかしながら、corr()は真面目な関数で、愚直に全てで相関を出そうと頑張ってくれる結果、数値データも計算しようとして、混乱してエラーが出てます。
なので、私たち側がcorr()の関数で計算できるように、数値データだけの変数を作ります。

I2 = I[[“total_bill”, “tip”, “size”]]
I2

このように列を複数選択します。
このとき、注意するのは、I[“”]で列名を出せたと思いますが、今回複数なので、複数のときにはST = [“a”,”b”,”c”]と[]で入れてましたよね?
だからここでは[]の中に複数の[]を入れていて、[]の中に[]でリスト化していると思います。
カッコの数を間違えるとエラーが出るのでお気を付けください。
このI2に対して、corr()をやってみてください。恐らく問題なく動くと思います。

ちなみに、sexやsmokerをダミー変数としてreplaceしてってことであれば、相関係数も算出可能になります。
またはget_dummiesなどを使って、ダミー変数に変換するとそのまま使えたりします。

申し込み