8.Pandas库入门(8)-数据透视与vlookup功能

一、数据透视

1 数据透视表:pivot_table

pivot_table有四个最重要的参数indexvaluescolumnsaggfunc

pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')

1 index

需要聚合的列名,默认情况下聚合所有数据值的列。

import pandas as pd
path = r'F:\Pycharm_projects\Numpy_Pandas_study\透视.xlsx'
data = pd.read_excel(path,engine='openpyxl')
data2 = pd.pivot_table(data,index=['部门','销售人员'])
print(data2)

2 values

在结果透视的行上进行分组的列名或其它分组键(透视表里显示的列)。

import pandas as pd
path = r'F:\Pycharm_projects\Numpy_Pandas_study\透视.xlsx'
data = pd.read_excel(path,engine='openpyxl')
data2 = pd.pivot_table(data,index=['部门','销售人员'],values=['数量','金额'])
print(data2)

3 columns

在结果透视表的列上进行分组的列名或其它分组键。

import pandas as pd
path = r'F:\Pycharm_projects\Numpy_Pandas_study\透视.xlsx'
data = pd.read_excel(path,engine='openpyxl')
data2 = pd.pivot_table(data,index=['部门','销售人员'],values=['数量','金额'],columns='所属区域')
print(data2)

4 Aggfunc

聚合函数或函数列表(默认情况下是mean)可以是groupby里面的任意有效函数。

import pandas as pd
import numpy as np
path = r'F:\Pycharm_projects\Numpy_Pandas_study\透视.xlsx'
data = pd.read_excel(path,engine='openpyxl')
data2 = pd.pivot_table(data,index=['部门','销售人员'],values=['数量','金额'],columns='所属区域',aggfunc=[sum,np.mean])
print(data2)

5 其它参数

  • fill_value:在结果表中替换缺失值。
  • dropna:如果为True,将不含所有条目均为Na的列(默认为False)
  • margins:添加行/列小计和总计(默认为False)

 2 交叉表:crosstab

是透视表的一部分, aggfunc=count而已。

pd.crosstab(data.Nationality, data.Handedness, margins=True)

 【示例】

import pandas as pd
import numpy as np
path = r'F:\Pycharm_projects\Numpy_Pandas_study\透视.xlsx'
data = pd.read_excel(path,engine='openpyxl')
data2 = pd.crosstab([data.日期.dt.month,data.所属区域],data.部门,margins=True)
print(data2)

二、vlookup功能

(1)

import pandas as pd
import numpy as np
path = r'F:\Pycharm_projects\Numpy_Pandas_study\Vlookup.xlsx'
data1 = pd.read_excel(path, sheet_name='花名册', engine='openpyxl')
data2 = pd.read_excel(path, sheet_name='成绩单', engine='openpyxl')
result = pd.merge(data1,data2.loc[:,['学号','总分']],how='left',on='学号')
print(result)

 (2)

如果指定列的位置,先把需要调整的列的数据拿出来,之后,再将这个列删掉,最后,再用插入的方式把这个列调整到对应的位置上。

import pandas as pd
路径 = 'c:/pandas/Vlookup.xlsx'
数据1 = pd.read_excel(路径,sheet_name='花名册')
数据2 = pd.read_excel(路径,sheet_name='成绩单')
结果 = pd.merge(数据1,数据2.loc[:,['学号','总分']],how='left',on='学号')
print(结果)
结果_总分 = 结果.总分
结果 = 结果.drop('总分',axis=1) # 笔记10.1
结果.insert(0,'总分',结果_总分) # Py基础篇PPT第30页在指定位置新增数据
print(结果)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值