python - python数据集上的Groupby函数

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

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

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

Test event     ID     x=axis      y-axis     slope

对此的任何帮助都会很棒

最佳答案

您可以使用任何数组作为 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()

关于python - python数据集上的Groupby函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52570122/

相关文章:

python - 批量 4D 张量 Tensorflow 索引

python - ManagedIdentityCredential 身份验证不可用,未找到托管身份端点

python - 如何从 Django 字段访问 Django 模型实例

javascript - 如何通过http正确发送二进制文件并使用javascript下载它?

python - 如何获取 Pandas 中某些特定日期之前和之后的日期时间?

python - 如何最好地根据配置指定要使用的接口(interface)子类

python - 如何为 python 3.0 的仅关键字参数导入 __future__?

python - Pandas:为什么附加到 float 和整数的数据帧比充满 NaN 的数据帧要慢

python - 识别超过 N 行的 10 分钟窗口

python - Peewee 在迁移过程中不使用主键递增整数字段