kharuka2016のブログ

日々の出来事を書き留めておくブログ

データ解析の基礎その2-データのマージ-

入門 Python 3

入門 Python 3

目次

前提条件

OS:Windows 10 64-bit, version 1607

Anaconda 4.4.0(Python 3.6 version 64-bit)インストール

NumPyのインストール

手順概要

  1. コマンドプロンプトでIPython Notebookを起動します。

  2. データのマージ

手順

1.コマンドプロンプトでIPython Notebookを起動します。

ipython notebook

2. データのマージ

2.1. numpy,pandas,DataFrameをimportします。
import numpy as np
import pandas as pd
from pandas import DataFrame
2.2. データフレームを作成します。

dframe1

dframe1=DataFrame({'key':['X','Z','Y','Z','X','X'],'data_set_1':np.arange(6)})
dframe1

Out:

   data_set_1  key
0  0  X
1  1  Z
2  2  Y
3  3  Z
4  4  X
5  5  X

dframe2

dframe2=DataFrame({'key':['Q','Y','Z'],'data_set_2':[1,2,3]})
dframe2

Out:

data_set_2 key 
0  1  Q
1  2  Y
2  3  Z
2.3 データフレームをマージ(内部結合)します。
pd.merge(dframe1,dframe2)

Out:

   data_set_1  key data_set_2
0  1  Z   3
1  3  Z   3
2  2  Y   2
2.4. どのキーに関してマージするか明示します。
pd.merge(dframe1,dframe2,on='key')
2.5. データフレームをマージ(左外部結合)します。
pd.merge(dframe1,dframe2,on='key',how='left')

Out:

   data_set_1  key data_set_2
0  0  X   NaN
1  1  Z   3
2  2  Y   2
3  3  Z   3
4  4  X   NaN
5  5  X   NaN
2.6. データフレームをマージ(右外部結合)します。
pd.merge(dframe1,dframe2,on='key',how='right')

Out:

   data_set_1  key data_set_2
0  1  Z   3
1  3  Z   3
2  2  Y   2
3  NaN Q   1
2.7. データフレームをマージ(完全外部結合)します。
pd.merge(dframe1,dframe2,on='key',how='outer')

Out:

   data_set_1  key data_set_2
0  0  X   NaN
1  4  X   NaN
2  5  X   NaN
3  1  Z   3
4  3  Z   3
5  2  Y   2
6  NaN Q   1
2.8. 多対多のkeyを持つデータフレームを作成します。

dframe3

dframe3=DataFrame({'key':['X','X','X','Y','Z','Z'],'dataset_3':range(6)})
dframe3

Out:

   dataset_3   key
0  0  X
1  1  X
2  2  X
3  3  Y
4  4  Z
5  5  Z

dframe4

dframe4=DataFrame({'key':['Y','Y','X','X','Z'],'dataset_4':range(5)})
dframe4

Out:

   dataset_4   key
0  0  Y
1  1  Y
2  2  X
3  3  X
4  4  Z
2.9. 多対多のkeyを持つデータフレームをマージします。
pd.merge(dframe3,dframe4)

Out:

   dataset_3   key dataset_4
0  0  X   2
1  0  X   3
2  1  X   2
3  1  X   3
4  2  X   2
5  2  X   3
6  3  Y   0
7  3  Y   1
8  4  Z   4
9  5  Z   4
2.10. 複数キーを持つデータフレームを作成します。

df_left

df_left=DataFrame({'key1':['SF','SF','LA'],'key2':['one','two','one'],'left_data':[10,20,30]})
df_left

Out:

   key1    key2    left_data
0  SF  one 10
1  SF  two 20
2  LA  one 30

df_right

df_right=DataFrame({'key1':['SF','SF','LA','LA'],'key2':['one','one','one','two'],'right_data':[40,50,60,70]})
df_right

Out:

   key1    key2    right_data
0  SF  one 40
1  SF  one 50
2  LA  one 60
3  LA  two 70
2.11. 複数キーを持つデータフレームをマージ(完全外部結合)します。
pd.merge(df_left,df_right,on=['key1','key2'],how='outer')

Out:

   key1    key2    left_data   right_data
0  SF  one 10 40
1  SF  one 10 50
2  SF  two 20 NaN
3  LA  one 30 60
4  LA  two NaN 70
2.12. key1についてデータフレームをマージ(内部結合)します。
pd.merge(df_left,df_right,on='key1')

Out:

   key1    key2_x  left_data   key2_y  right_data
0  SF  one 10 one 40
1  SF  one 10 one 50
2  SF  two 20 one 40
3  SF  two 20 one 50
4  LA  one 30 one 60
5  LA  one 30 two 70
2.13. key1についてsuffixを利用してデータフレームをマージ(内部結合)します。
pd.merge(df_left,df_right,on='key1',suffixes=['_lert','_right'])

Out:


key1

key2_lert

left_data

key2_right

right_data



0
SF one 10 one 40 

1
SF one 10 one 50 

2
SF two 20 one 40 

3
SF two 20 one 50 

4
LA one 30 one 60 

5
LA one 30 two 70 

スクリーンショット

f:id:kharuka2016:20170825113809p:plainf:id:kharuka2016:20170825113815p:plainf:id:kharuka2016:20170825113820p:plainf:id:kharuka2016:20170825113826p:plainf:id:kharuka2016:20170825113832p:plainf:id:kharuka2016:20170825113836p:plainf:id:kharuka2016:20170825113842p:plainf:id:kharuka2016:20170825113848p:plainf:id:kharuka2016:20170825113852p:plain

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

参考:

udemy 実践Pythonデータサイエンス

www.udemy.com

Pythonスタートブック

Pythonスタートブック