HINTERGRUND: Ich bin beschäftigt, Daten für verschiedene experimentelle Arbeit zu analysieren. Ziel ist es, eine Excel-Datei mit verschiedenen Blättern zu importieren. Dann "filtere" das Rauschen aus den Daten und finde den Durchschnitt aller Samples. Zeichnen Sie dann ein Diagramm und speichern Sie das Diagramm.Python: df.mean scheint die falsche Ausgabe zu geben, warum?
PROGRESS & PROBLEM: ich in der Lage gewesen, alle oben genannten Schritte zu tun, scheint die endgültige Grafik mit den verschiedenen Proben vs jedoch der Durchschnitt davon falsch zu mir. Ich bin mir nicht sicher, ob das "df.mean" die richtige Methode ist, den Durchschnitt zu finden. Ich habe die Grafik angehängt, die ich bekomme, irgendwie kann ich nicht zustimmen, dass der Durchschnitt so niedrig sein kann? It can be seen that the saved image from my code cuts off the legend, how can I change this?
verbesserungsbedürftig: Dies ist meine erste Frage auf Stackoverflow und ich bin noch neu in Python. Der Code scheint sehr "flauschig" zu sein und ich würde mich über Vorschläge zur Verkürzung des Codes freuen.
MEIN CODE:
#IMPORT LIBRARIES
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#IMPORT DATA
excel_df= pd.ExcelFile('data.xlsx',delimiter = ';') #import entire excel file
sheet1=pd.read_excel('data.xlsx',sheetname=0,names=['time','void1','pressure1'])
sheet2=pd.read_excel('data.xlsx',sheetname=1,names=['time','void2','pressure2'])
sheet3=pd.read_excel('data.xlsx',sheetname=2,names=['time','void3','pressure3'])
sheet4=pd.read_excel('data.xlsx',sheetname=3,names=['time','void4','pressure4'])
sheet5=pd.read_excel('data.xlsx',sheetname=4,names=['time','void5','pressure5'])
sheet6=pd.read_excel('data.xlsx',sheetname=5,names=['time','void6','pressure6'])
sheet7=pd.read_excel('data.xlsx',sheetname=6,names=['time','void7','pressure7'])
sheet8=pd.read_excel('data.xlsx',sheetname=7,names=['time','void8','pressure8'])
sheet10=pd.read_excel('data.xlsx',sheetname=9,names=['time','void10','pressure10'])
#SORT VALUES TO FIND THE UNWANTED DATA
sheet1.sort_values('pressure1',ascending=False).head() #the pressure has noise so sort accordingly
#GET ONLY WANTED DATA WITHOUT NOISE
sheet1_new = sheet1[sheet1.pressure1 <=8] #exclude the noise above 8 bar
sheet2_new = sheet2[sheet2.pressure2 <=8] #exclude the noise above 8 bar
sheet3_new= sheet3[sheet3.pressure3 <=8] #exclude the noise above 8 bar
sheet4_new = sheet4[sheet4.pressure4 <=8] #exclude the noise above 8 bar
sheet5_new = sheet5[sheet5.pressure5 <=8] #exclude the noise above 8 bar
sheet6_new = sheet6[sheet6.pressure6 <=8] #exclude the noise above 8 bar
sheet7_new = sheet7[sheet7.pressure7 <=8] #exclude the noise above 8 bar
sheet8_new = sheet8[sheet8.pressure8 <=8] #exclude the noise above 8 bar
sheet10_new = sheet10[sheet10.pressure10 <=8] #exclude the noise above 8 bar
#MERGE THE DATASETS TO FIND AVERAGE OF ALL SAMPLES
#'MERGE' ONLY MERGES 2 DATAFRAMES AT A TIME
merge12_df = pd.merge(sheet1_new,sheet2_new, on='time')
merge34_df = pd.merge(sheet3_new,sheet4_new, on='time')
merge56_df = pd.merge(sheet5_new,sheet6_new, on='time')
merge78_df = pd.merge(sheet7_new,sheet8_new, on='time')
#MERGE ON FIRST OUTPUT
all_merged = merge12_df.merge(merge34_df, on='time').merge(merge56_df, on = 'time').merge(merge78_df, on = 'time').merge(sheet10_new, on = 'time')
#print(all_merged.head()) #check that all data is merged into one dataframe
#AVERAGE ALL PRESSURES
mean_all_pressures = all_merged[["pressure1", "pressure2","pressure3", "pressure4","pressure5", "pressure6","pressure7", "pressure8", "pressure10"]].mean(axis=1)
#PRINT AVERAGE VS ALL THE SAMPLES GRAPH
plt.figure(1)
plt.plot(all_merged.time,mean_all_pressures,'r.') #plot the average of all samples.
plt.plot(sheet1_new.time,sheet1_new.pressure1)
plt.plot(sheet2_new.time,sheet2_new.pressure2)
plt.plot(sheet3_new.time,sheet3_new.pressure3)
plt.plot(sheet4_new.time,sheet4_new.pressure4)
plt.plot(sheet5_new.time,sheet5_new.pressure5)
plt.plot(sheet6_new.time,sheet6_new.pressure6)
plt.plot(sheet7_new.time,sheet7_new.pressure7)
plt.plot(sheet8_new.time,sheet8_new.pressure8)
plt.plot(sheet10_new.time,sheet10_new.pressure10)
plt.legend(['Average','Sample 1','Sample 2','Sample 3','Sample 4','Sample 5','Sample 6','Sample 7','Sample 8','Sample 10'],bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.xlabel('Time (s)'),plt.ylabel('Pressure (bar)') #Specify the plot details
plt.savefig('AllPressures_vs_Average.png') #Save the plot for later use
plt.show() #Display the plot
'für num in Reichweite (1,11):' eine Menge Code hier retten könnte ... –
Der Durchschnitt liegen die roten Punkte auf dem Graphen. Mein erstes Bild wurde nicht korrekt hochgeladen. –
überprüfen Sie den Mittelwert, indem Sie die Berechnung explizit durchführen, d. H. Summieren über die gefilterten Druckwerte & dividieren, aber die Probennummer. – DrBwts