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

Pandas数据重塑与透视

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

Pandas数据重塑与透视

目录
  • 数据透视
    • 整理透视:.pivot()
    • 聚合透视:.pivot_table()
  • 数据堆叠
    • 堆叠操作df.stack()
    • 解堆操作df.unstack()
    • 交叉表pd.crosstab
    • 数据转置df.T
    • 数据融合df.melt()
    • 虚拟变量df.get_dummies()
    • 因子化pd.factorize()
    • 爆炸列表df.explode()


数据透视

找出大量复杂无关的数据的内在关系,将数据转化为有意义、有价值的信息,从而看到它所代表的事物的规律和本质。

整理透视:.pivot()
df.pivot()		#返回按给定的索引、列值重新组织整理后的DF
df.pivot(
		index='',	#取分组去重的值
		columns='',	#取去重的值,当列和索引有多个值时会报错,需要使用pd.pivot_table()进行操作
		values='')	#如果指定多个,会形成多层索引

聚合透视:.pivot_table()
pd.pivot_table()	#比pivot多了计算,适用于有重复
pd.pivot_table(
			data,			#DF对象
			index='',
			columns='',
			values='',
			aggfunc=,		#用于聚合的函数,默认mean
			fill_value=,	#空值填充
			margins=True)	#是否增加汇总行列
#高级聚合
aggfunc参数可以添加多个计算方法,也可以指定
[np.mean, np.sum]
{'D':np.mean, 'E':np.sum}


数据堆叠

在多层索引的数据中,通常为了方便查看、对比,会将所有数据呈现在一列中;相反,对于层级过多的数据,我们可以实施解堆操作,让它呈现多列的状态。
如果原始数据有多个数据列,堆叠(stack)的过程表示将这些数据列的所有数据表全部旋转到行上;类似地,解堆(unstack)的过程表示将在行上的索引旋转到列上


堆叠过程将数据集的列转行,解堆过程为行转列

堆叠操作df.stack()
df.stack()		#不需要参数
解堆操作df.unstack()

也不用参数

交叉表pd.crosstab
pd.crosstab(index,columns,	
			values=,			#传入列,根据此列的数值进行计算
			rownames=,			#新数据和行名
			colnames=,			#新数据和列名
			aggfunc=,			
			margins=False,		#添加行/列边距(小计)
			margins_name:str='All',
			dropna:bool=True,
			normalize=False)	#将所有值除以值的总和进行归一化,'columns'按列归一化
数据转置df.T
df.T
#轴交换
df.swapaxes(axis1,axis2,copy=True)
df.swapaxes('index','columns')
数据融合df.melt()
#df.melt()是df.pivot()的逆操作函数
df.melt(frame:pandas.core.frame.DataFrame,
		id_vars=,			#用作标识变量的列,不输入会省去
		value_vars=,		#要取消透视的列
		var_name='variable',
		value_name='value',
		col_level=,)		#列为多层索引,则使用此级别来指定融合时的层级

虚拟变量df.get_dummies()

Dummy Variable,又称虚设变量、名义变量或哑变量
用来反应质的属性的人工变量,是量化了的自变量,通常取值为0/1,常被用于one-hot特征提取

#将一列或多列的去重值作为新表的列
pd.get_dummies(
			data,			
			prefix=,		#新列的前缀
			prefix_sep='_',	#新列前缀的链接符
			dummy_na=False,
			columns=,		#指定列
			sparse=False,
			drop_first=False,
			dtype= )
因子化pd.factorize()

将一个存在大量重复值的一位数据解析成枚举值的过程

#返回两个值
data=['b','b','a','c','b']
codes, uniques = pd.factorize(data)
'''
# 编码
codes:数字编码表,这个编码表的长度与原始数据相同
# array([0, 0, 1, 2, 0])

# 去重值
uniques:去重值,因子
# array(['b', 'a', 'c'], dtype=object)
'''
#排序
sort=True	#对唯一值进行排序
#缺失值,data中有None
#不会出现在唯一值列表中,在编码中以-1呈现
#枚举类型,Categorical
cat = pd.Categorical(['a','a','c'],categories=['a','b','c'])
codes, uniques = pd.factorize(cat)
爆炸列表df.explode()
#将数据中的列表list展开
df.explode()	#输入列名可以指定
#非列表形式的爆炸
df.assign(var=df.var1.str.split(',')).explode('var1')	#转换为列表进行爆炸
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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