栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据清洗Chap6——数据统计

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据清洗Chap6——数据统计

数据清洗-Chap 6-数据清洗
  • 6.1数据分组方法
  • 6.2聚合函数の使用
  • 6.3分组对象与apply函数
  • 6.4透视图与交叉表

6.1数据分组方法


分组计算:根据某个或者几个字段对数据集进行分组,然后运用特定的函数,得到结果。
1.使用groupby方法进行分组计算,得到分组对象GroupBy
2.语法为df.groupby(by=)
3.分组对象GroupBy可以运用描述统计方法,如count、mean、median、max和min等

import pandas as pd
import os
import numpy as np
os.chdir(r'C:UsersqwDesktopdata ana')#路径改为数据存放路径
df = pd.read_csv('online_order.csv',encoding='gbk',dtype={'customer':str,'order':str})
df.head()
grouped = df.goupby('weekday')
type(grouped)
grouped.mean()
grouped1 = df.goupby(by = ['customer','weekday'])
grouped1.sum()['total_items']
6.2聚合函数の使用

1.对分组对象使用agg聚合函数
2.Groupby.agg(func)
3.针对不同的变量使用不同的统计方法

grouped = df.groupby('weekday')
grouped.min()
grouped.agg([np.mean, np.max, np.min])
group.agg({'total_items':np.sum,'Foods':[np.mean,np.max]})
df.columns
df[['total_items','Food%','Drinks%']].sum()
df[['total_items','Food%','Drinks%']].agg(np.sum,np.mean,np.max)
6.3分组对象与apply函数

1函数apply即可用于分组对象,也可以作用于dataframe数据
2Groupby.apply(func)
3需要注意axis=0和axis=1的区别

####对分组对象应用apply函数
grouped = df.groupby('weekday')
grouped.apply(np.mean)#但是只能接一个变量,例如此处的np.mean,如果接两个统计变量就会出错
grouped.apply(np.mean)['total_items','discount%','weekday']#选择想要输出的列
####对dataframe运用apply函数
var = ['Food%','Fresh%','Drinks%']
df[var].apply(np.sum,axis =0)#沿着行的方向进行加和,最红是计算每个列标签对应的变量的总和
df[var].apply(np.sum,axis =1)#沿着列的方向进行加和,最红是计算每个行标签对应的所有变量的总和
df[var].apply(lamda x: x[0]-x[1],axis=1)#选用的dataframe的第1列值减去第2列的值
6.4透视图与交叉表

1在数据分析中,数据透视表是常见的工具之一,需要根据行或列对数据的各个维度数据进行汇总,在pandas中,提供了相关函数解决此类问题的。交叉表多用于频数的分析。
2pivot_table(data, index, columns, values, aggfunc, fill_value, margins, margins_name)
Index:行分组键,columns:列分组键,values:分组的字段,只能为数值型变量,aggfunc:聚合函数,margins:是否需要总计

####
df = pd.read_csv('online_order.csv',encoding = 'gbk',dtype={'customer':str,'order':str}))
df.info()
df.columns
pd.piviot_table(data = df,index = 'weekday', values='total_items',aggfun = [np.mean,np.sum],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')

本文使用得数据集

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488627.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号