微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 使用按列值拆分的2个系列创建折线图

我正在努力应该是一件相当容易的事情.创建2系列线图.到目前为止,我设法这样做,但我认为这不是最快的方式.我想问一下是否有人知道如何更快/更聪明地做到这一点?

我遇到的问题是这两个系列的值在同一列’值’中,为了得到系列我应该根据’category’列拆分它们.到目前为止,我设法通过在绘制之前进行一些转换来实现.它似乎不是最快的解决方案.有没有人知道一种方法来制作这个没有变换的情节,我在下面的代码中做了?

我的代码

import numpy.random as r
import pandas as pn

#generate values
values= r.random_sample(200)
labels = range(1,101)+range(1,101)
category = [x for x in 100*'a'+100*'b' ]

#create dataframe
df =pn.DataFrame({'labels': labels,
                 'values': values,
                  'category': category})

### I tired here to create plot but was unsuccessful so far. And needed to make below transformation.

#transformation
df =df.set_index('labels')

dfA= df[df['category']=='a']
del dfA['category']
dfA.columns=['values_a']

dfB=df[df['category']=='b']
del dfB['category']
dfB.columns=['values_b']

#joining
frames=[dfA,dfB]
dff= pn.concat(frames, axis=1)

#ploting
dff.plot()

提前感谢您的帮助!

解决方法:

您必须转换数据,因为您不希望按原样绘制列.但有一种更简单的方法

>>> df.pivot(index='labels', columns='category', values='values').head()
category         a         b
labels                      
1         0.133046  0.762676
2         0.717739  0.774000
3         0.059960  0.547297
4         0.464269  0.951537
5         0.227428  0.987621
>>> df.pivot(index='labels', columns='category', values='values').plot()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