Fork me on GitHub

中国城市资本流动问题探索

 

数据来源:

数据:全国2013-2016所有企业间的投融资信息数据

1、查看全国城际控股型投资关系

① 通过“data.xlsx”导出csv后,直接通过gephi看全国投资情况,有什么发现?
② 分别筛选出“同城投资”、“跨城投资”的TOP20,比较一下两类投资的数据分布
** 按照2013-2016年的汇总数据来计算
** 分开比较2013-2016四个年度的数据
** 需要绘制柱状图来辅助分析,这里用matplotlib即可
===>>>
① 原始数据中,同一年中的投资数据会重复记录,所以需要将数据以'投资方所在城市','融资方所在城市','年份'这三个字段做一个分组汇总
② 用df.plot(kind = 'bar')来绘制图表,这里index为城市名即可

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline

import warnings
warnings.filterwarnings('ignore') 
# 不发出警告

from bokeh.io import output_notebook
output_notebook()
# 导入notebook绘图模块

from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource,HoverTool
# 导入图表绘制、图标展示模块
# 导入ColumnDataSource模块

 

# (1)数据读取,筛选出“同城投资”、“跨城投资”数据

df = pd.read_excel('C:/Users/Hjx/Desktop/项目12中国城市资本流动问题探索/data.xlsx')
# 数据读取

df = df.groupby(['投资方所在城市','融资方所在城市','年份']).sum().reset_index()
# 汇总数据

data_tc = df[df['投资方所在城市'] == df['融资方所在城市']]
data_tc = data_tc.sort_values(by = '投资企业对数',ascending = False).reset_index()
del data_tc['index']
# 筛选出“同城投资”数据

data_kc = df[df['投资方所在城市'] != df['融资方所在城市']]
data_kc = data_kc.sort_values(by = '投资企业对数',ascending = False).reset_index()
del data_kc['index']
# 筛选出“跨城投资”数据

 

#(2) 比较一下“同城投资”、“跨城投资”TOP20的数据分布
# 按照2013-2017年的汇总数据来计算,比较

tc_sum = data_tc.groupby(['投资方所在城市','融资方所在城市']).sum().sort_values(by = '投资企业对数',ascending = False)
del tc_sum['年份']
# 汇总“同城投资”数据

kc_sum = data_kc.groupby(['投资方所在城市','融资方所在城市']).sum().sort_values(by = '投资企业对数',ascending = False)
del kc_sum['年份']
# 汇总“跨城投资”数据
# 查看“同城投资”
tc_sum.iloc[:20]
# 查看“跨城投资”
kc_sum.iloc[:20]

 

tc_sum.iloc[:20].plot(kind = 'bar',grid = True, figsize = (10,4),color = 'blue',alpha = 0.7)
kc_sum.iloc[:20].plot(kind = 'bar',grid = True, figsize = (10,4),color = 'green',alpha = 0.7)

 结论1
① 从2013-2016的汇总数据来看,投资比数“同城投资”>“跨城投资”
② “同城投资”中领头的城市为北上广深及部分二线强城市,其中 深圳>北京>上海>>其他城市
③ “跨城投资”中领头的城市仍为北上广深(相互投资),或者北上广深向周边城市投资(城市群)

 

# 比较一下“同城投资”、“跨城投资”TOP20的数据分布
# (3)分开比较2013-2016四个年度的数据

def f1(year):
    tc_year = data_tc[data_tc['年份'] == year].sort_values(by = '投资企业对数',ascending = False)
    kc_year = data_kc[data_kc['年份'] == year].sort_values(by = '投资企业对数',ascending = False)
    tc_year.index = tc_year['投资方所在城市']
    kc_year.index = kc_year['投资方所在城市'] + '-' + kc_year['融资方所在城市']
    # 筛选该年的“同城投资”、“跨城投资”
    #print('%i年同城投资TOP20:' % year)
    #print(tc_year.iloc[:20])
    #print('-----')
    #print('%i年跨城投资TOP20:' % year)
    #print(kc_year.iloc[:20])
    #print('-----')
    return(tc_year.iloc[:20],kc_year.iloc[:20])
    # 输出该年“同城投资”、“跨城投资”TOP20 
# 创建函数
# 绘制图表

