gpt4 book ai didi

具有堆叠数据的 Python Pandas 子图

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:08 24 4
gpt4 key购买 nike

我想生成 pandas 数据框的分组数据图(或子图)。我认为这应该是一些基本的东西——我只是遗漏了一些东西。我从下面提供的数据示例中准备了堆叠的输入数据。我想为每个 upperLevel 数据生成如下图表:

Example plot for upperLevel data A

在这里,我有一些示例数据(我在下面粘贴了我正在使用的示例 .csv 数据)。这些数据以数据信息、时间、数据的“堆叠”形式出现。数据信息描述了特定数据点的类别和子类别。

import pandas as pd
import re
import matplotlib.pyplot as plt

df=pd.read_csv('.....TestData.csv',index_col='T')
df=df.stack(0).reset_index(1)
df.columns=['fullType','data']
#And at this point, this is pretty much the form of my actual data

#So I split it up a bit to try to get columns for different data groupings
regexStr='~'

def upperParser(row):
label=re.split(regexStr,row['fullType'])
return label[1]
def lowerParser(row):
label=re.split(regexStr,row['fullType'])
return label[2]

df['upperLevel']=df.apply(upperParser,axis=1)
df['lowerLevel']=df.apply(lowerParser,axis=1)
df['time']=df.index


df=df.reset_index(drop=True)

plt.figure();
df.plot();

#And here is one of many attempts... I just seem to be missing something that should be simple:

for grp in df.groupby('upperLevel'):
for key,grp in df.groupby('lowerLevel'):
plt.plot(x='time',y=grp['data'],label=key)
plt.show()

非常感谢任何方向。我不关心试图保持任何特定的形式。我的最终目标是绘制所有上层类别(比如 A=(0,1), B=(0,2))并使用 mpl3d 查看底层子图(如 this ,但每个子类别 1, 2,3 堆叠为子图)。但我想首先要做的是。

示例数据:

T   Col~A~1~    Col~A~2~    Col~A~3~    Col~B~1~    Col~B~2~    Col~B~3~
1 1 0.5 0.5 0.5 0.25 0.25
1.5 2 1 1 1 0.5 0.5
2 3 1.5 0.5 1.5 0.75 0.25
2.5 4 2 1 2 1 0.5
3 5 2.5 0.5 2.5 1.25 0.25
3.5 6 3 1 3 1.5 0.5
4 7 3.5 0.5 3.5 1.75 0.25
4.5 8 4 1 4 2 0.5
5 9 4.5 0.5 4.5 2.25 0.25
5.5 10 5 1 5 2.5 0.5
6 11 5.5 0.5 5.5 2.75 0.25
6.5 12 6 1 6 3 0.5
7 13 6.5 0.5 6.5 3.25 0.25
7.5 14 7 1 7 3.5 0.5
8 15 7.5 0.5 7.5 3.75 0.25
8.5 16 8 1 8 4 0.5
9 17 8.5 0.5 8.5 4.25 0.25
9.5 18 9 1 9 4.5 0.5
10 19 9.5 0.5 9.5 4.75 0.25

最佳答案

一些提示:

  • df.groupby() 返回 (group_name, group) 元组,所以在尝试时要小心遍历组。
  • 如果pandas 绘图方法涵盖了您想要的绘图,通常您不想手动使用pyplot
  • pandas 绘图方法通常会为您正在绘制的数据框中的每一列生成一条单独的线,因此如果您可以重新排列数据以在单独的列中获取数据源,您可以轻松获得你想要的情节。
  • pandas 绘图方法默认使用数据帧的索引作为 x 轴。

也就是说,您可以使用以下方法生成所需的图:

for group_name, grp in df.groupby('upperLevel'):
plot_table = grp.pivot(index='time', columns='lowerLevel', values='data')
plot_table.plot()

关于具有堆叠数据的 Python Pandas 子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com