用pandas对分类变量作统计


前言

有时候我们会有一些数据,变量是非数值类型的分类变量,如性别、城市、婚姻状况等。它可能是成对出现,并且往往是多对多的,如性别和城市就是多对多的。我们要处理这类数据,就需要按照某一个变量分类,再进行统计,才能更直观的观察数据。

一、原数据数据张这样

可以看到变量之间是多对多的关系。marriage是婚姻状况。假如我们想统计不同城市的婚姻状况的比例,就需要对数据作分组统计处理。可以如下进行操作。

 

二、处理步骤代码

1、代码

代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
if __name__=="__main__":
    data = {"city":["tianjin","beijing","beijing","shanghai","shanghai","beijing","shanghai","tianjin","shanghai","tianjin","tianjin","shanghai","beijing","shanghai","beijing"],
    "marriage":["un","ma","div","ma","un","div","un","ma","ma","div","un","div","un","div","un"]}
    dataframe = pd.DataFrame(data)
    print(dataframe)
    dg = dataframe.groupby("marriage")
    stand = pd.DataFrame()
    for i,j in dg:
        stand = pd.concat([stand,j["city"].value_counts(sort="False")],axis=1)
        stand.rename(columns={'city':i},inplace=True)
    print(stand)
    stand.plot.bar(width=0.1,rot=0,stacked=True)
    plt.title("Chart of city-marriage")
    plt.ylabel('marriage-Count')  # 纵坐标轴标题
    plt.xlabel('city')  # 纵坐标轴标题
    plt.legend(loc=0,prop={'size':10})  # 显示图例
    plt.show()

2.结果

作堆叠图是这样,这样可以看出一个城市的不同婚姻状况的比例如何。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值