2015-03-24 6 views
20

dataframe मैं एक dataframe कि निम्नलिखितसाजिश कई पंक्तियों

color x y 
0 red 0 0 
1 red 1 1 
2 red 2 2 
3 red 3 3 
4 red 4 4 
5 red 5 5 
6 red 6 6 
7 red 7 7 
8 red 8 8 
9 red 9 9 
10 blue 0 0 
11 blue 1 1 
12 blue 2 4 
13 blue 3 9 
14 blue 4 16 
15 blue 5 25 
16 blue 6 36 
17 blue 7 49 
18 blue 8 64 
19 blue 9 81 

मैं अंत में दो रेखाओं, एक नीले रंग, एक लाल चाहते की तरह लग रहा है। लाल रेखा अनिवार्य रूप से y = एक्स होना चाहिए और नीले रंग की रेखा y होना चाहिए = एक्स^2

मैं निम्न कार्य करें:

:

df.plot(x='x', y='y') 

उत्पादन यह है

क्या पांडा को यह जानने का कोई तरीका है कि दो सेट हैं? और तदनुसार उन्हें समूह।

for key, grp in df.groupby(['color']): 

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_table('data', sep='\s+') 
fig, ax = plt.subplots() 

for key, grp in df.groupby(['color']): 
    ax = grp.plot(ax=ax, kind='line', x='x', y='y', c=key, label=key) 

plt.legend(loc='best') 
plt.show() 

: मैं

उत्तर

32

आप groupby इस्तेमाल कर सकते हैं रंग के अनुसार उपसमूहों में DataFrame विभाजित करने के लिए सेट से अलग रूप में स्तंभ 'रंग' का उल्लेख कर सकते करना चाहते हैं पैदावार enter image description here

+0

'कुल्हाड़ी = grp.plot (कुल्हाड़ी = कुल्हाड़ी, प्रकार = 'लाइन', एक्स = 'एक्स', y = 'y ', सी = कुंजी, लेबल = कुंजी) ' " लेबल "क्वर्ग जोड़ने से आपको बाद में किंवदंती में हेरफेर करना होगा। – ErnestScribbler

+0

@ErnestScribbler: सुधार के लिए धन्यवाद! – unutbu

-3

आप इस कोड का उपयोग कर सकते हैं अपनी इच्छा उत्पादन प्राप्त करने के लिए

import pandas as pd 
import matplotlib.pyplot as plt 
df = pd.DataFrame({'color': ['red','red','red','blue','blue','blue'], 'x': [0,1,2,3,4,5],'y': [0,1,2,9,16,25]}) 
print df 

    color x y 
0 red 0 0 
1 red 1 1 
2 red 2 2 
3 blue 3 9 
4 blue 4 16 
5 blue 5 25 

ग्राफ प्लॉट करने के लिए

a = df.iloc[[i for i in xrange(0,len(df)) if df['x'][i]==df['y'][i]]].plot(x='x',y='y',color = 'red') 
df.iloc[[i for i in xrange(0,len(df)) if df['y'][i]== df['x'][i]**2]].plot(x='x',y='y',color = 'blue',ax=a) 

plt.show() 

आउटपुट The output result will look like this

संबंधित मुद्दे