您的位置:首页 > 编程语言 > Python开发

Python 数据分析微专业课程--项目实战11 中国城市资本流动问题探索

2018-09-04 21:41 961 查看

1.项目说明

通过全国2013-2016城市间投融资信息数据,分析资本在各城市间的流动情况.

2.项目具体要求

1.查看全国城际控股型投资关系
要求:分别筛选出“同城投资”、“跨城投资”的TOP20,比较一下两类投资的数据分布
2.2013-2016年全国跨城市资本流动情况
要求:
① 结合“中国城市代码对照表.xlsx”数据,给2013-2016年“跨城投资”的汇总数据添加城市的经纬度
② 通过2013-2016年“跨城投资”的汇总数据,在gephi中绘制“城市关系图”
③ 通过2013-2016年“跨城投资”的汇总数据,在echarts中绘制“全国跨城市资本流动OD图”

3.深挖跨城市资本流动:钱从哪里来,到哪里去?
要求:
① 近四年对外控股型投资笔数最多的10个城市是哪些?
② 近四年吸引对外控股型投资笔数最多的10个城市又是哪些?
③ 从2013年到2016年,资本流动两大阵营的变化趋势:“北上深阵营”、“本地化阵营”

3.实现思路:

1.根据投融资信息数据,可知投资关系分为’同城投资’和’跨城投资’两种,因此可比较这两种投资的分布,以及随年份的变化。
投资的分布可以分别筛选出’同城投资’和’跨城投资’的数据,然后根据’投资方所在城市’和’融资方所在城市’进行分组求和,
然后绘制柱状图即可得到两种投资类型的分布情况。
随年份的变化可以循环筛选并绘制各个年份的’同城投资’和’跨城投资’的柱状图,4*2个子图,一行作为一个年份两种类型的比较.

2.分析全国跨城市资本投资关系可以使用Gephi进行数据关系分析,可以得到基于投资数据的’城市关系图’,可以清晰看到各城市间的
投资关系。城市间的资本流动可以通过绘制OD图来分析,可以非常直观而全面的了解资本在各个城市的流动情况。

3.深入分析城市间资本流动,从两个方面入手,一方面分析向外投资的城市的投资数据,另一方面分析融资城市的融资数据,分析哪些城市
投资较多,哪些城市融资较多,取数据TOP20绘制柱状图。并分析主要投资城市资本是如何扩张的。

4.实现过程:

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

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模块

#设置默认目录
import os
os.chdir(r'D:\IT\python数据分析师\项目12')

#筛选出'同城投资','跨城投资'的TOP20数据
data = pd.read_excel('data.xlsx') #读入excel 数据
tc_data = data[data['投资方所在城市']==data['融资方所在城市']] #筛选同城投资数据
tc_sum = tc_data.groupby(['投资方所在城市','融资方所在城市']).sum() #分组计算
tc_sum = tc_sum.sort_values('投资企业对数',ascending = False) #按投资企业对数降序排序
del tc_sum['年份'] #删除年份字段
tc_top = tc_sum.iloc[:20] #筛选出同城TOP 20 数据
print(tc_top)

kc_data = data[data['投资方所在城市']!=data['融资方所在城市']] #筛选跨城投资数据
kc_sum= kc_data.groupby(['投资方所在城市','融资方所在城市']).sum() #分组计算
kc_sum = kc_sum.sort_values('投资企业对数',ascending = False) #按投资企业对数降序排序
del kc_sum['年份'] #删除年份字段
kc_top = kc_sum.iloc[:20] #筛选出同城TOP 20数据
print(kc_top)

#绘制TOP20数据柱状图
tc_top.plot(kind='bar',grid = True,color= 'tomato',alpha = 0.8,figsize = (12,4),title = '同城投资TOP20')
kc_top.plot(kind='bar',grid = True,color = 'purple',alpha = 0.7,figsize = (12,4),title = '跨城投资TOP20')


