数据集python上的Groupby函数

时间:2018-09-29 16:02:32

标签: 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 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

Test event = 11,12,13,14

这意味着在每个测试事件中每个ID都需要倾斜

Test event     ID     x=axis      y-axis     slope

任何对此的帮助都会很棒

2 个答案:

答案 0 :(得分:2)

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

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

使用pandas groupby时,您可以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()

答案 1 :(得分:1)

一种方法是按playSpace= (ViewGroup)findViewById(R.id.playSpace); 对DataFrame进行分组,然后在Test Event对象上循环并在每个组上运行现有代码。了解有关遍历组in the docs的信息。

groupby