pandas-如何计算每个桑基节点的百分比

发布于 2025-01-12 11:12:57 字数 502 浏览 1 评论 0原文

我从 splunk 导出了一些原始数据,并使用 python pandas 将原始数据转换为基于 dc、customer 和 companyID 列的源、目标和值,下面是示例数据的一部分。

dc,customer,companyID,source,target,value

我正在使用 powerBI 通过使用 networkD3 库创建 html 自定义视觉效果来显示桑基图。所以我想在本地将所有数据准备好在csv文件中,然后上传powerBI以避免在powerBI中进行任何数据计算。

那么如何通过 python pandas 计算百分比,如下图所示?基本上,源节点的百分比值应等于每个目标节点的百分比总和。

我想要的百分比如下所示 输入图片此处描述

I exported some raw data from splunk, and I have transform the raw data to source, target and value based on dc, customer and companyID column by using python pandas, Below is part of sample data.

dc,customer,companyID,source,target,value

I am using powerBI to display the sankey chart by creating a html custom visual with networkD3 library. So i want to make all the data ready in a csv file locally and then upload the powerBI to avoid any data computing in powerBI.

So how to calculate the percentage by python pandas like below chart? Basically, the percentage value of the source node should be equal to the sum percentage of each target nodes.

The percentage I want looks like below
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听,心雨的声音 2025-01-19 11:12:57

使用:

    temp = [['dc1','c1','cid1','view_page_mk_1','open_opp_2',10],
    ['dc2','c2','cid2','view_page_mk_1','open_opp_2',5],
    ['dc1','c1','cid1','view_page_as_1','open_opp_2',10],
    ['dc2','c1','cid1','view_page_cp_1','view_opp_2',33],
    ['dc3','c3','cid3','open_opp_2','show_more_3',8],]

df = pd.DataFrame(temp)
df.columns = ['dc','customer','companyID','source','target','value']
df['percent'] = df['value']/df['value'].sum()
df.groupby('source')['percent'].sum()

输出:

在此处输入图像描述

Use:

    temp = [['dc1','c1','cid1','view_page_mk_1','open_opp_2',10],
    ['dc2','c2','cid2','view_page_mk_1','open_opp_2',5],
    ['dc1','c1','cid1','view_page_as_1','open_opp_2',10],
    ['dc2','c1','cid1','view_page_cp_1','view_opp_2',33],
    ['dc3','c3','cid3','open_opp_2','show_more_3',8],]

df = pd.DataFrame(temp)
df.columns = ['dc','customer','companyID','source','target','value']
df['percent'] = df['value']/df['value'].sum()
df.groupby('source')['percent'].sum()

output:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文