第2关:Pandas创建透视表和交叉表
任务描述
本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间、每个星期下的小费总和情况。
相关知识
透视表
透视表是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上得分组建将数据分配到各个矩形区域中。在pandas中,可以通过pivot_table函数创建透视表。
pivot_talbe函数的参数:
DataFrame.pivot_table(self, values=None, index=None, columns=None,ggfunc='mean', fill_value=None, .margins=False,dropna=True, margins_name='All')
参数名 | 说明 |
---|---|
values | 待聚合的列的名称。默认聚合所有数值列 |
index | 用于分组的列名或其他分组键,出现在结果透视表的行 |
columns | 用于分组的列名或其他分组键,出现在结果透视表的列 |
aggfunc | 聚合函数或函数列表,默认为mean,可以是任何对groupby有效的函数 |
fill_value | 用于替换结果表中的缺失值 |
dropna | boolean值,默认为True |
margins_name | string,默认为‘ALL’,当参数margins为True时,ALL行和列的名字 |
示例:
data = {'A': [1, 2, 2, 3, 2, 4], 'B': [2014, 2015, 2014, 2014, 2015, 2017], 'C': ["a", "b", "c", "d", "e", "f"], 'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1] }
df = pd.DataFrame(data)
df.pivot_table(index=["B"], columns=["C"], values=["A"], aggfunc=sum, margins=True)
输出:
A
C a b c d e f All
B
2014 1.0 NaN 2.0 3.0 NaN NaN 6
2015 NaN 2.0 NaN NaN 2.0 NaN 4
2017 NaN NaN NaN NaN NaN 4.0 4
All 1.0 2.0 2.0 3.0 2.0 4.0 14
交叉表
交叉表是一种用于计算分组频率的特殊透视表。通常使用crosstab函数来创建交叉表。
crosstab的参数
pd.crosstab(index,columns,values=None,rownames=None
colnames=None,aggfunc=None,margins=False,dropna=True,normalize=False)
其中rownames可以设置行名,colnames可以设置列名,而且前两个参数可以是数组、Series或数组列表。
示例:
data = {'A': [1, 2, 2, 3, 2, 4], 'B': [2014, 2015, 2014, 2014, 2015, 2017], 'C': ["a", "b", "c", "d", "e", "f"], 'D': [0.5, 0.9, 2.1, 1.5, 0.5, 0.1] }
df = pd.DataFrame(data)
pd.crosstab(index=[df["B"],df["A"]], columns=df["C"], values=df["A"], aggfunc=sum, margins=True)
输出:
C a b c d e f All
B A
2014 1 1.0 NaN NaN NaN NaN NaN 1 2 NaN NaN 2.0 NaN NaN NaN 2 3 NaN NaN NaN 3.0 NaN NaN 3
2015 2 NaN 2.0 NaN NaN 2.0 NaN 4
2017 4 NaN NaN NaN NaN NaN 4.0 4
All 1.0 2.0 2.0 3.0 2.0 4.0 14
编程要求
使用Pandas中的read_csv函数加载step2/tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间(time) 、每个星期下(day) 的 小费(tip)总和情况。在右侧编辑器begin-end处补充代码。
数据集列名信息如下表:
列名 | 说明 |
---|---|
total_bill | 消费总账单 |
tip | 小费金额 |
day | 消费日期(星期几) |
time | 用餐时间段(早、中、晚) |
size | 吸烟数量 |
测试输入:
预期输出:
透视表: tip
time Dinner Lunch All
day
Fri 35.28 16.68 51.96
Sat 260.40 NaN 260.40
Sun 247.39 NaN 247.39
Thur 3.00 168.83 171.83
All 546.07 185.51 731.58
交叉表:
time Dinner Lunch All
day
Fri 35.28 16.68 51.96
Sat 260.40 NaN 260.40
Sun 247.39 NaN 247.39
Thur 3.00 168.83 171.83
All 546.07 185.51 731.58
#-*- coding: utf-8 -*-
import pandas as pd#创建透视表
def create_pivottalbe(data):###### Begin ######df = pd.DataFrame(data)x = df.pivot_table(index = ['day'],columns = ['time'],values = ['tip'],aggfunc = sum , margins = True)return x###### End #######创建交叉表
def create_crosstab(data):###### Begin ######df = pd.DataFrame(data) y = pd.crosstab(index = df['day'],columns = df['time'],values = df['tip'],aggfunc =sum,margins = True)return y###### End ######def main():#读取csv文件数据并赋值给data###### Begin ######data = pd.read_csv("step2/tip.csv",header = 0)###### End ######piv_result = create_pivottalbe(data)cro_result = create_crosstab(data)print("透视表:\n{}".format(piv_result))print("交叉表:\n{}".format(cro_result))if __name__ == '__main__':main()
第2关:Pandas创建透视表和交叉表相关推荐
- Pandas 统计分析基础 笔记5 _任务4.5 创建透视表与交叉表
文章目录 pandas__任务4.5 创建透视表与交叉表 4.5 创建透视表与交叉表 代码4-67 使用订单号作为透视表索引制作透视表 代码 4-68 修改聚合函数后的透视表 代码 4-69 使用订单 ...
- 【Python】数据分析.pandas.透视表与交叉表
文章目录 数据分析-pandas.透视表与交叉表 一.透视表 二.交叉表 三.任务实现 数据分析-pandas.透视表与交叉表 一.透视表 数据透视表是数据分析中常见的工具之一,根据一个或多个键值对数 ...
- 【Pandas分组聚合】进阶:透视表、交叉表(pivot_table() 、crosstab())
Pandas透视表.交叉表 创建DataFrame结构 透视表 pivot_table() 单列聚合 多列聚合 交叉表 crosstab() 计算分组频率 两列分组后求第三列的统计指标 创建DataF ...
- 4.5 创建透视表与交叉表
4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表 pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表 crosstab函数的 ...
- 【Python】开启Pandas进阶:图解Pandas透视表、交叉表
一.图解Pandas透视表.交叉表 终于开始Pandas进阶内容的写作了.相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计.在Pandas中,我们把它称之为pivot_ ...
- 一文让你吃透!图解 pandas 透视表、交叉表!
一.图解Pandas透视表.交叉表 终于开始Pandas进阶内容的写作了.相信很多人都应该知道透视表,在Excel会经常去制作它,来实现数据的分组汇总统计.在Pandas中,我们把它称之为pivot_ ...
- Pandas数据分析15——pandas数据透视表和交叉表
参考书目:<深入浅出Pandas:利用Python进行数据处理与分析> pandas对数据框也可以像excel一样进行数据透视表整合之类的操作.主要是针对分类数据进行操作,还可以计算数值型 ...
- Python数据分析 | (31) 透视表和交叉表
目录 1. 透视表 2. 交叉表:crosstab 3. 总结 1. 透视表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的 数据汇总工具.它根据一个或多个键对数据进 ...
- python做数据透视表_Python--数据透视表和交叉表、数据读取
数据 透视表 and 交叉表 先看数据是什么样的 ... #date dati = ['2019-11-01','2019-11-02','2019-11-03']*3rng=pd.to_dateti ...
最新文章
- Keil MDK下如何设置非零初始化变量(转)
- 从外资银行上看国内银行的差距
- mysql 未能启用约束_未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。...
- python中常用的语句元素
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨每个帖子的评论数【难度中等】​
- Web项目:解决eclipse中jsp文件报错javax.servlet.http.HttpServlet 提示 was not found on the Java Build Path的错误
- Blas SGEMM launch failed
- 精品软件 推荐 淘宝 天猫 秒杀助手
- spss实现中心化处理、标准化处理和归一化处理
- 解析app流量商业化变现,ADCDN助力开发者变现双倍增长
- 互联网广告定价策略与算法
- [状压DP]帮助Bubu
- 【Word】如何生成左侧的索引目录
- 2020-09-12
- 适合c语言初学者的刷题网站
- 阿里api网关接口客户端demo,java实现源码,其他语言可参考
- ECCV 2022最佳论文奖公布!两位华人学者摘得桂冠!本科来自清华、浙大
- 淘淘商城项目---8.5
- 这些操作技巧能够让你的公众号迅速增粉
- 深入理解Java7.pdf