Top Banner

Click here to load reader

21

Pythonデータ分析 第3回勉強会資料 7章

Jul 23, 2015

Download

Documents

Makoto Kawano
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pythonデータ分析 第3回勉強会資料 7章

Python for Data Analysisかわの まこと

Page 2: Pythonデータ分析 第3回勉強会資料 7章

Combining and Merging DataSetsデータを結合する方法:• pandas.merge

- 1つ以上のキーを元に行を結合する⇒SQL joinと似てる

• pandas.concat - 軸にそって結合する

• combine_first - 欠損値を埋めるように重複データを結合する

2

Page 3: Pythonデータ分析 第3回勉強会資料 7章

DB-styleなpandas.mergeMerge, Join: リレーショナルデータベースでよく使われる方法

• df1: 複数の”a”,”b”ラベリングがある

• df2: 単一のラベリング

列を指定しなければ,重複列をkeyとして使う

基本的には’inner’ join

• それ以外: ‘left’, ‘right’, ‘outer’3

Page 4: Pythonデータ分析 第3回勉強会資料 7章

merge function arguments

4

Argument Description

left 左側から結合するDataFrameright 右側から結合するDataFrame

how inner’, ‘outer’, ‘left’ or ‘right’のどれをつかうか tukauno on 結合する列の名前.両方のDataFrameにないとだめ.

left_on 左のDataFrameの結合キーright_on 右のDataFrameの結合キー

left_index インデックスを左の結合キーとして扱うright_index インデックスを右の結合キーとして扱う

sort結合キーで辞書的にソートする.基本True.巨大なデータセットなどではFalse推奨

suffixes 重複してる時に加える文字列.デフォルトは(‘_x’, ‘_y’) -> ‘data_x’, ‘data_y’

copy Falseにするとコピーしなくなる

Page 5: Pythonデータ分析 第3回勉強会資料 7章

Merge on Indexインデックスに結合キーがあるときある• left_index=True or right_index=True (or 両方)

mergeよりjoinっていうインスタンスメソッド使ったほうが◯

5

Page 6: Pythonデータ分析 第3回勉強会資料 7章

Concatenating Along as Axisnumpy.concatenateと同様なことが出来るpandas.concat

6

Argument Descriptionobjs 結合するpandasオブジェクトのリストかdictaxis 結合する方向.デフォルトaxis=0join inner’,’outer’のどちらか.デフォルト’outer’

join_axes 特定のインデックスで結合する場合keys 階層的インデックスを作るlevels 特定のインデックスを階層的インデックスに使うnames 階層的インデックスに名前をつける

verify_integrity 新しい軸が重複してないかチェックしてあったらエラー(デフォルトFalse)ignore_index インデックスを無視して,新しいインデックスを振り直す

Page 7: Pythonデータ分析 第3回勉強会資料 7章

Combining Data with Overlapmerge, concatenationでも出来ないデータ結合

combine_first• よく欠損値に当てたりする

7

Page 8: Pythonデータ分析 第3回勉強会資料 7章

Reshaping and Pivoting階層的インデックスで便利• stack: 列を分解して行にする

• unstack: 行を分解して列にする

8

Page 9: Pythonデータ分析 第3回勉強会資料 7章

Pivoting "long" to "wide" FormatDBやCSVの時系列データを扱う

pandas.DataFrame.pivot• ldata.pivot(‘data’, ‘item’)

= ldata.set_index([‘date’, ‘item’]).unstack(‘item’)

9

Page 10: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationRemoving Duplicates• pandas.DataFrame.duplicated • pandas.DataFrame.drop_duplicates

Transforming Data Using a Function or Mapping

10

Page 11: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationTransforming Data Using a Function or Mapping • 配列にある値で変換したい時あるよね

• pandas.DataFrame.map()

11

Page 12: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationReplacing Values

欠損値を埋めるfillnaあるけど,replaceも便利

12

Page 13: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationRenaming Axis Indexes• インデックスの名前を編集したいとき

• pandas.DataFrame.rename

13

Page 14: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationDiscretization and Binning

離散データを扱いたいときある

pandas.cut()

14

Page 15: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationDetecting and Filtering Outliers• 外れ値の扱い

15

Page 16: Pythonデータ分析 第3回勉強会資料 7章

Data TransformationPermutation and Random Sampling• Permuting: ランダム再整列

• takeを駆使するといい

16

Page 17: Pythonデータ分析 第3回勉強会資料 7章

Date TransformationComputing Indicator / Dummy Variables• 統計学モデリングもしくは機械学習のための変換

- 分類別の変数を’dummy’か’indicator’行列にする

- k種類の列があった場合1か0で出来たk列の行列,DataFrame

17

Page 18: Pythonデータ分析 第3回勉強会資料 7章

String Manipulation > String Object Methods

18

Argument Descriptioncount 重複してない出現回数

endswith, startswith 引数で終わって(から始まって)たらTruejoin String同士をくっつける

index 文字が最初に見つかった位置を返す.見つからなければErrorを返す.find indexと同じ.見つからなければ-1を返す.rfind 文字が最後に見つかった位置を返す.見つからなければ-1を返す.

replace 置換strip, rstrip, lstrip 空白と改行をなくす(= x.strip)

split 文字列を区切り文字で切ってリストを返す.lower, upper 文字を全部小文字,大文字に変換する.

ljust, rjust, center 引数を与えた数だけ空白を加える

Page 19: Pythonデータ分析 第3回勉強会資料 7章

正規表現組み込み関数:reモジュール• パターンマッチング,置換,分割

• re.compileでregex object生成推奨(CPU節約)

19

Argument Description

findall, finditerパターンマッチングしてる文字列を全部返す.

-allはリストで,-iterはイテレータで返す.

match 最初からパターンマッチングあればオブジェクトを,無ければNone

search 途中でもパターンマッチングがあればオブジェクトを返す

split パターンが出るたびに分割する

sub, subn 全部を置換するか,最初のn個だけ置換する

Page 20: Pythonデータ分析 第3回勉強会資料 7章

Vectorized string functions in pandasdata.map + lambdaで正規表現適用できるけど,NAで死ぬ

20

Method Descriptioncat 要素ごとに文字列を連結する

contains パターン,正規表現にマッチするかboolean配列を返すcount パターンの出現頻度

endswith, startswith x.endswithやx.startswithと一緒findall パターン,正規表現の全検索

get i番目の要素を取り出すjoin Seriesの各要素に文字列を追加するlen 各要素の文字数

lower, upper x.lower(), x.upper()と一緒match 各要素にre.matchで比較する

pad 空白を片側,もしくは両方追加center pad(side=‘both’)と一緒repeat 値を繰り返す.str.repeat(3) = x * 3replace パターンが一致した箇所を置換

slice Series内の文字列をスライスするsplit 区切り文字,パターンで分割

strip, rstrip, lstrip 空白をなくす

Page 21: Pythonデータ分析 第3回勉強会資料 7章

Example: USDA Food Database

21