如何根据条件提取多列

时间:2019-05-30 01:45:14

标签: python pandas

我是这种数据分析的新手,目前正在处理公司的数据。我那里有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和目标列。因此,我可以比较平均值是否达到目标值。 enter image description here

2 个答案:

答案 0 :(得分:0)

我想您有一个与此类似的数据集:

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

enter image description here

答案 1 :(得分:0)

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

df [“ avg”] = df.iloc [:,3:]。mean(轴= 1)

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