Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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 如何根据条件提取多个列_Python_Pandas - Fatal编程技术网

Python 如何根据条件提取多个列

Python 如何根据条件提取多个列,python,pandas,Python,Pandas,我不熟悉这种数据分析,目前正在处理一家公司的数据。我有超过100列的数据。这些列相互关联,其中前四列提供数据的描述(id、域、描述、实际目标)。其他列的其余部分只是其他数值,基本上说明了他们当天达到的目标值 所以,基本上公司让我找到的问题是,哪个id波动最大,哪个id没有达到目标 我想知道,我如何正确地执行这个问题,因为这是我第一次为一家公司做数据分析 首先,我对域进行分组,以查看有多少id与不同的域相关联 然后我开始查找每个域(分组)中每个id的平均值。在查找平均值时,我基本上可以看到id是否

我不熟悉这种数据分析,目前正在处理一家公司的数据。我有超过100列的数据。这些列相互关联,其中前四列提供数据的描述(id、域、描述、实际目标)。其他列的其余部分只是其他数值,基本上说明了他们当天达到的目标值

所以,基本上公司让我找到的问题是,哪个id波动最大,哪个id没有达到目标

我想知道,我如何正确地执行这个问题,因为这是我第一次为一家公司做数据分析

首先,我对域进行分组,以查看有多少id与不同的域相关联

然后我开始查找每个域(分组)中每个id的平均值。在查找平均值时,我基本上可以看到id是否未能达到该域的目标。不言而喻,如果大多数id未能到达特定域中的目标,则表示域/id未能到达目标

df.groupby('Domain)['Id'].count() /*This tells me different domain with how many id's are there */
df[(df.Domain == 'Finance')].mean(axis = 1) /*Finance is just one of the domain that has different id's associated to it */
但我面临的问题是,我可以提取分组域中每个id的平均值,但是我似乎无法打开与这些平均值关联的id和目标列。所以我可以比较平均值是否达到目标值。

我猜您的数据集与此类似:

import pandas as pd
data = {'domain': ['Finance', 'RD', 'Finance', 'RD'], 'target': [34, 2, 41, 86]}
df = pd.DataFrame(data)

    domain  target
0  Finance      34
1       RD       2
2  Finance      41
3       RD      86
当然,您可以使用groupby查找特定列的统计值。比如说,

df_grouped = df.groupby('domain')['target'].sum().reset_index()

    domain  target
0  Finance      75
1       RD      88
通过使用mean()或其他统计函数,您必须了解可能影响解释的样本量。比如说,

data = {'domain': ['Finance', 'RD', 'RD', 'RD'], 'target': [100, 2, 54, 86]}
df = pd.DataFrame(data)

    domain  target
0  Finance     100
1       RD       2
2       RD      54
3       RD      86


df_grouped = df.groupby('domain')['target'].mean()

    domain      target
0  Finance  100.000000
1       RD   47.333333
数据可视化

import matplotlib.pyplot as plt
df_grouped.plot.bar()
plt.show()

你好,我设法找到了这个问题的答案 所以基本上我就是这么做的

df[“avg”]=df.iloc[:,3::]平均值(轴=1)


df[(df.Domain=='Finance')].loc[:,['ID','Domain','Target','avg']

感谢您的回复。我想从你的角度来看,你的解释很清楚。但是,我想这并没有回答我的问题。我已经添加了我的表的照片。现在对于该表,如果我执行新的df.groupby('Domain')['ID'].count(),它将根据我的域对数据进行排序。之后,如果我执行df[(df.iloc[:,2::.Domain=='Finance'].mean(axis=1),它将为我提供财务域日期的平均值,但是,我希望输出显示行的平均值以及平均值的目标值(因此财务ID的目标值)以及金融领域的ID。@krijan我强烈建议您以表格形式或其他形式显示数据样本和预期输出,以使每个人都能清楚地理解。您好,我找到了我问题的答案并发布了出来,请查看我的答案。:)。非常感谢你的帮助,我真的很感激这将基本上打印出avg列以及ID,域,目标。通过这样做,我很容易将目标与平均值进行比较:)