0
0

More than 3 years have passed since last update.

学習記録 その19(23日目)

Posted at

学習記録(23日目)

勉強開始:12/7(土)〜

教材等:
・大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年):12/19(木)読了
・Progate Python講座(全5コース):12/21(土)終了
・Andreas C. Müller、Sarah Guido『(邦題)Pythonではじめる機械学習』(オライリージャパン、2017年):12月23日(土)読了
Kaggle : Real or Not? NLP with Disaster Tweets :12月28日(土)投稿〜1月3日(金)まで調整
Wes Mckinney『(邦題)Pythonによるデータ分析入門』(オライリージャパン、2018年):1月4日(土)〜

『Pythonによるデータ分析入門』

p.276 8章 データラングリング まで読み終わり。

6章 データの読み込み、書き出しとファイル形式

・pandasの特徴はテーブル形式データをデータフレームオブジェクトとして読み込む関数が豊富なこと。
 read_csv、read_table、read_excel、read_html ...
 読み込み関数のいくつかでは自動的に型推論が行われるため、必ずしも細部を設定する必要はない。
 デフォルトの区切り文字(sep) : read_csv→カンマ、read_table→\t(水平タブ)
 他のものを区切りとする場合は引数で指定する。

・一部の行の形式が異なるようなファイルのデータフレーム化
 csf.readerに渡す。帰ってきたタプルをlinesで読み込む。ヘッダーとデータ行に分割
 ディクショナリ内包表記とzip(*values)でディクショナリ形式に ...

・json(JavaScript Object Notation)
 Webブラウザとアプリケーション間においてHTTPリクエストでデータをやりとりする際の形式の1つ。

・HTML/XML形式のデータ読み書きも可能。
 read関数で読み込み、skipやindexを付けてディクショナリ化し、最後にデータフレーム化する。
 いわゆるスクレイピングという作業。データの形を整えて使えるようにする。
 Kaggleなどは整っているデータが多いのでやらない? むしろ実務で多く使いそうな技術。

・HDF5 科学的な配列データを保存するためのファイル形式。
 Cで書かれており、効率よくデータを読み書きできるので、巨大なデータセットを使うのによい選択。

・excelも読み込める。sqlデータベースからも読み込める。

7章 データのクリーニングと前処理

・欠損値の取り扱い
 dropnaで欠損値(NA, NaN)を含む行を丸ごと落とす。fillnaで埋める。前後に準ずるffillやbfillもある。
 引数にhow='all'を指定で、全てがNAの行のみ落とすこともできる。列は他と同じでaxis=1を指定。
 fillnaにディクショナリを与えると、列ごとに異なる数値で埋めることができる。inplaceは上書き。
 fillnaにdata.meanを与えると、算術平均で穴埋めもできる。

・データ変形
 duplicateで真偽値のシリーズを戻す。drop_duplicatesは真偽値がtrue(他と同じ要素)のみ削除
 mapで要素ごとの変換。ディクショナリも渡せる。(どの関数も共通してディクショナリ渡せそう。)
 replaceでもできる。kaggleでよく見るのはこっちな気がする。第1引数を第2の数値に変える。

・離散化とビニング
 リストで要素を作り、pandasのcutに引数として渡すことでビンに分けられる。

・外れ値の検出
 data[(np.abs(data) > 3).any(1)、3以上というのは例。
 指定した数値よりもdata要素の絶対値が大きいものが1つでもある(any)ものをリストアップする。
 = np.sign(data)*3 とすれば、各要素の符号に応じた数値を返すsignと組み合わせて上限を作れる。

・ランダムサンプリング
 random.permutation(5)で5つのランダムを、takeで同等のサンプリングを行える。
 非復元抽出を選択するにはsampleメソッドにreplace = Trueを渡す。

・標識変数の取り出し。リスト、for分、extend(x.split('|'))で|を基準に分割したデータをリストに入れる。
 pandasのuniqueで取り出すと、構成する各要素のリストが作れる。p229
 splitもkaggleでよく使ってた。

・正規表現。reモジュールを使用、complile、findall、regex.match ...

8章 データラングリング

・階層型インデックス。2つ以上のインデックスを持つデータ。
 aというインデックスに1,2,3の要素、bというインデックスに1,2,3の要素。など。
 unstackとstackでピボットできる。(内側の要素をcolumnsラベルとして使うなど)

・階層の順序変更はswaplevelでできる。sort_indexで並び替え。
 levelを引数に渡すと、その階層を使うか指定。外側から0、1、...

・データフレームの列をインデックスにできる。set.index
 set.index('a')とすれば、aの列を構成する要素がindexとして新たに加わる。
 reset.indexはこの逆動作である。

・結合とマージ、concat、merge、でくっつける。基本的に内部結合(innner)で指定されており、共通なもののみ結果に含めるようになっている。独立であるものも、全てを結果に含めるのであればhow='outer'を指定する。

・stackは欠損値を除去するようになっているが、dropna=Falseで落とさないこともできる。
 これに限らず、引数で指定することでだいたいの操作はできそう(と判断。)
 もししたい操作があれば、まず引数を調べるとよいかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0