multiIndex:三维(高维)数据解决方案

文章介绍了如何使用PandasDataFrame处理三维或高维数据,特别是利用multiIndex功能。首先,创建了一个包含时间、光谱和距离维度的multiIndexDataFrame,然后进行了排序以便于切片。通过pd.IndexSlice进行精确的数据选择,展示了DataFrame的强大灵活性。最后,演示了如何进行聚合分析,例如对特定时间段内的特定光谱数据求和。
摘要由CSDN通过智能技术生成

pandas 的DataFrame是处理较为复杂数据的理想工具。如果时间充裕,值得认真学习并练习。

DataFrame与matlab里面的table有相似之处。
## multiIndex是处理三维或者高维数组的大杀器。
## 新手学习multiIndex可能有一些难度,但美景在险峰,值得。

##Pandas multiIndex DataFrame 2023年06月03日

import pandas as pd
import numpy as np

## step1 生成multiIndex数据,包含时间维、光谱维和距离维三个维度。
##step1.1 构造时间维、光谱维和距离维
timeAxis = ['18:00','18:25','23:00','20:00']##生成乱序的时间维
spectralAxis =['F0','F2','F1']##生成乱序的光谱维,正确顺序是F0,F1,F2
rangeAxis = ['1km','5km','3km']##生成乱序的距离维

##step1.2 构造出index, 记住DataFrame包含index和columns
idxData = pd.MultiIndex.from_product([spectralAxis,rangeAxis])

## step1.3 生成随机数 个数为:len(spectralAxis)*len(rangeAxis)*len(timeAxis)
yy = np.random.rand(len(spectralAxis)*len(rangeAxis),len(timeAxis))

## step1.4 构造出multiIndex的DataFrame
df = pd.DataFrame(yy,index=idxData,columns=timeAxis)

## step1.5 进行命名
df.index.names=['spectral','range']
df.columns.names=['time']

##print('AA',df)
##step2 切片 推荐使用pd.IndexSlice方法
## step2.1 先排序以方便切片
df = df.sort_index(axis=0 )##对index排序
df = df.sort_index(axis=1)##对columns排序

print('CC',df)

## step2.2 切片,此时切片的感觉可谓:随心所欲,不逾矩。方便得不要不要的。
idx = pd.IndexSlice##推荐的方法
print('DD',df.loc[idx['F0':'F2','1km':'6km'],idx['18:00':'18:40']])


## step3 聚合分析
F0 = df.loc[idx['F0'],idx['18:00':'19:00']].sum(axis=1)##得到18:00到19:00的F0数据求和合并后的廓线
print('EE',F0)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值