python笔记28:数据分析之结构分析

# -*- coding: utf-8 -*-
#1、概念:结构分析, 是在分组(这个分组一般是定量分组,定量分组一般看结构)以及交叉的基础上,计算各组成部分所占的比重,进而分析总体的内部特征的一种分析方法。

#结构分析的结果一般以饼图呈现,如果成分较少(两个或三个),那么可以使用圆环图呈现

#下面看看在pandas中如何进行占比计算:
#当我们使用groupby计算出分组结果或者使用pivot_table对计算出交叉表的结果之后,如果我们还需要对计算的结果继续运算,可以使用数据框自带的函数进行运算。自带的函数
#有两种类型:
#外运算:主要用于两个数据框之间的运算。如add、sub、multiply、div
#内运算:主要用于数据框自身的运算。如sum、mean、var、sd

import numpy
import pandas

data = pandas.read_csv("D:/workspaces/python/pythonStudy/28.csv")

#28.csv包括列:用户ID,注册日期,身份证号码,性别,出生日期,年龄。下载地址:https://pan.baidu.com/s/1wHp1q1PgSw_HxyLW59k_Tw

bins = [min(data.年龄)-1,20,30,40,max(data.年龄)+1]

labels = ['20岁及以下','21岁到30岁','31岁到40岁','41岁以上']

data['年龄分层'] = pandas.cut(data.年龄,bins,labels=labels)

ptResult = data.pivot_table(
values = ['年龄'],
index = ['年龄分层'],
columns = ['性别'],
aggfunc = [numpy.size]
)

ptResult.sum() #可以看到默认返回按列计算的结果(因为默认axis=0,即跨行执行)

ptResult.sum(axis=0) #结算结果同上

ptResult.sum(axis=1) #返回按行计算的结果(axis=1,标识跨列执行)

#计算在各年龄层中,不同性别的各自占比
ptResult.div(ptResult.sum(axis=1),axis=0)  

#计算在各性别中,不同年龄层的各自占比 
ptResult.div(ptResult.sum(axis=0),axis=1)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值