Python_Pandas_数据表的处理

一.转置数据表的行列

描述

数据转置就是将数据表的行数据转换到列方向上,将列数据转换到行方向上

用法和参数

DataFrame.T

实例

import pandas as pd

data = pd.read_excel('产品统计表.xlsx')
print(data)
'''
编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)
0  a001   背包        16        65     60    960   3900   2940
1  a002   钱包        90       187     50   4500   9350   4850
2  a003   背包        16        65     23    368   1495   1127
3  a004  手提包        36       147     26    936   3822   2886
4  a005   钱包        90       187     78   7020  14586   7566
5  a006  单肩包        58       124     63   3654   7812   4158
6  a007  单肩包        58       124     58   3364   7192   3828
'''
print(data.T)
'''
0     1     2     3      4     5     6
编号        a001  a002  a003  a004   a005  a006  a007
产品          背包    钱包    背包   手提包     钱包   单肩包   单肩包
成本价(元/个)    16    90    16    36     90    58    58
销售价(元/个)    65   187    65   147    187   124   124
数量(个)       60    50    23    26     78    63    58
成本(元)      960  4500   368   936   7020  3654  3364
收入(元)     3900  9350  1495  3822  14586  7812  7192
利润(元)     2940  4850  1127  2886   7566  4158  3828
'''

二.将数据表转换为树形形状

描述

将数据表转换为树形结构就是在维持二维表格的行标签不变的情况下,把列标签也变成行标签,通俗点讲,就是为二维表格建立层次化的索引

用法和参数

DataFrame.stack()

实例

import pandas as pd
data = pd.read_excel('产品统计表3.xlsx')
print(data)
'''
编号   产品  销售价(元/个)  数量(个)  收入(元)
0  a001   背包        65     60   3900
1  a002   钱包       187     50   9350
2  a003  单肩包       124     58   7192
'''
print(data.stack())
'''
0  编号          a001
   产品            背包
   销售价(元/个)      65
   数量(个)         60
   收入(元)       3900
1  编号          a002
   产品            钱包
   销售价(元/个)     187
   数量(个)         50
   收入(元)       9350
2  编号          a003
   产品           单肩包
   销售价(元/个)     124
   数量(个)         58
   收入(元)       7192
dtype: object
'''

三.数据表的拼接

描述

  • merge()函数可以根据一个或多个相同的列将不同数据表的行连接起来
  • concat()函数采用的是全连接数据的方式,他可以直接将两个或多个数据表合并,即不需要两表的某些列或索引相同,也可以把数据整合到一起
  • append()函数可以直接将一个或多个数据表中的数据合并到其他数据表中

语法和参数

  • pandas.merge(left, right, how=‘inner’, on=None)
    • left:合并的第一个数据表
    • right:合并的第二个数据表
    • how:取值为inner或outer,默认为inner
      • inner:合并两个数据表中共有的数据
      • outer:合并两个数据表中所有的数据
    • on:指定一句哪一列进行合并操作
  • pandas.concat(objs, ignore_index=False)
    • objs:要合并的数据表
    • ignore_index:重置行标签
  • DataFrame.append(obj, ignore_index=True)
    • obj:要添加的数据
    • ignore_index:是否重置序号

实例

import pandas as pd

data1 = pd.read_excel('产品表.xlsx', sheet_name=0)
data2 = pd.read_excel('产品表.xlsx', sheet_name=1)
print(data1)
'''
员工编号 员工姓名 员工性别
0  a001   张三    男
1  a002   李四    女
2  a003   王五    男
3  a004   赵六    男
'''
print(data2)
'''
员工编号 员工姓名    销售业绩
0  a001   张三  360000
1  a002   李四  458000
2  a003   王五  369000
3  a004   赵六  450000
4  a005   钱七  500000
'''
# 连接两个数据表
print(pd.merge(data1, data2))
'''
员工编号 员工姓名 员工性别    销售业绩
0  a001   张三    男  360000
1  a002   李四    女  458000
2  a003   王五    男  369000
3  a004   赵六    男  450000
'''
print(pd.merge(data1, data2, how='outer'))
'''
员工编号 员工姓名 员工性别    销售业绩
0  a001   张三    男  360000
1  a002   李四    女  458000
2  a003   王五    男  369000
3  a004   赵六    男  450000
4  a005   钱七  NaN  500000
'''
# 按照员工姓名连接两个数据表
print(pd.merge(data1, data2, on='员工姓名'))
'''
员工编号_x 员工姓名 员工性别 员工编号_y    销售业绩
0   a001   张三    男   a001  360000
1   a002   李四    女   a002  458000
2   a003   王五    男   a003  369000
3   a004   赵六    男   a004  450000
'''
# 采用全连接的方式连接两个数据表
print(pd.concat([data1, data2]))
'''
员工编号 员工姓名 员工性别      销售业绩
0  a001   张三    男       NaN
1  a002   李四    女       NaN
2  a003   王五    男       NaN
3  a004   赵六    男       NaN
0  a001   张三  NaN  360000.0
1  a002   李四  NaN  458000.0
2  a003   王五  NaN  369000.0
3  a004   赵六  NaN  450000.0
4  a005   钱七  NaN  500000.0
'''
# 连接两个数据表,并且重置行标签
print(pd.concat([data1, data2], ignore_index=True))
'''
员工编号 员工姓名 员工性别      销售业绩
0  a001   张三    男       NaN
1  a002   李四    女       NaN
2  a003   王五    男       NaN
3  a004   赵六    男       NaN
4  a001   张三  NaN  360000.0
5  a002   李四  NaN  458000.0
6  a003   王五  NaN  369000.0
7  a004   赵六  NaN  450000.0
8  a005   钱七  NaN  500000.0
'''
# 把数据表2合并到数据表1中
print(data1.append(data2))
'''
员工编号 员工姓名 员工性别      销售业绩
0  a001   张三    男       NaN
1  a002   李四    女       NaN
2  a003   王五    男       NaN
3  a004   赵六    男       NaN
0  a001   张三  NaN  360000.0
1  a002   李四  NaN  458000.0
2  a003   王五  NaN  369000.0
3  a004   赵六  NaN  450000.0
4  a005   钱七  NaN  500000.0
'''
print(data1.append(
    {"员工编号": 'a005', '员工姓名': '孙七', '员工性别': '男'}, ignore_index=True
))
'''
员工编号 员工姓名 员工性别
0  a001   张三    男
1  a002   李四    女
2  a003   王五    男
3  a004   赵六    男
4  a005   孙七    男
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值