這節主要學習:學習如何利用pandas中的整合多個DataFrame或者Series中的資料。
Concat
知識要點
1:concat解決的是對資料進行合并的問題
2:concat()方法的格式
pd.concat(objs, axis=0, join='outer', ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
注:
bjs:清單對象,待合并的DataFrame或者Series,可以包含兩個或者兩個以上的對象。
axis:用來指定按行(上下拼)還是按列(左右拼)合并,預設按照行進行合并。如果需要按照列進行合并,需要指定參數axis=1
join:确定合并時候記錄的比對方法,後面介紹按列進行合并的時候會專門展開。
前提條件:準備多份資料檔案
示例代碼如下:
#城市
#引入pandas子產品
import pandas as pd
#通過清單存儲每個城市的基本資訊
emp1001=['北京',34117,28489,22300,18499,17854]
emp1002=['天津',15139,12870,9931,8828,8390]
emp1003=['深圳',9738,7354,7798,5562,4943]
emp1004=['廣州',8827,7348,7303,7155,6668]
emp1005=['海口',5662,5196,4946,5153,4631]
emp1006=['成都',7944,6838,6416,5865,6074]
emp_list=[emp1001,emp1002,emp1003,emp1004,emp1005,emp1006]
# 設定列索引
columns_value=['城市','2017年','2016年','2015年','2014年','2000年']
# 建立表格
df=pd.DataFrame(emp_list,columns=columns_value)
# # 資料儲存的位址
csv_file = 'E:/pycharm-workpace/data_analyze/num08/city_data.csv'
print('output:',csv_file)
# 将内容存入到CSV檔案
df.to_csv(csv_file)
# 列印剛剛構造的DataFrame
print(df)
按行進行合并
#按行合并
# 整體思路
# 根據df構造了兩個DataFrame變量df1和df2,df的前2行為df1,第3到第4行為df2,
# 接着通過concat()方法合并df1和df2,最終結果放到df3中
示例代碼如下:
#讀取檔案
import pandas as pd
# 檔案位址
csv_file = 'E:/pycharm-workpace/data_analyze/num08/city_data.csv'
df=pd.read_csv(csv_file,index_col='城市')
#構造2個DataFrame,分别讀取檔案的0到2行,和第3到4行。
df1=df[0:2]
df2=df[3:4]
#TODO
#合并2個DataFrame
df3=pd.concat([df1,df2])
print(df3)
按列進行合并
#按列合并
# 整體思路
# 根據df構造了兩個DataFrame變量df1和df2,df的前2行為df1,第3到第4行為df2,
# 接着通過concat()方法合并df1和df2,最終結果放到df3中
#讀取檔案
import pandas as pd
# 檔案位址
csv_file = 'E:/pycharm-workpace/data_analyze/num08/city_data.csv'
df=pd.read_csv(csv_file,index_col='城市')
#構造2個DataFrame,df1包含2017,2016,2015的資料,df2包含2014年、2013年、2012年的資料
df1=df.loc[:,['2017年','2000年']]
df2=df.loc[:,['2016年','2015年']]
#TODO
#合并2個DataFrame
df3=pd.concat([df1,df2],axis=1)
print(df3)
索引值的比對方式
#預設比對方式
# 整體思路:
# 讀取的檔案分别構造了兩個DataFrame,以城市字段作為結果的行索引。
# df1包含了北京和上海兩個城市2017和2016年的房價資料,
# df2包括了北京和成都兩個城市2000和2015年的資料,
# 隻有北京這個城市的資料在兩個DataFrame中都存在
import pandas as pd
# 檔案位址
csv_file = 'E:/pycharm-workpace/data_analyze/num08/city_data.csv'
df=pd.read_csv(csv_file,index_col='城市')
#構造2個DataFrame df1 df2
df1=df[['2017年','2016年']].loc[['北京','成都']]
df2=df[['2015年','2000年']].loc[['北京','深圳']]
#按列進行合并
df4=pd.concat([df1,df2],axis=1)
print(df4)
内連接配接方式比對:
#按列進行合并,行索引取df1 df2的交集
df5=pd.concat([df1,df2],axis=1,join='inner')
print(df5)