#分开比较2013-2016四个年度的数据
kc_data['投资-融资城市'] = kc_data['投资方所在城市']+'-'+kc_data['融资方所在城市'] #新建'投资融资城市字段'
tc_sum_y = tc_data.groupby(['年份','投资方所在城市']).sum() #同城数据根据'年份','投资方所在城市'分组求和
kc_sum_y = kc_data.groupby(['年份','投资-融资城市']).sum()#跨城数据根据'年份','投资-融资城市'分组求和

fig,axs = plt.subplots(4,2,figsize = (14,18)) #创建子图
n=2013

#循环绘制各个年份同城,跨城投资数据柱状图
for i in range(0,4):
tc_top_y = tc_sum_y.loc
.sort_values('投资企业对数',ascending = False)[:20]
tc_top_y.plot(kind = 'bar',ax = axs[i,0],ylim = (0,40000),title = '同城投资-%i年'%n,rot = 45,color = 'tomato',alpha = 0.8)
kc_top_y = kc_sum_y.loc
.sort_values('投资企业对数',ascending = False)[:20]
kc_top_y.plot(kind = 'bar',ax = axs[i,1],ylim = (0,3000),title = '跨城投资-%i年'%n,rot = 45,color ='purple',alpha = 0.8)
n +=1
plt.grid(linestyle = '--')
plt.subplots_adjust(hspace = 0.5)

说明:
1.分别筛选出’同城投资’,’跨城投资’的数据,对数据都根据’投资方所在城市’,’融资方所在城市’进行分组求和,可得到城市的投资数据,然后分别绘制柱状图,即可得到’同城投资’,’跨城投资’的情况。
2.对数据进行深入分析,可以分析不同年份’同城投资’,’跨城投资’的变化情况,通过比较获得相关信息。这里可以通过for循环,循环筛选不同年份的数据并绘制柱状图。通过柱状图可以了解到不同年份两种投资的变化情况,同时可以比较同一年份两种投资的数据量。
3.通过以上分析可知以下结论:
a.同城投资的规模远远大于跨城投资的规模;
b.同城投资主要集中在北京,上海,深圳三个一线城市,其规模远远大于其他城市,跨城投资领头的城市仍为北上广深(相互投资),或者北上广深向周边城市投资(城市群)
c.从2013-2016年同城和跨城的投资都有较大幅度的增长,同城投资中主要城市是北上深,随着时间推移越来越拉开和其他城市的“同城投资”差距。
d.“跨城投资”中,投资关系较强的城市为“北京-上海” > “北京-深圳” > “上海-深圳” → 一线城市之间投资力度较大

#读取中国城市代码对照表数据
city_data = pd.read_excel('中国城市代码对照表.xlsx')[['城市名称','经度','纬度']]

#重置跨城分组数据索引
kc_sum.reset_index(inplace = True)

#分别连接投资方所在城市和融资方所在成经度,纬度数据,并保存成CSV文件
kc_data1 = pd.merge(kc_sum,city_data,left_on = '投资方所在城市',right_on = '城市名称',how = 'left')
kc_data1 = pd.merge(kc_data1,city_data,left_on = '融资方所在城市',right_on = '城市名称',how = 'left')
kc_data1 = kc_data1[['投资方所在城市','融资方所在城市','投资企业对数','经度_x','纬度_x','经度_y','纬度_y']]
kc_data1.to_csv('qgisdata.csv',index = False)

#筛选用于gephi绘图线数据,并保存成CSV文件
edge_data =kc_data1[['投资方所在城市','融资方所在城市','投资企业对数']]
edge_data.columns = ['source','target','weight']
edge_data['weight'] = (edge_data['weight']-edge_data['weight'].min())/(edge_data['weight'].max()-edge_data['weight'].min())
edge_data.to_csv('edge_data.csv',index = False)

