我是这种数据分析的新手,目前正在处理公司的数据。我那里有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和目标列。因此,我可以比较平均值是否达到目标值。
答案 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()
答案 1 :(得分:0)
您好,我设法找到了此问题的答案 所以基本上这就是我所做的
df [“ avg”] = df.iloc [:,3:]。mean(轴= 1)
df [(df.Domain =='Finance')]。loc [:,['ID','Domain','Target','avg']]