我需要计算上万家企业背后国有资本的持股情况,python能准确、高效的实现吗?如果不能,还有什么办法?请各位专家提供宝贵的建议。(试举一例:1.华能国际电力开发公司和中国华能香港集团香港有限公司分别对华能国际电力股份有限公司持股32.28%和3.01%;2.中国华能集团有限公司对中国华能香港集团香港有限公司百分百持股;3.国务院国有资产监督委员会和全国社保基金理事会对中国华能集团有限公司持股90.01%和9.99%;4.中国华能集团有限公司和尚华投资有限公司对华能国际电力开发公司持股75%和25%;5.中国华能香港集团香港有限公司对尚华投资有限公司100%,请问国务院国有资产监督委员会最终持股多少?)以上例子只是文字表达,我这里还有更简洁的excel文件和结构图。
11条回答 默认 最新
关注🕖上午好,题主!目前:🟢[在线]
📢参考通义千问、由郭老师整理提供!
📣今日诗号:何须剑道争锋?千人指,万人封;可问江湖顶峰,三尺秋水尘不染,天下无双。当然可以,Python 可以帮助你高效地计算上万家企业背后国有资本的持股情况。以下是用 Python 代码实现的方案,并结合你提供的例子进行说明:
class Shareholder: def __init__(self, name, direct_share=0.0): self.name = name self.direct_share = direct_share self.children = {} def add_child(self, child, share): self.children[child] = share def calculate_indirect_share(self, target, visited=None): if visited is None: visited = set() visited.add(self) if self.name == target: return self.direct_share total_share = 0.0 for child, share in self.children.items(): if child not in visited: indirect_share = child.calculate_indirect_share(target, visited) if indirect_share is not None: total_share += share * indirect_share return total_share # 创建公司实体 sasac = Shareholder("国务院国有资产监督委员会") nsfc = Shareholder("全国社保基金理事会") chng = Shareholder("中国华能集团有限公司") hki = Shareholder("中国华能香港集团香港有限公司") shipc = Shareholder("华能国际电力开发公司") shanghua = Shareholder("尚华投资有限公司") hpi = Shareholder("华能国际电力股份有限公司") # 建立股权关系 sasac.add_child(chng, 0.9001) nsfc.add_child(chng, 0.0999) chng.add_child(hki, 1.0) chng.add_child(shipc, 0.75) hki.add_child(shanghua, 1.0) shipc.add_child(hpi, 0.3228) hki.add_child(hpi, 0.0301) shanghua.add_child(shipc, 0.25) # 计算国务院国有资产监督委员会最终持股比例 sasac_share = sasac.calculate_indirect_share("华能国际电力股份有限公司") print(f"国务院国有资产监督委员会最终持股比例: {sasac_share:.2%}")代码解释:
- 创建公司实体: 我们使用
Shareholder类来表示每个公司或机构。每个实体都包含名称 (name),直接持股比例 (direct_share) 以及其子公司 (children) 信息。 - 建立股权关系: 根据你提供的信息,我们使用
add_child方法建立公司之间的股权关系。例如,sasac.add_child(chng, 0.9001)表示国务院国有资产监督委员会持有中国华能集团有限公司 90.01% 的股份。 - 计算最终持股比例:
calculate_indirect_share方法递归地遍历股权结构,计算目标公司 (target) 的最终持股比例。
如何应用到你的数据:
- 数据准备: 将你的 Excel 文件或结构图数据转换为 Python 数据结构,例如字典或列表。可以使用
pandas库读取 Excel 文件,并使用循环遍历数据创建Shareholder对象和股权关系。 - 修改代码: 根据你的数据结构,修改代码中创建公司实体和建立股权关系的部分。
- 运行计算: 调用
calculate_indirect_share方法计算目标公司最终的持股比例。
其他建议:
- 数据清洗: 在处理大规模数据前,务必进行数据清洗,确保公司名称和持股比例的准确性。
- 性能优化: 如果计算量非常大,可以考虑使用多线程或多进程并行计算,进一步提高效率。
- 可视化: 可以使用
networkx或graphviz等库将股权结构可视化,更直观地展示股权关系。
希望以上方案和代码能够帮助你!如果你还有其他问题,请随时提出。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 创建公司实体: 我们使用