Python提供的透视表函数pivot_table有点类似于在Excel中使用数据透视表功能。

透视表是一种可以对数据动态排布并且分类汇总的表格格式。


目录

 

一、所需模块

二、读入数据

三、相关参数详解

3.1参数index(每个pivot_table必须拥有一个index)

3.2参数values

3.3参数aggfunc

3.4参数columns

3.5参数fill_value和参数margins=True进行汇总


一、所需模块

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
import matplotlib.pyplot as plt

二、读入数据

注意:读入数据格式为DataFrame

events_data = pd.read_csv("E:\...\event_data_train.csv")
submissions_data = pd.read_csv("E:\...\submissions_data_train.csv")

#将时间戳转换为时间,精确到秒s,并保存到date列
events_data["date"] = pd.to_datetime(events_data.timestamp,unit="s")
#将日期保存到day列
events_data["day"] = events_data.date.dt.date

三、相关参数详解

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

3.1参数index(每个pivot_table必须拥有一个index

索引可以设置一个索引,也可以设置为多个。

多层索引,会按照代码中索引的顺序,下一层索引在上一层索引在再次分类。即,Index就是层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段

而重设索引.reset_index()函数,是在列前从0开始计数,如同excel中左边不同的列的计数数字。

#单个索引
events_data.pivot_table(index="user_id")
#本句也可写成pd.pivot_table(events_data,index="user_id")只在此列举一次,下同
#多个索引
events_data.pivot_table(index=["user_id","action"])
#设置索引后,按顺序重新排列
events_data.pivot_table(index=["user_id","action"]).reset_index()

3.2参数values

这个参数默认是显示的是所选列的平均值。可通过函数aggfunc进行更改。

可以对需要的计算数据进行筛选,即结果中只显示所需要的列。

3.3参数aggfunc

用来设置函数列表,可一个,可多个。常用值:count,len,np.sum。

同时要了解,当values有多个值时,aggfunc可用大括号来对多个值设置不同的函数。

当然,一个值还是可以运用多个函数。

即,可以设置我们对数据聚合时进行的函数操作。

#例如
aggfunc={"step_id":np.sum,"submission_status":"count"}

3.4参数columns

注意与参数values的区别。参数columns是可选的,也是用来细分。

Columns类似Index可以设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式。

3.5参数fill_value和参数margins=True进行汇总

透视表中如果出现NaN,对于后续使用相当不便。因此,用其他值代替是最好的选择。这里,用fill_value 将它们设置为其他值。