学习笔记:数据的统计

import pandas as pd
import numpy as np
import os
os.chdir(r'F:\CSDN\课程内容\代码和数据')
#在线杂货店订单数据'''customer :消费者ID,一个消费者可能有多个订单
order :订单ID,订单的唯一标识,不重复
total_items :订单中购买的商品数量
discount% :收到的总折扣百分比
weekday :下单时间:星期几下单,1-7 为 周一至周日
hour :下单时间:几点下单,0-23 为二十四小时制
Food% :食物在订单总价中占比,食物为非生鲜类食物
Fresh% :生鲜类食物在订单总中占比
Drinks% :饮品在订单总价占比,由于高糖税可能导致总折扣为负
Home% :家居用品在订单总价中占比
Beauty% : 美妆类产品在订单总价中占比
Health% :保健类产品在订单总价中占比
Baby% :母婴类产品在订单总价占比
Pets% :宠物用品在订单总价占比'''df = pd.read_csv('online_order.csv',encoding = 'gbk',dtype={'customer':str,'order':str})
df.dtypes
### 1. 数据分组运算
df.groupby('a')
df.groupby(by = ['a','b'])
df[['a','b','c']].groupby('a')
df[['a','b','c']].groupby(by = ['a','b'])
#使用单个分组变量
#使用groupby方法
df.head(4)#查看数据
grouped = df.groupby('weekday') #创建分组对象,按照星期进行分组
grouped.mean() #调用方法
grouped.sum()['total_items']# 计算不同的星期,商品数量的总和
grouped = df.groupby(by =['customer','weekday'])#创建分组对象,按照用户和星期
grouped.sum()['total_items'].head(50) #调用方法,计算不同的用户周一到周天的订购商品数量的总和
### 2. 聚合函数使用
#使用聚合函数agg
agg是一个作用于series或者DataFrame的函数,主要目的是针对分组后的对象,使用相关函数进行计算
grouped = df.groupby('weekday')#创建分组对象,按照周一到周天进行分组
grouped.agg([np.mean,np.max]).head(20) #对分组后对象,计算均值和总和
grouped.agg({'total_items':np.sum,'Food%': [np.mean,np.median]}) #对2个变量分别计算不同的统计量
df[['total_items','Food%','Drinks%']].agg([np.sum,np.mean]) #也可以直接对数据进行汇总
### 3.分组对象与apply函数
#使用apply函数
#axis 表示轴向:0代表沿着行的方向作用,1代表沿着列的方向作用
grouped = df.groupby('weekday')
grouped.apply(np.mean)[['total_items','Food%']] #可以做聚合
#体验一下apply 中,axis=0 或者 axis=1的区别
df.columns
var_name = ['Food%', 'Fresh%', 'Drinks%', 'Home%', 'Beauty%', 'Health%', 'Baby%','Pets%'] # 不同类型的商品占比
df[var_name].apply(np.sum,axis = 0) #相当于计算每列的总和
df['sum'] = df[var_name].apply(np.sum,axis=1) #  相当于计算每行的总和
var_name.append('sum')
df[var_name] #查看数据,会发现总和为1
df[var_name].apply(lambda x: x[0] - x[1],axis = 1) #计算食物在订单总价中占比 - 生鲜类食物在订单总中占比
### 4. 透视图与交叉表
#读取数据
df = pd.read_csv('online_order.csv',encoding = 'gbk',dtype={'customer':int,'order':str})
df.columns
# 单个变量
#margin =True 表示是否需要总计
pd.pivot_table(data= df,index='weekday',values='total_items',aggfunc=[np.sum,np.size],margins=True,margins_name='总计')#按照周一到周天计算购买的商品数量总数和次数
交叉表
交叉表更多用于计算分组频率
# 使用交叉表
#是一种计算分组频数的特殊透视表
# 不同的星期,不同的折扣交叉表
pd.crosstab(index =df['weekday'], columns=df['discount%'],margins=True)
#按照行进行汇总,计算频数占比
pd.crosstab(index =df['weekday'], columns=df['discount%'],margins=True, normalize='all')
#按照行进行汇总,计算频数占比
pd.crosstab(index =df['weekday'], columns=df['discount%'],margins=True,  normalize='all') #index表示计算行百分比,columns表示计算列百分比
pd.crosstab(index =df['weekday'], columns=df['discount%'],margins=True, normalize='columns') #index表示计算行百分比,columns表示计算列百分比

数据清洗之数据统计-学习笔记相关推荐

  1. oracle常用数据统计,学习笔记:Oracle DBMS_STATS常用方法汇总 常用于收集统计oracle...

    天萃荷净 Oracle数据库中DBMS_STATS常用方法(收集oracle数据库.索引.表等信息) –收集Oracle数据库信息命令 EXEC DBMS_STATS.gather_database_ ...

  2. 第一节:论文数据统计学习笔记

    任务说明 任务主题:论文数量统计,即统计2019年全年计算机各个方向论文数量: 任务内容:赛题的理解.使用 Pandas 读取数据并进行统计: 任务成果:学习 Pandas 的基础操作: 可参考的学习 ...

  3. 大数据业务学习笔记_学习业务成为一名出色的数据科学家

    大数据业务学习笔记 意见 (Opinion) A lot of aspiring Data Scientists think what they need to become a Data Scien ...

  4. redis基础命令和数据操作命令学习笔记

    redis基础命令和数据操作命令学习笔记 基础命令 安装成功后,redis的启动命令:先修改配置文件.将服务改成默认运行.然后以配置文件启动服务 redis-server config/redis-c ...

  5. 高维统计学习笔记1——LASSO和Oracle性质

    高维统计学习笔记1--LASSO和Oracle性质 主要参考资料:Sara Van De Geer<Estimation and Testing Under Sparsity> 前言 当年 ...

  6. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  7. 【统计学习笔记】泛化误差上界

    [统计学习笔记]泛化误差上界 1. 泛化误差 2. 泛化误差上界 1. 泛化误差 学习方法的泛化能力是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上重要的性质.测试误差是依赖于测试数据集 ...

  8. React学习:路由定义及传参、数据复用-学习笔记

    文章目录 React学习:路由定义及传参.数据复用-学习笔记 在React中使用react-router-dom路由 简单例子 路由定义及传参 React学习:路由定义及传参.数据复用-学习笔记 在R ...

  9. python气象数据可视化学习笔记6——利用python地图库cnmaps绘制地图填色图并白化

    文章目录 1. 效果图 2. cnmaps简介及安装 2.1 写在前面 2.2 cnmaps简介和安装 3. 导入库 4. 定义绘图函数 4.1 使用get_adm_maps返回地图边界 4.2 ax ...

最新文章

  1. Android开发--图形图像与动画(四)--AnimationListener简介
  2. 洛谷 P1849 [USACO12MAR]拖拉机Tractor
  3. vsftp虚拟用户无法上传文件,解决办法
  4. 俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长
  5. VGGNet原理和实现
  6. 杨笠代言电脑遭投诉抵制,网友吵翻!英特尔回应了...
  7. ofo 回应海外部门集体解散;罗永浩将现身快如发布会;支付宝更名? | 极客头条...
  8. 递归实现组合型枚举(搜索)
  9. Visual Studio 2017 警告C4819解决方案
  10. linux三剑客之sed命令,linux三剑客之sed命令
  11. BUCK电路中,输入电压增加后,电感电流曲线变化的推导 // 《精通开关电源设计》P44 图2-3
  12. Allegro静态铜皮避让问题
  13. 【mmdetection】mmdetection安装详细步骤
  14. Solana初识\了解Solana:领导者轮换机制
  15. libxml2对XML文件的创建、解析、查找、修改
  16. 导入式样式表CSS与链接式样式表CSS的区别
  17. nrf24l01无线通信模块与51单片机工作原理
  18. matlab鱼眼镜头,普通镜头,单目双目相机标定校正(四)
  19. 双向链表增删改查分析
  20. 【论文】论文整体结构(以项目干系人管理为例)

热门文章

  1. 如何搭建统一的数据分析平台——杭州联合银行建设经验
  2. calc ie支持_让IE6/IE7/IE8支持CSS3属性的8种方法介绍
  3. 小型应用开发大全——教育行业之中考体育考试评分工具
  4. 全球自动驾驶公司排名,特斯拉再次垫底
  5. python实现批量注册_python实现批量注册网站用户的示例
  6. iPhone激活了移动互联网,谁来激活大数据呢?
  7. 由于找不到mfc100u.dll,无法继续执行代码问题的解决
  8. CTFHUB技能树-WEB-SQL注入-Cookie注入的WP
  9. 安装mysql后使用mysql workbench连接不上
  10. 中考计算机试题ppt判断,信息技术中考试题之ppt基本操作一