#筛选用于gephi绘图的点数据,并保存成CSV文件
nodes = list(set(kc_data1['投资方所在城市'].tolist()+kc_data1['融资方所在城市'].tolist())) #生成投资/融资城市list
node_df = pd.DataFrame({'Id':nodes})   #生成DataFrame的点数据
node_top  = edge_data.sort_values('weight',ascending =False) #投资数据排序
node_top = node_top['source'].drop_duplicates().iloc[:20] #投资城市TOP20城市
node_top_df = pd.DataFrame({'Id':node_top,'Label':node_top}) #生成TOP20城市DataFrame数据
node_data = pd.merge(node_df,node_top_df,on='Id',how = 'left') #连接数据
node_data.to_csv('node_data.csv',index = False)

说明:
1.分析城市间投资关系和资本流动情况主要使用的工具是Gaphi,QGIS和echarts,python在这里主要是筛选汇总出相应的数据。
2.做城市间投资关系的分析首先需要分别筛选出用于Gaphi分析的线数据和点数据,线数据是’投资方所在城市’,’融资方所在城市’,’投资企业对数’,点数据是所有投资方城市和融资方城市数据,同时筛选出投资城市TOP20创建Lable字段,用于Gaphi分析中显示TOP20的城市标签。
3.分析资本流动情况首先需要生成用于空间分析的CSV数据文件,所需的数据是投资和融资城市以及对应的经纬度,然后是投资企业对数。然后在QGSI中使用插件“LinePlotter”做点转线,然后将shapefile转换成geojson格式的数据,将数据用echarts生成一个全国资本流动的OD图。
4.根据’城市关系图’和’全国资本流向OD图’分析可知:
a.三个亮点密集的区域:长三角城市群、珠三角城市群、北京-天津城市群
b.这三个城市群与成都-重庆西部城市群构成了一个钻石形状
c.这颗大钻石内的资本流动,占据了全国资本流动的绝大部分!
d.全国城市投资关系是以“北上深”为中心的城市网络

#筛选出跨城投资数据中投资方城市和融资方城市数据,并做分组求和
tz_data = kc_sum[['投资方所在城市','投资企业对数']].groupby('投资方所在城市').sum().sort_values('投资企业对数',ascending = False)
rz_data = kc_sum[['融资方所在城市','投资企业对数']].groupby('融资方所在城市').sum().sort_values('投资企业对数',ascending = False)
tz_top = tz_data.iloc[:10] #投资方城市TOP 10
rz_top = rz_data.iloc[:10]#融资方方城市TOP 10
print(tz_top)
print(rz_top)

#分别绘制投资方城市TOP10,融资方城市TOP10 数据柱状图
tz_top.plot(kind='bar',grid = True,color= 'skyblue',alpha = 0.8,rot=0,figsize = (12,5),title = '投资城市TOP20')
rz_top.plot(kind='bar',grid= True,color = 'olive',alpha = 0.8,rot = 0,figsize = (12,5),title = '融资城市TOP20')


#筛选计算,区分北上深阵营和非北上深阵营
kc_rz_max = kc_data.groupby(['年份','融资方所在城市'])[['投资企业对数']].max().reset_index() #筛选出年份融资城市最大投资对数
kc_rz_max = pd.merge(kc_rz_max,kc_data,on = ['融资方所在城市','投资企业对数','年份'],how = 'left')#连接最大投资对数相应的投资城市
kc_rz_max['阵营'] = np.where((kc_rz_max['投资方所在城市']=='北京')|    #划分阵营 '北上深阵营'为1,'本地化阵营'为0
(kc_rz_max['投资方所在城市']=='上海')|
(kc_rz_max['投资方所在城市']=='深圳'),1,0)

#创建函数对数据做清洗,并返回相应年份的北上深阵营数据和本地化阵营数据
def zy_count(n):
kc_rz_year = kc_rz_max[kc_rz_max['年份']==n]    #筛选对应年份数据
kc_rz_year = kc_rz_year[~kc_rz_year['投资-融资城市'].duplicated()] #'投资—融资城市'字段去除重复数据
bss = kc_rz_year.loc[kc_rz_year['阵营']==1] #北上深阵营数据
loc = kc_rz_year.loc[kc_rz_year['阵营']==0] #本地化阵营数据

