第2关:Pandas创建透视表和交叉表

人工智能42

任务描述
本关任务:使用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用于替换结果表中的缺失值dropnaboolean值,默认为Truemargins_namestring,默认为'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

import pandas as pd

def create_pivottalbe(data):

    df = pd.DataFrame(data)
    x = df.pivot_table(index = ['day'],columns = ['time'],values = ['tip'],aggfunc = sum , margins = True)
    return x

def create_crosstab(data):

    df = pd.DataFrame(data)
    y = pd.crosstab(index = df['day'],columns = df['time'],values = df['tip'],aggfunc =sum,margins = True)
    return y

def main():

    data = pd.read_csv("step2/tip.csv",header = 0)

    piv_result = create_pivottalbe(data)
    cro_result = create_crosstab(data)
    print("透视表:\n{}".format(piv_result))
    print("交叉表:\n{}".format(cro_result))

if __name__ == '__main__':
    main()

Original: https://blog.csdn.net/SorrymakerS/article/details/124801132
Author: -阿呆-
Title: 第2关:Pandas创建透视表和交叉表

相关文章
激光雷达和IMU标定 人工智能

激光雷达和IMU标定

激光雷达和IMU标定 激光雷达简介 IMU简介 算法的数学原理 * 四元数 ENU坐标系 三维旋转 - 欧拉角(Euler Angle)与旋转矩阵(Rotation Matrix) 四元数(Quate...
儿童的成长伴侣,dido Y03学生智能手表上手 人工智能

儿童的成长伴侣,dido Y03学生智能手表上手

这些年大家平时联系都很紧密,习惯通过视频、语音等渠道来即时交流,对于小朋友来说,为了安全等方面的考虑,很适合随身佩戴一块学生智能手表,这样既可以随时和家人联系,又不至于沉迷于手机游戏,算是一种两全其美...
用普通摄像头测量距离 人工智能

用普通摄像头测量距离

近年来,由于无人机、无人车等技术的不断成熟,需要用到实时测距的场所也越来越多,如定位,避障,测速等,相比于其他测距方法,单目测距是利用一个摄像头进行视频拍摄,在图像中找到待测物体。这一系列动作,涉及到...
基于STM32C8T6语音数字的播报小算法 人工智能

基于STM32C8T6语音数字的播报小算法

文章目录 前言: 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 因为我的毕设时超市收银系统,自己12月份课设学习了一款与语音播报模块,基于毕设需要,就顺手写个数字语音播...
2022-车道线检测综述 人工智能

2022-车道线检测综述

未经许可,请勿转载! 课程论文,快速水一下👋 车道线检测综述 摘要 车道线检测是一种环境感知应用,其目的是通过车载相机或激光雷达来检测车道线。近年来,随着计算机视觉的应用发展和落地,车道线检测任务也获...
离线语音风扇设计应用案例 人工智能

离线语音风扇设计应用案例

1 概述 ¶ 随着人们生活水平的提高,对产品的功能要求也越来越高,追求舒适的体验感,特别是对操控性的要求越来越高。目前风扇产品的控制方式有以下几类: 按键控制:传统控制方式,每次要走到风扇边才行,操作...
log4j 不同模块输出到不同的文件 人工智能

log4j 不同模块输出到不同的文件

1、实现目标 不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件。如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日...
CSS 埋点统计 人工智能

CSS 埋点统计

原文地址: https://my.oschina.net/u/1778933/blog/1608904 CSS 埋点统计 当一个网站或者 App 的规模达到一定程度,需要分析用户在 App 或者网站的...