У меня есть следующий минимальный пример, из которого я хотел бы усреднить копии различных условий (Biofilm, SS_mgL,% MP) и c для ряда элементов (в данном случае размер частиц). Как вы увидите, я справился с этим очень грубо, но я уверен, что есть более изящные способы сделать это. Все советы приветствуются.
# Load the Pandas libraries with alias 'pd'
import pandas as pd
# Load the Numpy libraries with alias 'np'
import numpy as np
# Load the Matplotlib library pyplot with alias 'plt'
from matplotlib import pyplot as plt
#Load data from my public Github repository
url = 'https://raw.githubusercontent.com/matt-salter/public/master/test.csv'
df = pd.read_csv(url,sep=';')
# Define size arrays etc.
midpoint = np.array([1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,58.5])
# Average size distribution for condition Biofilm=0, SS_mgL=10, %MP=0
size_dist = np.array([df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 1.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 2.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 3.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 4.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 5.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 6.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 7.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 8.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 9.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 10.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 11.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 12.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 13.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 14.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 15.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 16.5), 'dn/dlogDP'].mean(),
df.loc[(df['Biofilm'] == 0) & (df['SS_mgL'] == 10) & (df['%MP'] == 0) & (df['Midpoint'] == 58.5), 'dn/dlogDP'].mean()])
plt.semilogx(midpoint,size_dist)
plt.xlim([1,100])
plt.xlabel('Particle size ($\mu$m)')
plt.ylabel('dn/dlog$_{Dp}$')