1
Help us understand the problem. What are the problem?

posted at

『Python2年生 データ分析のしくみ』で勉強中

この記事について

『Python2年生 データ分析のしくみ』(以下、書籍)でPythonを学習する超初心者の記録です。
過去の記事では1冊を数記事に分けて書いていましたが、今回は1記事で1冊ぶん。

■ バックナンバー
『Python1年生』で勉強中(その1)
『Python1年生』で勉強中(その2)
『Python1年生』で勉強中(その3)
『Python2年生 スクレイピングのしくみ』で勉強中(その1)
『Python2年生 スクレイピングのしくみ』で勉強中(その2)

実行環境

OS・MW・ライブラリ バージョンなど
OS Windows 10 Pro 21H2 19044.1706
Python 3.10.4
pip 22.0.4
pandas 1.3.4
numpy 1.20.3
matplotlib 3.4.3
seaborn 0.11.2
scipy 1.7.1

やったこと

書籍を読みつつ、サンプルプログラムを一通り試しました。
進めることを優先したため、基本的には書籍の内容通り脱線せずに進めてます。

気になったところ

インストールされているライブラリのversion確認方法について

上の「実行環境」欄にバージョンを書くため、いつものように「pip list install」をコマンドプロンプトから実行してみましたが、seabornだけ記載がありませんでした。
検索してみたところ、seabornのバージョンは以下のコマンドで確認できるとのこと。
Anaconda Navigatorから起動したJupyter Notebookで実行してみました。

import seaborn as sns
sns.__version__
# '0.11.2'

というか、seabornに限らず同じように確認できるみたいですね。こちらもJupyter Notebookから確認。

import pandas as pd
pd.__version__
# '1.3.4'

で、ここで気が付いたんですが、「pip list install」の結果と「pd.__version__」の結果が異なる……
pipコマンドでインストールしたものと、Anacondaにインストールしたものとが別物だからでしょうかね。
IDLEから「pd.__version__」を実行すると、「pip list install」と同じバージョンが表示されました。

import pandas as pd
print(pd.__version__)
# == RESTART: C:/(略)/20220522.py ==
# 1.4.2

「%matplotlib inline」について

書籍のp105では、『matplotlibのグラフは、(中略)Jupyter Notebookでは「%matplotlib inline」と指定して、ノートの中にグラフを表示させます。』とあります。
なるほどと思い、じゃあこの行を書かないでみたら? とコメントアウトしてサンプルプログラムを試してみましたが、特に表示は変わりませんでした……

#%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([0,100,200],[100,0,200])
plt.show()
# 変わらずNotebookのなかに表示される……

こちらのページを読むと、「Jupyter Notebook使用時のバックエンドはデフォルトでinlineになっているらしい」ということです。
たしかに、「matplotlib.get_backend()」を実行するとinlineと表示されました。

import matplotlib
matplotlib.get_backend()
# 'module://matplotlib_inline.backend_inline'

「df.set_index("列名", inplace=True)」について

書籍のp113のサンプルプログラム(リスト4.9)にて「df.set_index("列名", inplace=True)」の説明が出てきます。
が、「inplace」が何を指しているかは触れられていなかったので、helpコマンドで確かめてみました。
※該当箇所のみ引用

    inplace : bool, default False
        If True, modifies the DataFrame in place (do not create a new object).

Trueに指定すると、新しいオブジェクトを作らずに、元のデータフレームを上書きするそうです。
実際、このサンプルプログラム(リスト4.9)を「inplace=False」にして実行し(デフォルトFalseなので指定しなくてもいいんですけど)、次のサンプルプログラム(リスト4.10)を実行すると、リスト4.9の結果がリスト4.10の結果に反映されませんでした。
(リスト4.9で番号から置き換えたインデックス名が、リスト4.10の結果では番号のままになっていました)

「sns.set_context()」について

書籍のp129のサンプルプログラム(リスト4.25)で、こちらも特に説明なく(のはず)「sns.set_context("talk")」という行が出てきました。
helpコマンドで確かめると、ラベルや線などの要素のサイズなどに影響するとのことです。

Help on function set_context in module seaborn.rcmod:

set_context(context=None, font_scale=1, rc=None)
    Set the parameters that control the scaling of plot elements.
    
    This affects things like the size of the labels, lines, and other elements
    of the plot, but not the overall style. This is accomplished using the
    :ref:`matplotlib rcParams system <matplotlib:matplotlib-rcparams>`.
    
    The base context is "notebook", and the other contexts are "paper", "talk",
    and "poster", which are version of the notebook parameters scaled by different
    values. Font elements can also be scaled independently of (but relative to)
    the other values.
    
    See :func:`plotting_context` to get the parameter values.
    
    Parameters
    ----------
    context : dict, or one of {paper, notebook, talk, poster}
        A dictionary of parameters or the name of a preconfigured set.
後略

contextには「paper」「notebook」「talk」「poster」を指定できるようで、試してみると、後に記述したほうが文字のサイズが大きくなるようです。

sns.set_context(context="paper")

python2nensei_p129_paper.png

sns.set_context(context="notebook")

python2nensei_p129_notebook.png

sns.set_context(context="talk")

python2nensei_p129_talk.png

sns.set_context(context="poster")

python2nensei_p129_poster.png

df.corr()で相関係数行列を表示する方法について

書籍のp190を読んでいて、ちょっと気になる箇所がありました。
相関係数行列を表示するために「df.corr()」を実行しているのですが、あれ、p182とかだと「print(df.corr())」ってしていませんでしたっけ?(してた)

print(df.corr())

20220522_2.png

df.corr()

20220522_1.png
どうやら、単に相関係数行列を表示するだけならどちらでもいいようです。
見栄え的には「df.corr()」のほうが、行ごとに背景が色分けされてますし見やすいですかね。

余談

というわけで『Python2年生』2冊とも一通り完了しました。
次に『Python3年生 機械学習のしくみ』をやれば、とりあえずは『Python*年生』シリーズは全部取り組み終わったことになりますね。既に購入済みなので少しずつ進めます。

もちろん、1回通したらそれでOKというものでもないでしょうから、すぐやるかはとにかくいずれ復習しようとは思っています……

参考書籍、参考ページ

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?