繁体   English   中英

在pandas df中绘制特定值

[英]Plot specific values in a pandas df

我不确定是否有更有效的方法来执行此操作。 我有一个带有一个包含感兴趣信息的Columndf 对于下面的df,我对Column B感兴趣。 我想为每个W,X,Y,Z值创建单独的plots 这些值更改时,我也希望开始每个单独的图。

import pandas as pd
import matplotlib.pyplot as plt

d = ({
    'A' : [1,2,3,4,5,6,7,8,1,3],            
    'B' : ['W','W','X','X','Y','Y','Z','Z','W','W'], 
     })

df = pd.DataFrame(data=d)

因此,该df将显示4个不同的图。 W值有2行。

我目前正在将上述df导出到单独的series 如果我绘制与W有关的值,输出将是:

   W1  W2  X1  Y1  Z1
0   1   1   3   5   8
1   2   3   4   6   9

fig, ax = plt.subplots()

plt.plot(df['W1'])
plt.plot(df['W2'])

但这意味着我要创建许多单独的seriesplots 如果我的df包含1000个在值之间连续变化的rows ,这并不是很低效。

在此处输入图片说明 有更容易的方法吗? 我认为当值更改时,我仍然必须将每个值导出到它自己的系列中。

但是,我希望有一种更简便的方法,而无需这样做,就可以将每个系列绘制在彼此的顶部。

我认为需要:

g = df['B'].ne(df['B'].shift()).cumsum()
df['C'] =  g.groupby(df['B']).transform(lambda x: pd.factorize(x)[0]).add(1).astype(str)
df['D'] = df.groupby(['B','C']).cumcount()
df = df.set_index(['D','C','B'])['A'].unstack([2,1])
df.columns = df.columns.map(''.join)
print (df)
   W1  X1  Y1  Z1  W2
D                    
0   1   3   5   7   1
1   2   4   6   8   3

df.groupby(df.columns.str[0], axis=1).plot()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM