数据集 python 上的分组函数



我有以下数据集用于我的研究。最终输出是斜率。

import numpy as np
import pandas as pd
from scipy import stats
df=pd.read_excel('I:/Python/Data/Copy.xlsx')

df_np=np.array(df)
x=np.array(df_np[:,14],dtype=float)
y=np.array(df_np[:,12],dtype=float)

for i, pair in enumerate(zip(x, y)):

slope, intercept, r_value, p_value, std_err = stats.linregress(np.delete(x,i),np.delete(y,i))
print('slope', slope, 'for data without pair', i, ':', pair)          

我在上面的代码中需要的帮助是测试事件单独输出,斜率值单独输出。test_events值和坡度值之间没有 1:1 的关系。

假设每个测试事件中有 10 个 ID。

测试 ID = 0,1,2,...9

测试事件 = 11, 12, 13, 14

这意味着我需要每个测试事件中每个 ID 的斜率

Test event     ID     x=axis      y-axis     slope

对此的任何帮助都将很棒

您可以使用任何数组作为linegress函数的输入。 这包括数据帧中的系列:

linregress(df['x-axis'], df['y-axis'])

使用熊猫分组时,您可以apply每个组

grouped = df.groupby('Test Event')
grouped.apply(lambda x: pd.Series(linregress(x['x-axis'], x['y-axis']))).rename(columns={
0: 'slope',
1: 'intercept',
2: 'rvalue',
3: 'pvalue',
4: 'stderr'}).reset_index()

一种方法是按Test Event对数据帧进行分组,然后遍历groupby对象并在每个组上运行现有代码。阅读有关在文档中循环访问组的信息。

import numpy as np
import pandas as pd
from scipy import stats
df=pd.read_excel('I:/Python/Data/Copy.xlsx')
grouped = df.groupby('Test Event')
for test_event, g in grouped:
print('Test Event: {}'.format(test_event))
df_np=np.array(g)
x=np.array(df_np[:,1],dtype=float)
y=np.array(df_np[:,2],dtype=float)
for i, pair in enumerate(zip(x, y)):
slope, intercept, r_value, p_value, std_err = stats.linregress(np.delete(x,i),np.delete(y,i))
print('slope', slope, 'for data without pair', i, ':', pair) 

相关内容

  • 没有找到相关文章

最新更新