Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据集python上的Groupby函数_Python_Python 3.x_Pandas_Numpy - Fatal编程技术网

数据集python上的Groupby函数

数据集python上的Groupby函数,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,我有以下数据集,用于我的研究。最终输出为斜率 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 enumer

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

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)          

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

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

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

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

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

Test event     ID     x=axis      y-axis     slope

这方面的任何帮助都将非常有用

一种方法是通过
Test Event
对数据帧进行分组,然后在
groupby
对象上循环,并在每个组上运行现有代码。阅读关于迭代组的内容


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

linregress(df['x-axis'], df['y-axis'])
使用pandas groupby时,您可以对每个组应用

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()

我知道熊猫有一个groupby()方法。看一看,谢谢你的回答。输出应如上表所示,具有20个不同的斜率值(每个事件类型10个斜率值)。我先打印测试事件,然后打印斜率值。我的意思是,测试事件的打印方式不同,斜率值的打印方式也不同。每个测试事件都没有斜率值。@JLuxton,hanks,请回答。输出应如上表所示,具有20个不同的斜率值(每个事件类型10个斜率值)。我先打印测试事件,然后打印坡度值。我的意思是,测试事件的打印方式不同,坡度值的打印方式也不同。没有每个测试事件的坡度值。所以您想要一个连续坡度?我不清楚你想要的结果是什么。
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()