在线教育市场投资事件分析:统计公司年融资情况
在线教育市场投资事件分析:统计公司年融资情况
本文提供Python代码,用于统计在线教育市场投资事件数据中,某公司在2015-2019年间每年的融资次数和融资金额,并按融资次数降序、金额降序、年份升序排序,并将结果写入result.txt文件。
数据来源: 假设我们已经获取了包含所有投资事件的json文件,命名为'investments.json'。该文件包含以下字段:
- 时间:投资事件发生的时间,格式为:年/月/日。
- 公司名称:被投资的公司名称。
- 公司网址:被投资公司在信息披露网站的主页URL。
- 融资轮次:融资轮次。
- 投资金额:融资金额,单位有人民币、美元等不同货币。该字段的值有多种类型,包括:明确金额、金额范围、未披露。(读入数据后应换算成统一单位,金额范围按中值记录,未披露按0记录)
- 投资人:投资人,有单个投资人、多个投资人、未披露。
- 最新估值(估算):投资后,被投资公司的估值。估值=投资人投资金额/投资人所占股权比例。
- 字段1:被投资公司所在的领域(一级)。
- 字段2:被投资公司所在的领域(二级)。
- 字段3:被投资公司所在的领域(三级)。
代码实现:
首先,我们需要读入包含所有投资事件的json文件,并将其转换为Python的字典对象。假设我们已经将该文件命名为'investments.json',那么可以通过以下代码实现:
import json
with open('investments.json', 'r') as f:
data = json.load(f)
接下来,我们需要实现一个函数,用于统计某个公司在每一年的融资次数和融资金额。该函数的输入参数为公司名称和数据字典对象,输出为一个包含所有融资事件的列表。在该列表中,每个元素都是一个字典对象,包含年份、融资次数和融资金额三个字段。以下是该函数的代码实现:
def count_investments(company_name, data):
investments = []
for event in data:
if event['公司名称'] == company_name:
year = int(event['时间'].split('/')[0])
amount_str = event['金额']
if amount_str == '未披露':
amount = 0
elif '万' in amount_str:
amount = float(amount_str.split('万')[0]) * 10000
else:
amount = float(amount_str)
invested_by = event['投资方']
if isinstance(invested_by, str):
invested_by = invested_by.split(',')
num_investors = len(invested_by)
found = False
for item in investments:
if item['year'] == year:
item['num_investments'] += 1
item['total_amount'] += amount
found = True
break
if not found:
investments.append({'year': year, 'num_investments': 1, 'total_amount': amount})
return investments
接下来,我们可以调用该函数来统计某个公司在2015-2019年中的融资情况。以'Civitas Learning'为例,可以通过以下代码实现:
company_name = 'Civitas Learning'
investments = count_investments(company_name, data)
investments_2015_2019 = [item for item in investments if item['year'] in range(2015, 2020)]
investments_2015_2019.sort(key=lambda x: (-x['num_investments'], -x['total_amount'], x['year']))
最后,我们可以将结果写入result.txt文件中。以下是完整的代码实现:
import json
def count_investments(company_name, data):
investments = []
for event in data:
if event['公司名称'] == company_name:
year = int(event['时间'].split('/')[0])
amount_str = event['金额']
if amount_str == '未披露':
amount = 0
elif '万' in amount_str:
amount = float(amount_str.split('万')[0]) * 10000
else:
amount = float(amount_str)
invested_by = event['投资方']
if isinstance(invested_by, str):
invested_by = invested_by.split(',')
num_investors = len(invested_by)
found = False
for item in investments:
if item['year'] == year:
item['num_investments'] += 1
item['total_amount'] += amount
found = True
break
if not found:
investments.append({'year': year, 'num_investments': 1, 'total_amount': amount})
return investments
with open('investments.json', 'r') as f:
data = json.load(f)
company_name = 'Civitas Learning'
investments = count_investments(company_name, data)
investments_2015_2019 = [item for item in investments if item['year'] in range(2015, 2020)]
investments_2015_2019.sort(key=lambda x: (-x['num_investments'], -x['total_amount'], x['year']))
with open('result.txt', 'w') as f:
f.write('公司名称:{}
'.format(company_name))
f.write('时间 融资次数 融资金额
')
for item in investments_2015_2019:
f.write('{} {} {}
'.format(item['year'], item['num_investments'], item['total_amount']))
使用说明:
- 将包含投资事件数据的json文件命名为'investments.json',并将其放置在与代码文件相同的目录下。
- 运行代码,程序会自动统计指定公司在2015-2019年间每年的融资次数和融资金额,并将结果写入'result.txt'文件。
- 可根据需要修改代码中的company_name变量,以统计其他公司的融资情况。
注意事项:
- 代码中的'investments.json'文件需要根据实际情况进行修改。
- 代码中的公司名称'Civitas Learning'需要根据需要进行修改。
- 代码中默认将'未披露'的金额设置为0,可根据实际情况进行调整。
- 代码中默认将'万'单位的金额换算成人民币,可根据实际情况进行调整。
希望本文对您有所帮助!如果您有任何问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/oiY3 著作权归作者所有。请勿转载和采集!