DAY 7
0
AI & Data

## Day7-輕鬆駕馭數據part5

``````imprt numpy as np
import pandas as pd
``````

## Concat and Append

1. np.concatenate
• 先建立一個矩陣，並將矩陣連結在一起。
``````x = [[1, 2],
[3, 4]]
np.concatenate([x, x], axis=1)
``````

1. pd.concat
• 先建立兩筆，並將資料連結在一起。
``````ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])
ser2 = pd.Series(['D', 'E', 'F'], index=[4, 5, 6])
pd.concat([ser1, ser2])
``````

• 將多維的資料連接，並且指定連接方式為行的方式連接。
``````df3 = make_df('AB', [0, 1])
df4 = make_df('CD', [0, 1])
display('df3', 'df4', "pd.concat([df3, df4], axis='col')")
``````

• 利用join來指定連結條件
``````display('df5', 'df6',"pd.concat([df5, df6], join='inner')")
``````

``````display('df5', 'df6', "pd.concat([df5, df6], join_axes=[df5.columns])")
``````

2.append()
append方法不會修改原始對象，而是使用組合數據來創建新的對象。

``````display('df1', 'df2', 'df1.append(df2)')
``````

## Merge and Join

• 創建兩筆資料
``````df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
``````

• 一對一合併
``````df3 = pd.merge(df1, df2)
df3
``````

• 多對一合併
``````df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
``````

• 多對多合併
``````df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
'Engineering', 'Engineering', 'HR', 'HR'],
display("pd.merge(df1, df5)")
``````

• 指定合併的資料行標籤名稱
``````display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
``````

• 當兩個想要連接資料表的行標籤不同時，可以用left_on跟right_on，並且可以利用drop方法，將多餘的行標籤刪除。
``````df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
'salary': [70000, 80000, 120000, 90000]})
display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)')
``````

• 資料進行合併，可以利用how來指定連接條件，像是：inner、outter、left
``````df6 = pd.DataFrame({'name': ['Peter', 'Paul', 'Mary'],