fig,axes = plt.subplots(4,2,figsize=(12,15))
plt.subplots_adjust(wspace = 0.1,hspace=0.5)
f1(2013)[0]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'blue',alpha = 0.7,ax = axes[0,0],title = '同城投资 - 2013年',ylim = [0,40000])
f1(2013)[1]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'green',alpha = 0.7,ax = axes[0,1],title = '跨城投资 - 2013年',ylim = [0,3000])
# 2013年
f1(2014)[0]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'blue',alpha = 0.7,ax = axes[1,0],title = '同城投资 - 2014年',ylim = [0,40000])
f1(2014)[1]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'green',alpha = 0.7,ax = axes[1,1],title = '跨城投资 - 2014年',ylim = [0,3000])
# 2014年
f1(2015)[0]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'blue',alpha = 0.7,ax = axes[2,0],title = '同城投资 - 2015年',ylim = [0,40000])
f1(2015)[1]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'green',alpha = 0.7,ax = axes[2,1],title = '跨城投资 - 2015年',ylim = [0,3000])
# 2015年
f1(2016)[0]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'blue',alpha = 0.7,ax = axes[3,0],title = '同城投资 - 2016年',ylim = [0,40000])
f1(2016)[1]['投资企业对数'].plot(kind = 'bar',grid = True, color = 'green',alpha = 0.7,ax = axes[3,1],title = '跨城投资 - 2016年',ylim = [0,3000])
# 2016年

 

 

 

结论2
 ① 分开2013-2016年来看,每年“同城投资”、“跨城投资”均呈上升趋势
 ② “同城投资”中,头部城市仍为北上深(没有广州),且随着时间推移,越来越拉开和其他城市的“同城投资”差距(注意这个结论)
③ “跨城投资”中,投资关系较强的城市为“北京-上海” > “北京-深圳” > “上海-深圳” → 一线城市之间投资力度较大

 ** 接下来详细挖掘一下“全国跨城市资本流动情况”

 

 

2、2013-2016年全国跨城市资本流动情况

① 结合“中国城市代码对照表.xlsx”数据,给2013-2016年“跨城投资”的汇总数据添加城市的经纬度
② 通过2013-2016年“跨城投资”的汇总数据,在gephi中绘制“城市关系图”
** 这里gephi中“点标签”只显示投资笔数TOP20的城市
③ 通过2013-2016年“跨城投资”的汇总数据,在echarts中绘制“全国跨城市资本流动OD图”
** 这里通过qgis的插件,做点转线
** 通过echart制作最后的资本
** 这里line的value为投资笔数
====>>>
① gephi制图所需要导出的csv参考课程资料里的模板:边文件 → edge_model.csv;点文件 → node_model.csv(主要注意列名)
** 其中边数据的value需要做标准化处理 → 0-1之间
** gephi中单独显示某些城市的点标签方法 → 导入数据后,设置label,然后用label来显示标签,其中label只标注top20的数据
② qgis中需要安装插件“LinePlotter”来转线
③ shapefile转geojson时:注意shapefile保持wgs84地理坐标系

 

# 读取“中国城市代码对照表.xlsx”数据及重新设置kc_sum数据的index
city = pd.read_excel(r'E:\Python数据分析\项目\12资本\中国城市代码对照表.xlsx')
kc_sum.reset_index(inplace = True) 
#(1)添加经纬度信息
#
结合“中国行政代码对照表.xlsx”数据,给2013-2016年“跨城投资”的汇总数据添加城市的经纬度 kc_data = pd.merge(kc_sum,city[['城市名称','经度','纬度']],left_on ='投资方所在城市',right_on = '城市名称') kc_data = pd.merge(kc_data,city[['城市名称','经度','纬度']],left_on ='融资方所在城市',right_on = '城市名称') kc_data = kc_data[['投资方所在城市','融资方所在城市','投资企业对数','经度_x','纬度_x','经度_y','纬度_y']] kc_data.columns = ['投资方所在城市','融资方所在城市','投资企业对数','lng_tz','lat_tz','lng_rz','lat_rz'] kc_data.head()

# (2)导出gephi制图数据

gephi_edge = kc_data[['投资方所在城市','融资方所在城市','投资企业对数']]
gephi_edge.columns = ['source','target','weight']
gephi_edge['weight'] = (gephi_edge['weight'] - gephi_edge['weight'].min())/(gephi_edge['weight'].max() - gephi_edge['weight'].min())
gephi_edge.to_csv('C:/Users/Hjx/Desktop/gephi_edge.csv',index = False)
# 导出边数据