loc = loc[~loc['融资方所在城市'].isin(bss['融资方所在城市'])] #判断本地化阵营中是否有和北上深阵营重合的城市,并筛选出来
loc = loc[~loc['融资方所在城市'].duplicated()] #去除本地化阵营融资城市重复的数据
bss = bss[~bss['融资方所在城市'].duplicated()]#去除北上深化阵营融资城市重复的数据
return (bss,loc)

#生成不同阵营城市数量及北上深阵营占比的dataframe
zy_year = pd.DataFrame(data=None,columns=['北上深阵营城市数量','本地化阵营城市数量','北上深阵营占比'])

#循环添加数据
for i in range(2013,2017):
zy_year.loc[str(i)+'年'] =[len(zy_count(i)[0]),len(zy_count(i)[1]),len(zy_count(i)[0])/(len(zy_count(i)[0])+len(zy_count(i)[1]))]
print(zy_year)

#绘制不同阵营数据堆叠柱状图
zy_year[['北上深阵营城市数量','本地化阵营城市数量']].plot(kind='bar',stacked = True,legend = True,edgecolor = 'black',color =['tan','ivory'],
figsize = (10,4),ylim = [0,400],rot = 0)
plt.grid(linestyle ='--')

#阵营数据连接经纬度并导出CSV文件做QGIS分析
for i in range(2013,2017):
zy_qgisdata = pd.merge(pd.concat(zy_count(i)),city_data,left_on = '融资方所在城市',right_on = '城市名称',how = 'left')
zy_qgisdata[['融资方所在城市','投资方所在城市','投资企业对数','阵营','经度','纬度']].to_csv('%i年.csv' % i,index = False)





说明:
1.这里是深入分析跨城市资本流动情况,分别筛选出主要投资城市数据和主要融资城市数据,分别绘制柱状图,即可知资本主要从哪些城市流出,又流入哪些主要城市。
2.从分析中可知:向外投资的主要城市是北上深,且量级远远大于其他几个城市,北上深控制着全国的主要进本流动;前10名中有5名都是长三角区域的城市,可以看到长三角地区资本的活跃程度,其中杭州已经超越广州排第四。
3.从2013年到2016年,资本流动两大阵营的变化趋势:“北上深阵营”、“本地化阵营”,“北上深阵营”:最大的外来投资方为北上深之一的城市,“本地化阵营”:这里简化计算,将非“北上深阵营”都划入“本地化阵营”。分析两个阵营的情况,这里先对数据进行清洗和筛选,筛选出“北上深阵营”、“本地化阵营”数据,绘制历年来两个阵营占比的堆叠柱状图。然后将两个阵营的数据导出为csv文件使用QGIS做空间分析,绘制两个阵营的区域图。
4.通过以上分析可知:
a.从2013-2016年北上深阵营占比逐年上升,本地化阵营逐年减少;
b.2013年,“北上深阵营”的地盘仅仅局限于国内少数相对发达地区,以及各省省会城市;
c.随着时间的推移,“北上深阵营”的势力范围逐步扩大,东北和内蒙的大部分地区纳入了“北上深阵营”, 越来越多的中小型城市也逐渐成为“北上深阵营”的一员;

5.总结

  • 这是一个综合且复杂的项目,需要分析的点比较全面,既需要分析总体也需要分析各年度的情况,需要综合运用各种工具来完成。
  • 复杂体现在无法直接通过数据来体现结论,通过各种可视化分析工具进行数据处理和展示可直观清晰的得出相应结论。
  • 在分析一个涉及较大空间的数据的时候,例如全国范围的数据,使用关系数据分析工具Gaphi和空间数据分析工具QGIS对出处理复杂的数据非常有用。
阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: