2017-05-16 4 views
0

Ich habe einen Datensatz (Panda df), gut mehrere, aber das ist die Struktur.Plotten basierend auf einer Spalte

Replication     State Machine Average Time Std. Percent 
      1     IDLE bend  1.0863   68.42 
      1 State Bend real failur bend  19.7653   8.24 
      1     BUSY bend  0.3144   19.88 
      1 State Bend Die change bend  25.0000   3.47 
      2 State Bend Die change bend  25.0000   3.47 
      2 State Bend real failur bend  20.4153   6.88 
      2     BUSY bend  0.3058   19.93 
      2     IDLE bend  1.0742   69.73 
      3     IDLE bend  1.0803   69.25 
      3 State Bend Die change bend  25.0000   3.47 
      3 State Bend real failur bend  19.4699   7.23 
      3     BUSY bend  0.3117   20.04 

Was ich tun möchte, ist, 4 Histogramme (eins für jeden Zustand) zu machen. Ich hätte gerne eine Replikation auf der X-Achse und den Wert von 'Std. Prozent 'oder' Durchschnittszeit 'auf der y-Achse. Kann jemand einen Einblick geben, wie dies geplottet werden kann?

Dies ist der Code, den ich bisher gemacht, ich habe keine Schleifen nicht gemacht, weil ich es mit einem machen wollen arbeiten, dann kann ich Schleife über alle Nachworte

import pandas as pd 
import matplotlib.pyplot as plt 

data = pd.read_csv('frequencies50cleaned.csv', sep=',') 
data.columns= ['Replication', 'State', 'Machine', 'Average Time','Std. Percent'] 


bend = data[data['Machine'] == 'bend'] 
punch = data[data['Machine'] == 'punch'] 
form = data[data['Machine'] == 'form'] 
shear = data[data['Machine'] == 'shear'] 

bend = bend.sort(columns='Replication') 
x = bend[bend['State'] == 'IDLE']['Replication'] 
y = bend[bend['State'] == 'IDLE']['Std. Percent'] 

punch = punch.sort(columns='Replication') 
z = punch[punch['State'] == 'IDLE']['Replication'] 
p = punch[punch['State'] == 'IDLE']['Std. Percent'] 

bend.hist(column=['Replication']) 
#plt.clf() 
#plt.plot(x,y) 
#plt.plot(z,p) 
#plt.show() 
+0

groupby gefolgt von Handlung davon Gebrauch machen? –

+1

Haben Sie schon einmal etwas ausprobiert? Eine Brute-Force-Python-Schleife zumindest? –

+1

Was Sie wollen, heißt ein Balkendiagramm, kein Histogramm. Sind Sie sicher, dass Sie ein Histogramm möchten? https://en.wikipedia.org/wiki/Histogram – DyZ

Antwort

0

Also habe ich den Code zu Arbeit. Ich werde es hier posten, und hoffentlich andere können :-)

Import Pandas als pd Import matplotlib.pyplot als plt Import numpy als np

# Prefix for the scenario 
scen_name = "scenario1" 

# Importing the Data 
data = pd.read_csv(scen_name+'_frequencies50limcleaned.csv', sep=',') 
data.columns= ['Replication', 'State', 'Machine', 'Average Time','Std. Percent'] 

# Conforming the data 
data.State = data.State.replace('State Bend Blocked', 'Blocked') 
data.State = data.State.replace('State Punch Blocked', 'Blocked') 
data.State = data.State.replace('State Shear Blocked', 'Blocked') 
data.State = data.State.replace('State Form Blocked', 'Blocked') 

data.State = data.State.replace('State Bend real failur', 'Real Failure') 
data.State = data.State.replace('State Punch real failur', 'Real Failure') 
data.State = data.State.replace('State Shear real failur', 'Real Failure') 
data.State = data.State.replace('State Form real failur', 'Real Failure') 

data.State = data.State.replace('State Bend Die change', 'Die Change') 
data.State = data.State.replace('State Punch Die change', 'Die Change') 
data.State = data.State.replace('State Shear Die change', 'Die Change') 
data.State = data.State.replace('State Form Die change', 'Die Change') 

# Splitting data on machine 
bend = data[data['Machine'] == 'bend'] 
punch = data[data['Machine'] == 'punch'] 
form = data[data['Machine'] == 'form'] 
shear = data[data['Machine'] == 'shear'] 

report_vals = ['Average Time', 'Std. Percent'] 
states = ['IDLE', 'BUSY', 'Blocked'] 
post_fixes = ['avg_time', 'percent'] 
titles = ['Average time in state: ','Frequencies of in percent: '] 

i = 0 
for rep in report_vals: 
    for state in states: 
     bend = bend.sort_values('Replication') 
     x = bend[bend['State'] == state]['Replication'] 
     punch = punch.sort_values('Replication') 
     y = punch[punch['State'] == state]['Replication'] 
     form = form.sort_values('Replication') 
     z = form[form['State'] == state]['Replication'] 
     shear = shear.sort_values('Replication') 
     w = shear[shear['State'] == state]['Replication'] 

     b = bend[bend['State'] == state][rep] 
     p = punch[punch['State'] == state][rep] 
     f = form[form['State'] == state][rep] 
     s = shear[shear['State'] == state][rep] 

     fig, ax = plt.subplots() 

     rects1 = plt.plot(x,b,'b', 
         label='Bend') 

     rects2 = plt.plot(y,p,'g', 
         label='Punch') 

     rects3 = plt.plot(z,f,'r', 
         label='Form') 

     rects4 = plt.plot(w,s,'y', 
         label='Shear') 

     plt.xlabel('Replication') 
     plt.ylabel(rep) 
     plt.title(titles[i]+state) 
     plt.legend() 

     plt.tight_layout() 
     plt.savefig('/home/misterwhite/Dropbox/Aarhus Universitet/8. Semester/Modellering, simulation og analyse/Arena Project/Report/images/'+scen_name+'_'+state+'_'+post_fixes[i]+'.png') 
    i +=1 
Verwandte Themen