citys = list(set(gephi_edge['source'].tolist()+gephi_edge['target'].tolist()))
gephi_nodes = pd.DataFrame({'Id':citys})  
# 筛选出所有的城市节点,并生成dataframe
top_node = gephi_edge.sort_values(by = 'weight',ascending = False)
top_node20 = top_node['source'].drop_duplicates().iloc[:20]
top_node20_df = pd.DataFrame({'Id':top_node20, 'Label':top_node20})
# 筛选出投资对数较大,且不重复的前20个城市,并生成dataframe
gephi_nodes = pd.merge(gephi_nodes,top_node20_df,on = 'Id',how = 'left')
# 合并,给点数据增加label字段
gephi_nodes.to_csv('C:/Users/Hjx/Desktop/gephi_nodes.csv',index = False)
# 导出点数据

print('finished!')

在软件gephi 里边进行分析

加载边数据,加载节点

最后得到城市关系图

 

#(3) 导出qgis制图数据

kc_data.to_csv('C:/Users/Hjx/Desktop/qgisdata.csv',index = False)
print('finished!')

使用QGIS软件,做数据过程的整理

加载全国市界,设置灰色的背景;

LinePlotter,加载数据(4,5,6,7),添加value字段

 

导出; 然后转换为json文件。

最后HTML页面展示:

 

 

结论3 
① 通过“全国跨城市资本流动OD图”可以明显看到
 ** 三个亮点密集的区域:长三角城市群、珠三角城市群、北京-天津城市群
 ** 这三个城市群与成都-重庆西部城市群构成了一个钻石形状
 ** 在钻石之外,仅有星星点点的东北和西部的几个亮点游离;
 ** 而这颗大钻石内的资本流动,占据了全国资本流动的90%以上!!
② 通过“城市关系图”可以发现:
 ** 城际投资的全国城市拓扑关系 → 以“北上深”为中心的城市网络

 

3、深挖跨城市资本流动:钱从哪里来,到哪里去?

① 近四年对外控股型投资笔数最多的10个城市是哪些?
② 近四年吸引对外控股型投资笔数最多的10个城市又是哪些?
③ 从2013年到2016年,资本流动两大阵营的变化趋势:“北上深阵营”、“本地化阵营”
** “北上深阵营”:最大的外来投资方为北上深之一的城市
** “本地化阵营”:这里简化计算,将非“北上深阵营”都划入“本地化阵营”
** 该问题从“北上深阵营”历年来城市数量占比来看
** 可以qgis辅助绘制城市空间分布
===>>>
① 资本流动两大阵营在计算中,主要以“融资方所在城市”为对象研究
② 资本流动两大阵营变化趋势计算中,可以构建函数,以年份为参数
③ 如何得到某年融资城市对应的最大的外来投资城市?
** 首先按照“融资方所在城市”做groupby分组,计算“投资企业对数”的max,得到一个Series
** Series通过reset_index转化为dataframe
** 再通过和源数据merge,找到该融资城市的最大外来投资对应的“投资方城市”,这里merge中的参数 on = ['融资方所在城市','投资企业对数']
④ 为了在qgis中制图,需要给数据添加经纬度信息,这里只需要添加“融资方所在城市”的经纬度
⑤ 为了qgis更好识别阵营类型,数据“阵营”字段用数字表示:0代表“本地化阵营”,1代表“北上深阵营”
⑥ qgis中制图时,既不属于“本地化阵营”又不属于“北上深阵营”的城市,颜色填充和“本地化阵营”一样即可

 

# (1)近四年对外控股型投资笔数最多的10个城市是哪些?
result1 = kc_sum[['投资方所在城市','投资企业对数']].groupby('投资方所在城市').sum().sort_values(by = '投资企业对数',ascending = False).iloc[:10]
# 近四年吸引对外控股型投资笔数最多的10个城市又是哪些?
result2 = kc_sum[['融资方所在城市','投资企业对数']].groupby('融资方所在城市').sum().sort_values(by = '投资企业对数',ascending = False).iloc[:10]

 

result1.plot(kind = 'bar',grid = True, figsize = (10,4),color = 'red',alpha = 0.7, rot = 0)
result2.plot(kind = 'bar',grid = True, figsize = (10,4),color = 'black',alpha = 0.7, rot = 0)

结论4
① 通过“对外控股型投资笔数-城市排名TOP10”可以看出
 ** 北京、上海、深圳毫无悬念地包揽了前三名,且在量级上远远超过了其他城市 → 北上深在一定程度上控制着全国的资金流向和经济命脉
 ** 杭州 → 第四名,表现最为亮眼的省会城市,崛起的新一线城市
