Python提供的透视表函数pivot_table有点类似于在Excel中使用数据透视表功能。
透视表是一种可以对数据动态排布并且分类汇总的表格格式。
目录
3.1参数index(每个pivot_table必须拥有一个index)
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
将它们设置为其他值。
【参考文献】