Python,如何将“线性”数据集格式重塑为类似矩阵的数据集格式

时间:2015-11-04 16:19:53

标签: python numpy pandas format

假设我有以下格式的数据集

                    Date       Value   
AAAA_Property1   2015/07/22     0.01      
AAAA_Property1   2015/07/23     0.02
.
.
.
AAAA_Property2   2015/07/22     0.88
AAAA_Property2   2015/07/23     0.80
.
.
.
.
BBBB_Property1   2015/07/22     0.04      
BBBB_Property1   2015/07/23     0.07
.
.
.
BBBB_Property2   2015/07/22     0.72
BBBB_Property2   2015/07/23     0.70
.
.
.
.

正如您所看到的,每个AAAA,BBBB,CCCC都有许多属性(property1,property2等),传播超时。 (所以它真的是一个'立方'数据集)

现在我想知道我们如何将事物组合在一起,并使数据集看起来像下面的

Name        Date        Property1    Property2   . . . 
AAAA     2015/07/22       0.01          0.3   
AAAA     2015/07/23       0.02          0.4   
.
.
.
BBBB     2015/07/22       0.02          0.4   
BBBB     2015/07/23       0.09          0.7   
.
.
.

我需要对numpy及其ndarray进行一些研究,并且知道reshape()方法和where()方法可能用于实现目标。但我不能把它们放在一起,因为这里的数据实际上是3维。

然而,我确实发现了一些看起来与我想要完成的东西非常相似的东西。请查看以下数据

 data = [
        ['Sulfate', 'Nitrate', 'EC', 'OC1', 'OC2', 'OC3', 'OP', 'CO', 'O3'],
        ('Basecase', [
            [0.88, 0.01, 0.03, 0.03, 0.00, 0.06, 0.01, 0.00, 0.00],
            [0.07, 0.95, 0.04, 0.05, 0.00, 0.02, 0.01, 0.00, 0.00],
            [0.01, 0.02, 0.85, 0.19, 0.05, 0.10, 0.00, 0.00, 0.00],
            [0.02, 0.01, 0.07, 0.01, 0.21, 0.12, 0.98, 0.00, 0.00],
            [0.01, 0.01, 0.02, 0.71, 0.74, 0.70, 0.00, 0.00, 0.00]]),
        ('With CO', [
            [0.88, 0.02, 0.02, 0.02, 0.00, 0.05, 0.00, 0.05, 0.00],
            [0.08, 0.94, 0.04, 0.02, 0.00, 0.01, 0.12, 0.04, 0.00],
            [0.01, 0.01, 0.79, 0.10, 0.00, 0.05, 0.00, 0.31, 0.00],
            [0.00, 0.02, 0.03, 0.38, 0.31, 0.31, 0.00, 0.59, 0.00],
            [0.02, 0.02, 0.11, 0.47, 0.69, 0.58, 0.88, 0.00, 0.00]]),
        ('With O3', [
            [0.89, 0.01, 0.07, 0.00, 0.00, 0.05, 0.00, 0.00, 0.03],
            [0.07, 0.95, 0.05, 0.04, 0.00, 0.02, 0.12, 0.00, 0.00],
            [0.01, 0.02, 0.86, 0.27, 0.16, 0.19, 0.00, 0.00, 0.00],
            [0.01, 0.03, 0.00, 0.32, 0.29, 0.27, 0.00, 0.00, 0.95],
            [0.02, 0.00, 0.03, 0.37, 0.56, 0.47, 0.87, 0.00, 0.00]]),
        ('CO & O3', [
            [0.87, 0.01, 0.08, 0.00, 0.00, 0.04, 0.00, 0.00, 0.01],
            [0.09, 0.95, 0.02, 0.03, 0.00, 0.01, 0.13, 0.06, 0.00],
            [0.01, 0.02, 0.71, 0.24, 0.13, 0.16, 0.00, 0.50, 0.00],
            [0.01, 0.03, 0.00, 0.28, 0.24, 0.23, 0.00, 0.44, 0.88],
            [0.02, 0.00, 0.18, 0.45, 0.64, 0.55, 0.86, 0.00, 0.16]])
    ]

我做了一个帮助(数据),结果证明是一个列表对象。但我正在努力(1)如何将我的数据转换为上述格式,以及(2)如何从上述格式中添加子集矩阵并从那里执行矩阵运算。

我提出的一些模拟代码......

import pandas as pd
import numpy as np
df = pd.read_excel('xxx.xlsx', sheetname='1')
myMatrix = df.as_matrix()
myMatrix = myMatrix[:,:].astype(float)
# parse the first column and separate the AAAAs from the Property's
...
for current in ['AAAA','BBBB', ...]:
       mySubMatrix = myMatrix.where(firstColumn == current)
       mySubMatrix = mySubMatrix.reshape(numberOfDates, numberOfProperties)
       #then append mySubMatrix to the new target matrix

我不希望这段代码运行......但这是我能想到的算法

0 个答案:

没有答案