我有一个包含60列数据的数据框(列1 = I 1,列2 = S 1 ....列3 = I 2,列4 = S 2。 。)等等)...从pandas中的同一数据帧的列中绘制数据
我想创建一个函数,每次选择两列进行切片,绘图和查找切片的积分。我可以做两列,但我不知道如何实现一个函数来运行所有60列。到目前为止,我有以下几点:
df = pd.DataFrame.from_csv(filepath, index_col =None)
df_slice =df.iloc[23500:25053]
R = df_slice['I 1']
I = df_slice['S 1']
rcParams['figure.figsize']= 10,5
plt.plot(R, I)
plt.xlabel('cm-1')
plt.ylabel('Hz')
#integration of peak
area = trapz(R)
print area
的功能:
def integrate_peak(filepath):
df = pd.DataFrame.from_csv(filepath, index_col =None)
for row in df:
..........slice
..........overlay plots
..........get integral for each plot curve
输出:在一个单独的数据帧
任何帮助将
30个积分答案不胜感激。
编辑:
我已经试过这样:
def get_slice():
df = pd.DataFrame.from_csv(filepath, index_col =None)
for i in range(1,31):
df_slice = df.iloc[23500:25053]
R = df_slice['I %i' %i]
I = df_slice['S %i' %i]
plt.plot(R,I)
area = trapz(R)
print area
get_slice()
这给我的30个地块的覆盖,但是给了我30个值整体(全部为相同数量)
是不可能对所有列进行简单循环,例如,使用'范围内的切片(1,31)'等等?要选择正确的列,您可以使用'df_slice ['I%i'%slice]'等等。 – Pilik
将会很有趣,您将如何设置集成边界。此外,它看起来像下面有第二个高峰。你说明了吗? – Moritz