本文主要针对Python处理Excel & CSV文件的应用。所有代码均实例化代入且逐条备注解释。
全文逐条手工输入整理,可能会产生错误之处,还请指正。
之后会陆续整理 “爬虫” 与 “金融量化分析” 两个文档
# --------------------------------------------------------------------------------------------
数据连接Concat/Join/Merge:
1. Concat:
基础数据1 | A | B | C | D |
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
基础数据2 | A | B | C | D |
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
基础数据3 | B | D | F |
2 | B2 | D2 | F2 |
3 | B3 | D3 | F3 |
6 | B6 | D6 | F6 |
7 | B7 | D7 | F7 |
数据1= pd.concat([基础数据1,基础数据2]) # 方法一
数据1= 基础数据1.append(基础数据2) # 方法二
数据1 | A | B | C | D |
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
数据2= pd.concat([基础数据1,基础数据3],axis=1) # 行对齐
数据2 | A | B | C | D | B | D | F |
0 | A0 | B0 | C0 | D0 | NaN | NaN | NaN |
1 | A1 | B1 | C1 | D1 | NaN | NaN | NaN |
2 | A2 | B2 | C2 | D2 | B2 | D2 | F2 |
3 | A3 | B3 | C3 | D3 | B3 | D3 | F3 |
6 | NaN | NaN | NaN | NaN | B6 | D6 | F6 |
7 | NaN | NaN | NaN | NaN | B7 | D7 | F7 |
数据3= pd.concat([基础数据1,基础数据2],keys=['基础数据1','基础数据2']) # 方法一
数据3= pd.concat({'基础数据1':基础数据1,'基础数据2':基础数据2}) # 方法二
数据3 | A | B | C | D | |
基础数据1 | 0 | A0 | B0 | C0 | D0 |
基础数据1 | 1 | A1 | B1 | C1 | D1 |
基础数据1 | 2 | A2 | B2 | C2 | D2 |
基础数据1 | 3 | A3 | B3 | C3 | D3 |
基础数据2 | 4 | A4 | B4 | C4 | D4 |
基础数据2 | 5 | A5 | B5 | C5 | D5 |
基础数据2 | 6 | A6 | B6 | C6 | D6 |
基础数据2 | 7 | A7 | B7 | C7 | D7 |
数据4=pd.concat([基础数据1,基础数据3],axis=1,join='inner')
数据4 | A | B | C | D | B | D | F |
2 | A2 | B2 | C2 | D2 | B2 | D2 | F2 |
3 | A3 | B3 | C3 | D3 | B3 | D3 | F3 |
数据5=pd.concat([基础数据1,基础数据3],axis=1,join_axis=[基础数据1.index])
数据5 | A | B | C | D | B | D | F |
0 | A0 | B0 | C0 | D0 | NaN | NaN | NaN |
1 | A1 | B1 | C1 | D1 | NaN | NaN | NaN |
2 | A2 | B2 | C2 | D2 | B2 | D2 | F2 |
3 | A3 | B3 | C3 | D3 | B3 | D3 | F3 |
2. Join:
基础数据1 | A | B | key |
0 | A0 | B0 | K0 |
1 | A1 | B1 | K1 |
2 | A2 | B2 | K0 |
3 | A3 | B3 | K1 |
基础数据2 | C | D |
K0 | C0 | D0 |
K1 | C1 | D1 |
数据1=数据1.join(数据2,on='key')
数据1 | A | B | key | C | D |
0 | A0 | B0 | K0 | C0 | D0 |
1 | A1 | B1 | K1 | C1 | D1 |
2 | A2 | B2 | K0 | C0 | D0 |
3 | A3 | B3 | K1 | C1 | D1 |
3. Merge:
基础数据1 | A | B | key1 | key2 |
0 | A0 | B0 | K0 | K0 |
1 | A1 | B1 | K0 | K1 |
2 | A2 | B2 | K1 | K0 |
3 | A3 | B3 | K2 | K1 |
基础数据2 | C | D | key1 | key2 |
0 | C0 | D0 | K0 | K0 |
1 | C1 | D1 | K1 | K0 |
2 | C2 | D2 | K1 | K0 |
3 | C3 | D3 | K2 | K0 |
数据1=pd.merge(基础数据1,基础数据2,on=['key1','key2'])
数据1 | A | B | key1 | key2 | C | D |
0 | A0 | B0 | K0 | K0 | C0 | D0 |
1 | A1 | B1 | K1 | K0 | C1 | D1 |
2 | A2 | B2 | K1 | K0 | C2 | D2 |
数据2=pd.merge(基础数据1,基础数据2,on=['key1','key2'] ,how='outer')
# outer:全外连接,根据基础数据1&2的’key1’&’key2’两列,连接基础数据1&2
数据2 | A | B | key1 | key2 | C | D |
0 | A0 | B0 | K0 | K0 | C0 | D0 |
1 | A1 | B1 | K0 | K1 | NaN | NaN |
2 | A2 | B2 | K1 | K0 | C1 | D1 |
3 | A2 | B2 | K1 | K0 | C2 | D2 |
4 | A3 | B3 | K2 | K1 | NaN | NaN |
5 | NaN | NaN | K2 | K0 | C3 | D3 |
数据3=pd.merge(基础数据1,基础数据2,on=['key1','key2'] ,how='left')
# left:左连接,根据基础数据2的’key1’&’key2’两列,连接基础数据1&2
数据3 | A | B | key1 | key2 | C | D |
0 | A0 | B0 | K0 | K0 | C0 | D0 |
1 | A1 | B1 | K0 | K1 | NaN | NaN |
2 | A2 | B2 | K1 | K0 | C1 | D1 |
3 | A2 | B2 | K1 | K0 | C2 | D2 |
4 | A3 | B3 | K2 | K1 | NaN | NaN |
数据4=pd.merge(基础数据1,基础数据2,on=['key1','key2'] ,how='right')
# right:右连接,根据基础数据1的’key1’&’key2’两列,连接基础数据1&2
数据4 | A | B | key1 | key2 | C | D |
0 | A0 | B0 | K0 | K0 | C0 | D0 |
1 | A2 | B2 | K1 | K0 | C1 | D1 |
2 | A2 | B2 | K1 | K0 | C2 | D2 |
3 | NaN | NaN | K2 | K0 | C3 | D3 |
数据5=pd.merge(基础数据1,基础数据2)
数据6=pd.merge(基础数据1,基础数据2,on='姓名',how='right')
# 根据基础数据1的姓名列,连接基础数据1&2
数据7=pd.merge(基础数据1,基础数据2,on='姓名',how='left')
# 根据基础数据2的姓名列,连接基础数据1&2
数据8=pd.merge(基础数据1,基础数据2,on='姓名',how='outer')
# 根据基础数据1&2的全部姓名列,连接基础数据1&2
数据9=pd.merge(基础数据1,基础数据2,left_on='姓名',right_index=True)
# 根据基础数据1的姓名列,连接基础数据2的index列
数据10=pd.merge(基础数据1,基础数据2,on='k',suffixes=['_l','_x'])
# suffixes为后缀参数