** 广州 → 第五名,江湖人称“北上广”三兄弟的广州,在对外投资的控制力上已经与另两位兄弟渐行渐远了
 ** 前10名中有5名都是长三角区域的城市,可以看到长三角地区资本的活跃程度
② 通过“吸引对外控股型投资笔数-城市排名TOP10”可以看出
 ** 吸引外来控股型投资笔数最多的前三名的仍然是北上深
** 在外来资本流入城市的榜单中,嘉兴挤掉了南京,进入前十名 → 相比资本对外输出,嘉兴是一个更受资本青睐的城

 

# (2)从2013年到2016年,资本流动两大阵营的变化趋势:“北上深阵营”、“本地化阵营”
# ** “北上深阵营”:最大的外来投资方为北上深之一的城市
# ** “本地化阵营”:这里简化计算,将非“北上深阵营”都划入“本地化阵营”

def f2(year):
    kc_datai = data_kc[data_kc['年份']==year]
    x = kc_datai[['融资方所在城市','投资企业对数']].groupby('融资方所在城市').max().reset_index()
    city_tz_max = pd.merge(kc_datai,x,on = ['融资方所在城市','投资企业对数'],how = 'right')
    # 数据整理 → 得到融资城市的最大外来投资对应的“投资方城市”
    city_tz_max['阵营'] = 0
    city_tz_max['阵营'][(city_tz_max['投资方所在城市'] == '北京') |
                        (city_tz_max['投资方所在城市'] == '上海') | 
                        (city_tz_max['投资方所在城市'] == '深圳') ] = 1
    # 划分“北上深阵营”、“本地化阵营”
    city_tz_max = pd.merge(city_tz_max,city[['城市名称','经度','纬度']],left_on ='融资方所在城市',right_on = '城市名称')
    city_tz_max = city_tz_max[['投资方所在城市','融资方所在城市','投资企业对数','阵营','经度','纬度']] 
    # 添加融资方所在城市经纬度
    dici = {}
    dici['北上深阵营城市数据量'] = city_tz_max['阵营'].value_counts().iloc[1]
    dici['本地化阵营城市数据量'] = city_tz_max['阵营'].value_counts().iloc[0]
    # 计算“北上深阵营”、“本地化阵营”的城市数量,并放入一个字典
    return(city_tz_max,dici)
# 创建函数

#(3)北上深阵营城市占比的变化趋势 zy_year = pd.DataFrame([f2(2013)[1],f2(2014)[1],f2(2015)[1],f2(2016)[1]],index = ['2013年','2014年','2015年','2016年']) zy_year['北上深阵营占比'] = zy_year['北上深阵营城市数据量']/(zy_year['北上深阵营城市数据量'] + zy_year['本地化阵营城市数据量']) zy_year[['北上深阵营城市数据量','本地化阵营城市数据量']].plot(kind='bar',grid = True,colormap='Blues_r',rot = 0, stacked=True,figsize = (10,4),ylim = [0,400]) # 绘制堆叠图查看占比变化趋势 zy_year

# (4)数据导出csv,qgis绘图
f2(2013)[0].to_csv('C:/Users/Hjx/Desktop/year2013.csv',index = False)
f2(2014)[0].to_csv('C:/Users/Hjx/Desktop/year2014.csv',index = False)
f2(2015)[0].to_csv('C:/Users/Hjx/Desktop/year2015.csv',index = False)
f2(2016)[0].to_csv('C:/Users/Hjx/Desktop/year2016.csv',index = False)
print('finished!')

使用QGIS进行分析

计算多边形内的点数目

按照阵营最大值分类

 

结论5 
“北上深阵营”高歌猛进,“本地化阵营”节节败退
 ① 2013年,“北上深阵营”的地盘仅仅局限于国内少数相对发达地区,以及各省省会城市
 ② 随着时间的推移,“北上深阵营”的势力范围逐步扩大,东北和内蒙的大部分地区纳入了“北上深阵营”
 ③ 越来越多的中小型城市也逐渐成为“北上深阵营”的一员
 ④ 2014年,90%的控股型城际投资去向了99个城市,而到了2017年,90%的城际投资只去向了60个城市
 → “北上深”越来越强大的资本力量,正在逐步地穿透中国经济的底层——三四线城市

 

posted @ 2018-11-15 21:54  kris12  阅读(1093)  评论(0编辑  收藏  举报
levels of contents