我有一个包含几个分类变量的Pandas DataFrame.例如:

import pandas as pd

d = {'grade':['A','B','C','A','B'],

'year':['2013','2013','2013','2012','2012']}

df = pd.DataFrame(d)

我想将其转换为具有以下属性的MultiIndex DataFrame:

>第一级索引是变量名称(例如“等级”)

>二级指数是变量内的水平(例如’A’,’B’,’C’)

>一列包含’n’,即级别出现次数的计数

>第二列包含’比例’,该比例表示的比例.

例如:

有人可以建议一种创建这个MultiIndex DataFrame的方法吗?

最佳答案 另一种方法可以使用melt和groupby:

df_out = df.melt().groupby(['variable','value']).size().to_frame(name='n')

df_out['proportion'] = df_out['n'].div(df_out.n.sum(level=0),level=0)

print(df_out)

输出:

n proportion

variable value

grade A 2 0.4

B 2 0.4

C 1 0.2

year 2012 2 0.4

2013 3 0.6

并且,如果你真的想变得疯狂并且在单行中做:

(df.melt().groupby(['variable','value']).size().to_frame(name='n')

.pipe(lambda x: x.assign(proportion = x[['n']]/x.groupby(level=0).transform('sum'))))

使用@Wen pct计算升级的解决方案:

(df.melt().groupby(['variable','value']).size().to_frame(name='n')

.pipe(lambda x: x.assign(proportion = x['n'].div(x.n.sum(level=0),level=0))))

python 分类变量转因子变量_python – 将分类变量的Pandas DataFrame转换为具有计数和比例的MultiIndex...相关推荐

  1. python环境变量是什么意思_python设置环境变量有什么用

    设置Python的环境变量的作用: 当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找.用户通过设置环境变量,来更好的运行进程. ...

  2. python处理多个excel数据_python 数据分析基础 day8-pandas读写多个excel文件

    今天是读<python数据分析基础>的第8天,今天的读书笔记的内容为利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表. 大致原理如下: glob.glob( ...

  3. python中iloc切片_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在这篇文章中,我们将使用iloc和loc来处理数据.更具体地说,我们将通过iloc和loc例子来学习切片和 ...

  4. python中有效的变量名有哪些_python 如何使用变量名

    现在用python一般都是赋值, 但是 我想把变量名直接给打印出来,而不是 它的值.老之前就想弄,但一直 没有上心这个事情.今天终于找到了相关的参考: import inspect def retri ...

  5. python语言需要变量生明吗_python需要定义变量吗

    python中定义一个变量不需要声明,直接复制便可初始化一个变量 1.变量声明 声明变量的时候,直接使用例如a = 1这样的方式即可. 既不用像js语言那样使用一个通用的var或者let之类方式表示声 ...

  6. python多个变量与字符串判断_python怎么判断变量是否为字符串

    在python中怎么连接变量和字符串?我真的懂你不是喜新厌旧只是我没能在你寂寞的时候伴你左右 假设你的变量也是str类型 直接用+号就可以a="test"connect=a+&qu ...

  7. python变量的赋值操作_Python中关于变量赋值操作的实例分享

    这篇文章主要介绍了Python编程之变量赋值操作,结合实例形式分析了Python赋值.位移.多元赋值操作符等相关操作使用技巧,需要的朋友可以参考下 本文实例讲述了Python编程之变量赋值操作.分享给 ...

  8. python布尔型变量错误的赋值_Python中布尔变量的值为( )

    [单选题]x 的 y 次方(xy) 以下表达式正确的是________ [多选题]以下关于 Python 字符串的描述中,正确的是( ) [多选题]下列表达式的值为False的是( ) [其它]返回 ...

  9. python对excel操作简书_Python实现EXCEL常用操作——pandas简介

    知乎的代码块太丑了,这里的内容就更新到简书了Python实现EXCEL常用操作--pandas简介​www.jianshu.com EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条 ...

最新文章

  1. Linux中的In命令
  2. Spark数据分析实战:大型活动大规模人群的检测和疏散
  3. isalnum()函数:找出str字符串中为英文字母或数字的字符
  4. MySQL索引与Index Condition Pushdown(二)
  5. 简单使用TFS管理源代码
  6. Linux服务部署之NTP时间服务器
  7. Docker 配置,详细说明 daemon.json 的作用
  8. 让人想骂街的 Python 炫技操作:条件语句的七种写法
  9. vscode regex previewer插件怎么用_分享五款开挂神器!助你效率倍增!做PPT怎么能不会用插件?...
  10. Java 实现图书管理系统
  11. QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机
  12. PowerPoint2007文件格式
  13. 解除 网课失去焦点/离开页面 就自动暂停 的限制
  14. java中this有什么作用_Java中this有什么用
  15. 【智慧城市】智能照明系统解决方案
  16. 【译】雄迈摄像头爆出Mirai僵尸网络
  17. 新浪微博PC端登录分析
  18. 虚拟机xftp工具连接服务器,xftp5(ftp上传工具)如何连接虚拟机?
  19. Apache Ant简介
  20. 如何将本地代码保存至码云中

热门文章

  1. 使用快速傅里叶变换计算大整数乘法-代码
  2. Rectangle Area
  3. 消除 Xcode7 中 directory not found for option 'xxxx' 警告
  4. iis布置asp.net网站——服务应用程序不可用
  5. java心得---java语言基础
  6. oracle创建分区表
  7. 关于枚举概念的理解以及存在意义
  8. Microsoft Edge浏览器最新版已经换成开源Chromium引擎了,附官方下载地址
  9. “妈妈打工,爸爸是盲人”小学生记错开学时间独自上学,原因心酸
  10. 机器人产业一定有美好未来