✅作者简介:大家好我是Xlong,一枚正在学习COMSOL、Python的工科研究僧
📃个人主页: Xlong的个人博客主页
🔥系列专栏: Python大数据分析
💖如果觉得博主的文章还不错的话,请👍支持一下博主哦🤞
在上篇文章中主要介绍了DataFrame的数据分析及画图功能。本文主要介绍DataFrame的合并。
目录
2.1.4 使用concat合并时,可以添加keys参数来区分来自哪个DataFrame
2.2 使用join函数合并表,常用于行索引相同的两个DataFrame
一、前言
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
print(pop.head(),'\n') #DataFrame.head() 可以读取Dataframe的前n行,默认n=5
print(len(gdp)) #len()可以返回DtaFrame的行数
运行结果:
2018年
省份
北京市 2154
天津市 1560
河北省 7556
山西省 3718
内蒙古自治区 253431
二、DataFrame的合并
DataFrame可以保存任意维度的数据。 我们尝试将gdp和pop两个dataframe合并成一个。
2.1 concat方法
2.1.1 concat横向合并
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
df=pd.concat([gdp,pop],axis=1) ##axis=0是纵向,=1是横向
print(df)
运行结果:
2018年 2018年
省份
北京市 30319.98 2154
天津市 18809.64 1560
河北省 36010.27 7556
山西省 16818.11 3718
内蒙古自治区 17289.22 2534
辽宁省 25315.35 4359
吉林省 15074.62 2704
黑龙江省 16361.62 3773
上海市 32679.87 2424
江苏省 92595.40 8051
浙江省 56197.15 5737
安徽省 30006.82 6324
福建省 35804.04 3941
江西省 21984.78 4648
山东省 76469.67 10047
河南省 48055.86 9605
湖北省 39366.55 5917
湖南省 36425.78 6899
广东省 97277.77 11346
广西壮族自治区 20352.51 4926
海南省 4832.05 934
重庆市 20363.19 3102
四川省 40678.13 8341
贵州省 14806.45 3600
云南省 17881.12 4830
西藏自治区 1477.63 344
陕西省 24438.32 3864
甘肃省 8246.07 2637
青海省 2865.23 603
宁夏回族自治区 3705.18 688
新疆维吾尔自治区 12199.08 2487
因此需要修改列名,使用DataFrame.rename()方法
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
gdp.rename(columns={'2018年': 'GDP'},inplace=True)
#字典中,key为旧名字,value为新名字,key值不存在就不不改名,不会报错
print(gdp)
运行结果:
GDP
省份
北京市 30319.98
天津市 18809.64
河北省 36010.27
山西省 16818.11
内蒙古自治区 17289.22
辽宁省 25315.35
吉林省 15074.62
黑龙江省 16361.62
上海市 32679.87
江苏省 92595.40
浙江省 56197.15
安徽省 30006.82
福建省 35804.04
江西省 21984.78
山东省 76469.67
河南省 48055.86
湖北省 39366.55
湖南省 36425.78
广东省 97277.77
广西壮族自治区 20352.51
海南省 4832.05
重庆市 20363.19
四川省 40678.13
贵州省 14806.45
云南省 17881.12
西藏自治区 1477.63
陕西省 24438.32
甘肃省 8246.07
青海省 2865.23
宁夏回族自治区 3705.18
新疆维吾尔自治区 12199.08
先建好改名字典再统一改
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
pop_newname={'2018年': 'POP'}
pop.rename(columns=pop_newname,inplace=True)
print(pop)
运行结果:
POP
省份
北京市 2154
天津市 1560
河北省 7556
山西省 3718
内蒙古自治区 2534
辽宁省 4359
吉林省 2704
黑龙江省 3773
上海市 2424
江苏省 8051
浙江省 5737
安徽省 6324
福建省 3941
江西省 4648
山东省 10047
河南省 9605
湖北省 5917
湖南省 6899
广东省 11346
广西壮族自治区 4926
海南省 934
重庆市 3102
四川省 8341
贵州省 3600
云南省 4830
西藏自治区 344
陕西省 3864
甘肃省 2637
青海省 603
宁夏回族自治区 688
新疆维吾尔自治区 2487
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
gdp.rename(columns={'2018年': 'GDP'},inplace=True)
pop_newname={'2018年': 'POP'}
pop.rename(columns=pop_newname,inplace=True)
df_combine=pd.concat([gdp,pop],axis=1) #axis=1即行索引
print(df_combine)
运行结果:
GDP POP
省份
北京市 30319.98 2154
天津市 18809.64 1560
河北省 36010.27 7556
山西省 16818.11 3718
内蒙古自治区 17289.22 2534
辽宁省 25315.35 4359
吉林省 15074.62 2704
黑龙江省 16361.62 3773
上海市 32679.87 2424
江苏省 92595.40 8051
浙江省 56197.15 5737
安徽省 30006.82 6324
福建省 35804.04 3941
江西省 21984.78 4648
山东省 76469.67 10047
河南省 48055.86 9605
湖北省 39366.55 5917
湖南省 36425.78 6899
广东省 97277.77 11346
广西壮族自治区 20352.51 4926
海南省 4832.05 934
重庆市 20363.19 3102
四川省 40678.13 8341
贵州省 14806.45 3600
云南省 17881.12 4830
西藏自治区 1477.63 344
陕西省 24438.32 3864
甘肃省 8246.07 2637
青海省 2865.23 603
宁夏回族自治区 3705.18 688
新疆维吾尔自治区 12199.08 2487
2.1.2 concat纵向合并
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False #针对坐标轴中负号显示不出来的问题
pop=pd.read_excel('GDPandPopulation.xlsx',sheet_name='Population',index_col=0)
gdp=pd.read_excel('GDPandPopulation.xlsx',sheet_name='GDP',index_col=0)
gdp.rename(columns={'2018年': 'GDP'},inplace=True)
pop_newname={'2018年': 'POP'}
pop.rename(columns=pop_newname,inplace=True)
df_combine=pd.concat([gdp,pop],axis=1) #axis=1即行索引
df1=df_combine[:][0:5]
df2=df_combine[:][5:]
print(df1,'\n')
print(df2)
运行结果:
GDP POP
省份
北京市 30319.98 2154
天津市 18809.64 1560
河北省 36010.27 7556
山西省 16818.11 3718
内蒙古自治区 17289.22 2534GDP POP
省份
辽宁省 25315.35 4359
吉林省 15074