- 作者: 鈴木たかのり,清原弘貴,嶋田健志,池内孝啓,関根裕紀
- 出版社/メーカー: 技術評論社
- 発売日: 2017/09/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
一覧はこちら
※データ分析の情報がほしかったため、第6章はほぼ目を通していません
第4章 スクレイピング
・Webスクレイピング……Webページから不要な情報を消して、必要な情報だけを取得すること
・クローリング……Webページからリンクを取得し、リンク先のWebページの情報を取得し……という処理を繰り返すこと
・スクレイピング・クローリングの注意点
①著作権や利用規約に注意する
②robots.txtに書いている内容に注意する
③Webサイトに負荷をかけないようにする
・Requests……指定したURLにアクセスし、HTMLデータを取得するパッケージ
・Beautiful Soup 4……HTMLの内容を解析するパッケージ
・Beautiful Soup 4でHTMLを解析する方法
①html.parser(標準)……Python標準のパーサーなので他のライブラリがいらない
②lxml……高速で解析できる
③html5lib……html5を生成できる
・Scrapy……スクレイピングとクローリングのフレームワーク
・Scrapyが依存しているパッケージにはTwistedとlxmlがあり、これらをC言語でコンパイルする必要がある
Anacondaにはコンパイル済みのTwistedがあるのでそちらを使うと楽
第5章 PyData入門ガイド
# Jupyter Notebookの起動
jupyter notebook
#pandasを使用したデータの読み込み・加工 data = pandas.read_csv("./spam.csv") #データの読み込み data.head() #データの先頭n行を返す(デフォルトだとn=5) data.tail() #データの末尾n行を返す data.dtypes #データの型を確認 data = pd.read_csv("./spam.csv", dtype={"spam":"object"}) #型の指定 data.isnull() #データの各要素がnullかどうかを判定 data.sum() #データの各要素を合計 data.dropna(subset=["spam", "ham", "eggs"]) #欠損値のあるデータ行を削除 subsetで対象列を指定 data.set_index("spam") #指定した列を行ラベルに指定 data[["spam", "ham"]] #列をリストで指定した列のみに絞り込み data.iloc[0:4, 0:3] #行インデックス・列インデックスの範囲を指定して抽出 data[data["ham"] > 100] #条件を指定してデータを抽出 data.describe() #データの概要を返却(平均値、最小値、標準偏差など) data.round(1) #桁の四捨五入 data["addcolumn"] = data["ham"] * data["eggs"] #列を追加 data.groupby("spam") #指定行でグルーピング #Matplotlibを使用してデータを可視化 %matplotlib inline #グラフをインライン表示するためのコマンド data.plot.bar(figsize=(10, 5)) #棒グラフの作成 data.plot.hist(bins=20, grid=True, figsize=(8, 5)) #ヒストグラムの作成 data.plot.scatter(x="ham", y="eggs", grid=True, figsize=(5, 5)) #散布図の作成 pandas.plotting.scatter_matrix(data[["spam", "ham", "eggs"]], figsize=(8,8)) #散布図行列 #データの分析 import scipy.stats as sp data[["spam", "ham", "eggs"]].corr() #データフレームの相関係数をまとめて計算する sp.pearsonr(data["ham"], data["eggs"]) #相関係数とp値の計算 sp.linregress(data["pieces"], data["us_price"]) #回帰式の計算
conda list #インストールされているパッケージの一覧 conda create -n envname packagename #仮想環境の新規作成 packagenameでパッケージを指定できる conda env list #conda環境の一覧 source activate envname #conda環境の利用 source deactivate #conda環境から抜ける conda install packagename #パッケージのインストール・アップデート conda update --all #パッケージを一括でアップデート
・PyData……狭義には、PyDataコミュニティのこと
広義には、Pythonで実装されたデータ分析関連パッケージ・ツールの総称
・Pythonでデータ分析を行う際によく使うパッケージ
パッケージ名 | 概要 |
---|---|
NumPy | 多次元配列の操作、線形代数の計算などを行うパッケージ 高速で動作する |
SciPy | 科学技術計算や統計計算を行うためのパッケージ |
pandas | データの読み込みや加工、抽出などの処理を行うパッケージ データフレーム(行と列からなる2次元の表敬式のデータ構造)を扱える |
Jupyter Notebook | Webブラウザ上で動作するPythonの実行環境 データ可視化系パッケージとの連携がしやすい |
Matplotlib/Seaborn/Bokeh/ggpy/HoloViews | グラフ描画のためのパッケージ |
scikit-learn | 機械学習を行うためのパッケージ |
NLTK | 自然言語処理を行うためのパッケージ |
scikit-image/Pillow/OpenCV | 画像処理のためのパッケージ |
SymPy | シンボリック演算(文字変数を使った数式計算)、因数分解、微分などを行うことができるパッケージ |
TensorFlow/Keras/PyTorch | 深層学習のパッケージ |
・Jupyter Notebookのコードセルの実行結果は同一Notebook内で引き継がれる
・Jupyter NotebookでMarkdownファイルを作成し、Markdown形式でテキストを作成し、コードセルを実行すると、テキストがHTMLに変換されて出力される
・Jupyter Notebookではpandasのデータフレームをいい感じに出力してくれる
・pandasのobject型は、数値や日付以外と認識された列や、複数のデータ型が混在していると判定された場合に自動で割り振られる
pandasには文字列型がないので、数値や日付などを文字列として認識したい場合はobject型を指定する
・データフレームオブジェクトを返却するメソッドは、デフォルトではオブジェクト自体の置き換えはしない(デフォルトだとinplace=False)
inplace=Trueを引数で指定すると、データフレームオブジェクト自体を加工後のデータに置き換える
・pandasには、データフレームからMatplotlibを経由してグラフを作成するメソッドがある
・散布図行列……指定したデータフレームの列を使って、総当たりで散布図を作成する
・Anaconda……Pythonディストリビューション(コンパイル済みで設定済みのソフトウェアの集まり)の1つ
PyData関連のパッケージなどが数多く含まれている
PyDataの環境構築が楽にできるが、通常のPython環境との使い分けがややこしい