pandas DataFrame 转置、频数转概率归一化、删除某列(行)或某几列(行)

 1.pandas 如何实现转置

import pandas as pd
x = [[1,2,3],[4,5,6],[7,8,9]]
data = pd.DataFrame(x,index=['user1','user2','user3'],columns=['a','b','c'])

 

 

 

将data进行转置

data.T
等价于data.unstack(0).unsatck()

 

2.如何表示出每个用户在每列中的占比,相当于对每行求和,跨列求出每行的总数,再求比例

data_sum1 = data.sum(axis=1)#跨列求和,每一行会有一个总计

 接下来看占比

data_rate1 = data.div(data_sum1,axis='rows')
#等价于data_rate1 = data.div(data_sum1,axis=0)

很明显,user1在a中占比16.7%,在b中占比33.3%,在c中占比50%,比例和为1

3.反过来,看每个产品在用户中的占比分布,跨行每列求和

data_sum0 = data.sum(axis=0)

 

 然后看每个产品在各个用户中的占比

data_rate0 = data.div(data_sum0,axis=1)
#等价于data_rate0 = data.div(data_sum0,axis = 'columns')

 很明显,a列的和为1

4.原始数据data跨列每行之和

data['col_sum']=data.apply(lambda x:x.sum(),axis=1)

5.原始数据每列跨行求和

 

6.删除某列或某几列

data.drop(data.columns[[-2,-1]],axis = 1,inplace = True) #删除倒数两列,这种方法适合删除连续的多列 [-2,-1]表示列的序号,可以依据实际需求来设置

 

data.drop(['列名1','列名2'],axis=1)#删除指定的列名,这种方式适用于明确要删除的某列
#等价于data.drop(columns = ['列名1','列名2'])

7.删除某行或某几行

data.drop(index=['行名1','行名2'],axis=0) # 删除特定的行
data.drop(index=[1,10]) #删除多行,注意,data可能行标签没有0、1、2...,可以实现对data重新设置标签再多行删除

本节内容最近处理数据碰到的一些pandas的使用,加深自己对pandas的熟练运用,加油!希望对刚上手pandas的同学有用,喜欢请点赞哦!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值