西安企业网站开发,图片制作表情包,wordpress种子视频,室内设计平面图立面图效果图一、
1、长宽格式转换 基于多重索引#xff0c;Pandas 可以很容易地完成长型、宽型数据格式的相互转换。 1.1 转换为最简格式
stack#xff08;#xff09;其使用法如下#xff1a; stack函数用于将DataFrame中的列转换为行#xff0c;即将宽格式数据转换为长格式数据。…一、
1、长宽格式转换 基于多重索引Pandas 可以很容易地完成长型、宽型数据格式的相互转换。 1.1 转换为最简格式
stack其使用法如下 stack函数用于将DataFrame中的列转换为行即将宽格式数据转换为长格式数据。
df.stack(level -1 :需要处理的索引级别默认为全部int/string/listdropna True :是否删除为缺失值的行
)#转换后的结果可能为 Series
例如下列代码
import pandas as pd# 创建DataFrame
data {A: [1, 2, 3],B: [4, 5, 6],C: [7, 8, 9]
}
df pd.DataFrame(data)# 将列转换为行
stacked df.stack()
print(stacked)其打印结果为 即stack函数将原本的DataFrame转换为了一个Series对象每个元素的索引由原先的行索引和列索引组成。 1.2 长宽型格式的自由互转 df.unstack(level -1 :需要处理的索引级别默认为全部int/string/listfill_value :用于填充缺失值的数值
) 例如下列代码演示 import pandas as pd# 创建堆叠的数据
data {(A, x): [1, 2, 3],(A, y): [4, 5, 6],(B, x): [7, 8, 9],(B, y): [10, 11, 12]
}
stacked pd.DataFrame(data)# 将数据恢复为原始格式
unstacked stacked.unstack()
print(unstacked)其运行结果为 即unstack函数将原本的堆叠的数据恢复为了原始的DataFrame数据格式每个列索引成为了多级的列索引。 1.3 数据转置: df.T 数据转置是将数据的行和列进行互换的操作。在Python中可以通过使用pandas库的transpose()函数或T属性来实现数据的转置。如果df是一个pandas数据框DataFrame可以使用df.T来转置数据。 import pandas as pddata {A: [1, 2, 3],B: [4, 5, 6],C: [7, 8, 9]}
df pd.DataFrame(data)print(df)其打印结果为 • 可以使用stack函数将列转换为索引 stacked_df df.stack()
print(stacked_df)其输出结果如图所示 • 可以使用unstack函数将索引转换为列 unstacked_df stacked_df.unstack()
print(unstacked_df) 此时转换会原来的结果 2、多个数据源的合并 2.1 数据的纵向合并 concat函数 实现数据的纵向合并。默认情况下concat按照行进行合并。 其具体函数属性以及用法如下 pd.concat(objs :需要合并的对象列表形式提供leftpd.DataFrame({key:[k0,k1,k2,k3],A:[A0,A1,A2,A3],B:[B0,B1,B2,B3],})rightpd.DataFrame({key:[k0,k1,k2,k3],C:[C0,C1,C2,C3],D:
[D0,D1,D2,D3],})axis 0 :对行还是对列方向逬行合并(0 index 、 1 columns )join outer :对另一个轴向的索引值如何逬行处理(inner 、outer )ignore_index Falsekeys None :为不同数据源的提供合并后的索引值verify_integrity False 是否检查索引值的唯一性有重复时报错copy True
) 2.1.1 一维series拼接 ser1pd.Series([1,2,3],indexlist(ABC))
ser2pd.Series([4,5,6],indexlist(DEF))
pd.concat([ser1,ser2]) 2.1.2 df 对象拼接 import pandas as pddf1 pd.DataFrame({A: [1, 2, 3],B: [4, 5, 6]})
df2 pd.DataFrame({A: [7, 8, 9],B: [10, 11, 12]})
# 使用concat函数进行纵向合并
combined_df pd.concat([df1, df2])
print(combined_df)在这个例子中df1和df2是两个具有相同列的DataFrame。通过使用concat函数并传入一个包含df1和df2的列表可以将它们纵向合并为一个新的DataFrame。合并后的DataFrame保留了原始的行索引。 需要注意的是如果两个DataFrame在列的数量或列名上有差异那么合并时可能会出现缺失值。此时可以使用参数axis1来进行横向合并。 此时的生成结果为 可以使用reset_index重置一下第一列的索引即下列代码 combined_df.reset_index(dropTrue) 其中dropTrue表示将生成的index列删除 2.1.3 两个df对象拼接按行进行拼接 df1make_df(AB,[1,2])
df2make_df(AB,[3,4])
pd.concat([df1,df2],axis1)
#或者
pd.concat([df1,df2],axiscolumns) 2.1.4 两个df对象拼接如果索引重复 xmake_df(AB,[1,2])
ymake_df(AB,[1,2])
pd.concat([x,y])
#解决索引重复问题加ignore_index属性
pd.concat([x,y],ignore_indexTrue)#重置索引
# #解决索引重复问题加keys属性
pd.concat([x,y],keyslist(xy)) #复合索引 2.1.5 两个df对象拼接join参数的使用 amake_df(ABC,[1,2])
bmake_df(BCD,[3,4])
# pd.concat([a,b],joininner)#内连接,只合并有相同列名的数据
pd.concat([a,b],joinouter)#外连接,合并所有的列
# amake_df(ABC,[1,2,3,4])
# bmake_df(BCD,[3,4,5])
# pd.concat([a,b],joinouter,axis1)#沿着y轴方向拼接 2.2 数据的横向合并 2.2.1 可以使用concat函数 在其中的参数增加一个参数axis1即表示横向合并 import pandas as pd# 创建两个数据集
df1 pd.DataFrame({A: [1, 2, 3], B: [4, 5, 6]})
df2 pd.DataFrame({C: [7, 8, 9], D: [10, 11, 12]})# 使用 pd.concat() 函数横向合并
result pd.concat([df1, df2], axis1)print(result)2.2.2 使用pd.merge函数 函数属性及其用法为 merge 命令使用像 SQL 的连接方式
pd.merge需要合并的 DFleft :需要合并的左侧 DFright :需要合并的右侧 DFhow inner:具体的连接类型{left、right 、outer 、 inner、两个 DF 的连接方式on :用于连接两个 DF 的关键变量多个时为列表必须在两侧都出现left_on :左侧 DF 用于连接的关键变量多个时为列表right_on :右侧 DF 用于连接的关键变量多个时为列表left_index False :是否将左侧 DF 的索引用于连接right_index False :是否将右侧 DF 的索引用于连接
) • 当两个数据有一列完全相同时 leftpd.DataFrame({key:[k0,k1,k2,k3],A:[A0,A1,A2,A3],B:[B0,B1,B2,B3],})
rightpd.DataFrame({key:[k0,k1,k2,k3],C:[C0,C1,C2,C3],D:[D0,D1,D2,D3],})
resultpd.merge(left,right) 其生成结果为 • left_on与right_on 即如果没有一个列相同的则无法连接需使用left_on与right_on来确定连接位置 import pandas as pd# 创建两个数据集
df1 pd.DataFrame({A: [1, 2, 3], B: [4, 5, 6]})
df2 pd.DataFrame({C: [7, 8, 9], D: [10, 11, 12]})# 使用 DataFrame.merge() 方法横向合并
result df1.merge(df2, left_indexTrue, right_indexTrue)print(result)其打印结果为 • how参数的使用 #how参数的使用
leftpd.DataFrame({key:[k0,k1,k2,k3],A:[A0,A1,A2,A3],B:[B0,B1,B2,B3],})
rightpd.DataFrame({key:[k0,k1,k2,k4],C:[C0,C1,C2,C3],D:[D0,D1,D2,D3],})
resultpd.merge(left,right,howleft) 即当有一整列相同可以配对时指定连接类型