首页 > 其他分享 >padans关于数据处理的杂谈

padans关于数据处理的杂谈

时间:2023-04-20 10:23:25浏览次数:30  
标签:index df writer 杂谈 df2 padans pd 数据处理 table

情况:业务数据基本字段会有如下:

Index(['时间', '地区', '产品', '字段', '数值'], dtype='object')

这样就会引发一个经典“三角不可能定理”,如何同时简约展现分时序、分产品、分字段数据。)一般来说,

1、时序为作为单独的分类,

2、然后剩下两个标签就是,要么:

2.1、每个字段一张表,然后列为时序,行为产品

2.2、要么每个产品一张表,列为时序,行为产品。

2.3、要么将“产品”、“字段”组成新的列。

那么实现2.1、2.2,不过这样的瓶颈就是,如果有很多个字段,则会组合成很多张表。

# 使用数据透视表,假设现在,逐字段,分产品时序

# 获取所有产品,去重
cp = df['产品'].to_frame().drop_duplicates(subset=['产品'])

# 得到 3个 工作表,每个工作表为相关字段的分产品分时序,这样一来,如果涉及很多个字段,则会有很多个表
with pd.ExcelWriter('data/test2-shuchu.xls') as writer:
    for zd in df['字段'].unique():
        table = pd.pivot_table(df[df['字段'] == zd], values='数值', index=['产品'],columns=['时间'], aggfunc=np.sum)
        table = pd.merge(cp,table,how='left',on='产品')
        table.to_excel(writer,index=False,sheet_name = zd)

实现2.3

# 通过将 产品 字段 组合为一个,形成二维表
with pd.ExcelWriter('data/test2-shuchu2.xls') as writer:
    table = pd.pivot_table(df, values='数值', index=['产品','字段'],columns=['时间'], aggfunc=np.sum)
    table.reset_index().to_excel(writer,index=False,sheet_name = zd)

输出一张工作表即可。

有时还需要处理成,具有环比、比年初、同比等值。则采取给源数据增加字段。

先通过类似方法给源数据增加一个比去年同期列

def add_year_on_year(x):
    d = ''
    if x['时间'] == '20161231':
        return None
    elif x['时间'] == '20171231':
        d = '20161231'
    elif x['时间'] == '20181231':
        d = '20171231'
    # 获取相应的数值
    v = df[(df['时间'] == d) & (df['地区'] == x['地区']) & (df['产品'] == x['产品']) & (df['字段'] == x['字段'])]
    #print('d:',d)
    if len(v) == 0:
        return x['数值']
    else:
        return x['数值'] - v.iloc[0]['数值']

df['同比增减'] = df.apply(add_year_on_year,axis=1)
with pd.ExcelWriter('data/test2-huanyuan-add.xls') as writer:
    df.to_excel(writer,index=False,sheet_name = 'Sheet1')

输出如下:

最后在再把数据打回stack,再执行数据透视表操作

df2 = df.set_index(['时间', '地区', '产品','字段'])
df2 = df2.stack()
df2 = df2.reset_index()

with pd.ExcelWriter('data/test2-huanyuan2.xls') as writer:
    df2.to_excel(writer,index=False,sheet_name = 'Sheet1')
    
df2.rename(columns={'level_4':'数值属性',0:'数值'},inplace=True)
# 通过将 产品 字段 组合为一个,形成二维表
with pd.ExcelWriter('data/test2-shuchu3.xls') as writer:
    table = pd.pivot_table(df2, values='数值', index=['产品','字段','数值属性'],columns=['时间'], aggfunc=np.sum)
    table.reset_index().to_excel(writer,index=False,sheet_name = 'h')

最终输出:

标签:index,df,writer,杂谈,df2,padans,pd,数据处理,table
From: https://www.cnblogs.com/q-q56731526/p/17335803.html

相关文章

  • DNA序列数据处理
    dna序列数据处理通常包括以下步骤:数据预处理:首先,需要对原始dna序列数据进行预处理。其中包括测序错误的纠正、碱基质量过滤和去除低质量序列等。这个阶段是非常重要的,因为数据预处理的质量直接影响后续的特征提取和模型学习。特征提取:在dna序列分析中,会涉及到许多不同的特征......
  • pandas数据处理基础-数据读取/数据选择
    数据读取df=pd.read_csv("相对路径或者网址")呈现的结果是一个二维数组,dataframe结构;df.head()----显示的是前5行数据df.tail(7)----显示的是后7行数据df.describe()----对数据进行描述df.values----将dataframe转换为numpy数组结构df.index--查看索引df.columns--查看行......
  • CesiumJS 源码杂谈 - 从光到 Uniform
    目录1.有什么光2.光如何转换成Uniform以及何时被调用2.1.统一值状态对象(UniformState)2.2.上下文(Context)执行DrawCommand2.3.对WebGLUniform值的封装2.4.自动统一值(AutomaticUniforms)3.在着色器中如何使用3.1.点云3.2.冯氏着色法3.3.地球3.4.模型架构中的光着色阶......
  • 高通量测序的数据处理与分析指北(二)-宏基因组篇
    宏基因组篇前言之前的一篇文章已经从生物实验的角度讲述了高通量测序的原理,这篇文章旨在介绍宏基因组二代测序数据的处理方式及其原理。在正文开始之前,我们先来认识一下什么是宏基因组。以我的理解,宏基因组就是某环境中所有生物的基因组的合集,这个环境可以是下水道,河流等自然环......
  • 数据处理的两个基本问题
    bx、si、di、bp在8086CPU下,只有bx、si、di、bp这四个可以用在[...]中进行内存单元的寻址就好像[ax]是错误的,[bx]是正确的[...]的用法在[...]中,如上四个寄存器可以单个出现,或者以以下的组合出现,其他的都是不合法的bx和si、bx和di、bp和si、bp和di如[bx+bp]、[......
  • CSS杂谈——flex布局里面的auto到底多长
    本篇博客将以“flex布局里设置auto的区块怎么让文案超出省略的问题”作为切入点,来分析一下flex布局里面各子项的具体长度到底怎么计算。从需求出发谈flex布局我们有一个H5项目,类似于微信的通讯录界面,前面是头像,后面是昵称。所以我们一开始的代码是这么写的:<divst......
  • 新手小白需要了解的 Go 基础细节杂谈
    今日记录一下学习golang这门语言遇到的一些比较特殊的细节,供大家参考。      所以,在我们输出内容的时候,可以包含很多的非ASCII码字符。实际上,Go是天生支持UTF-8的,任何字符都可以直接输出,甚至可以使用UTF-8中的任何字符作为标识符    _这个......
  • ExtJS-Data Package (数据处理包) - Model间关系
    更新记录2023年3月9日发布。ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html官方文档:https://docs.sencha.com/extjs/7.6.0/classic/Ext.data.schema.Association.html说明在ExtJS中,可以设置模型与模型之间的关系,如一对多、多对一或一对一关系。定义Model......
  • 函数式编程杂谈
    vivo互联网技术微信公众号作者:张文博比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算。本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处。一、编程范式综述编程是为了解决问......
  • 【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据
    前言大家好,我是阿光。本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。正在更新中~✨......