纵表和横表的概念

具体为电信行业的例子。以用户帐单表为例一般出账时用户有很多费用客户,其数据一般存储为:时间,客户ID,费用科目,费用。这种存储结构一般称为纵表,其特点是行数多,字段少。 纵表在使用时由于行数多,统计用户数或对用户进行分档时还需要进行GROUP BY 操作,性能低,且操作不便,为提高性能,通常根据需要将纵表进行汇总,形成横表,比如:时间、客户ID,基本通话费、漫游通话费,国内长途费、国际长途费....。通常形成一个客户一行的表,这种表统计用户数或做分档统计时比较方便。另外,数据挖掘时用到的宽表一般也要求是横表结构。例如:

 

纵表:

FeeName     FeeType    FeeValue

CFee         Should_Fee   10

CFee         Favor_Fee      -5

InfoFee     Should_Fee   20

InfoFee     avor_Fee        0

 

转换后的表结构:

FeeName   Should_Fee  Favor_Fee

CFee            10                      -5

InfoFee        20                       0

虽然提供的引用内容中未涉及纵横表的相关信息,但可根据专业知识进行解答。 ### 概念 - **纵**:也称为长,在纵中,每一行代一个观测的某个属性值,通常会包含一个标识符列来关联同一个观测的不同属性。例如,在记录学生成绩时,纵可能会有学生ID、科目、成绩这三列,每个学生的不同科目成绩会单独占一行。 - **横表**:也称为宽横表中每一行代一个完整的观测,每一列代一个属性。同样以学生成绩为例,横表可能会有学生ID、语文成绩、数学成绩、英语成绩等列,每个学生的所有科目成绩都在同一行中体现。 ### 区别 - **数据结构**:纵结构较为细长,数据按属性展开,行数较多而列数相对较少;横表结构较为宽阔,数据按观测展开,列数较多而行数相对较少。 - **数据冗余**:纵通常数据冗余较少,因为每个属性值只存储一次;横表可能会存在一定的数据冗余,尤其是当某些属性值在多个观测中重复时。 - **数据查询**:对于需要对单个属性进行汇总或分析的操作,纵查询较为方便;对于需要同时查看多个属性的操作,横表查询更直观。 ### 应用场景 - **纵应用场景**:适用于数据扩展性强、需要对单个属性进行深入分析的场景,如数据仓库中的数据存储,便于添加新的属性;也适用于数据挖掘机器学习中的特征工程,方便对每个特征进行处理分析。 - **横表应用场景**:适用于需要快速查看比较多个属性的场景,如报展示、数据可视化等,能够让用户一目了然地看到每个观测的完整信息。 ### 代码示例(Python + Pandas) ```python import pandas as pd # 创建纵 long_table = pd.DataFrame({ '学生ID': [1, 1, 2, 2], '科目': ['语文', '数学', '语文', '数学'], '成绩': [80, 90, 75, 85] }) # 创建横表 wide_table = long_table.pivot(index='学生ID', columns='科目', values='成绩').reset_index() wide_table.columns.name = None print("纵:") print(long_table) print("\n横表:") print(wide_table) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值