我正在努力应该是一件相当容易的事情.创建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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。