Python分析6000家破产IT公司

前一阵有个字节跳动的程序员火了,年仅28岁实现了财务自由,宣布提早退休。最直接的缘由是选择了一家发展前景很好的创业公司。固然平时咱们常常能听到,某某人加入创业公司,xx年后公司上市,身价暴涨,财务自由。但这都是小几率事件,大部分人每每要么等不到公司上市就离职,要么公司还没上市就破产。这两天找到一份近几年破产的IT公司名单,共6000家,下面就对这份数据作个简单分析。程序员

分析思路大体以下:markdown

  • 了解总体概况
  • 单维度分析破产的公司
  • 维度交叉分析破产公司

首先导入分析所需的模块app

import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
# 绘图显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
复制代码

pandas读取破产公司文件,并预览数据spa

com_all = pd.read_csv('./data/com.csv')
com_all.head(3)
复制代码

字段比较多,咱们用info来看一下code

com_all.info()
复制代码

共有6272行,也就是6272家公司。共有16列,前10列基本都是非空的,因此下面咱们主要对前10列进行分析。orm

接来下,咱们先对数据作个大体了解,先来看看数据涉及哪些年份,以及每一年的破产公司数量cdn

# 从日期字符串提取年份子串
com_all['death_year'] = com_all['death_data'].apply(lambda x: x[:4])
# 按年份分组计数,画每一年破产公司数量的折线图
com_all[['com_name''death_year']].groupby('death_year').count().plot(xticks=range(20), rot=30, figsize=(106))
复制代码

明显能看到从14年破产公司开始增多,15年陡增,17年达到峰值,因此说17年开始很多自媒体常常说大环境很差也是有缘由的。记得我15年刚毕业找工做的时候就据说大环境已经不太好了,然而我17年跳槽的时候环境变得更差了。这真是好事没遇上,坏事没落下。索引

对总体数据有了大体了解之后,咱们按照单维度拆解,分别来对破产公司进行分析。上面提到14年破产公司开始增长,那么咱们能够认为14年以前破产的公司属于天然破产,而非所谓的“大环境”致使。因此下面咱们只对14年以后的破产公司进行分析。事件

com_part = com_all[com_all['death_year'] >= '2014']
复制代码

下面以公司所在地为例,查看不一样省份破产公司分布ci

# 城市
com_city_gb = com_part[['com_name''com_addr']].groupby('com_addr').count().sort_values(by='com_name', ascending=False)
com_city_gb[com_city_gb['com_name'] > 10].plot(kind='bar', rot=20, title='省份', figsize=(106))
复制代码

能够看到北京、广东、上海等经济发达的地区,破产产的公司更多。这里须要注意一个概念叫幸存者误差,举个例子,你若是从这个数据得出北京、上海等地创业更容易破产的结论,那就是有误差的。由于你只是从幸存下来的破产数据去下结论,而没有考虑整体数据,所以获得的结论是有误差的或者说是不对的。举个例子,图上能够看到北京破产的公司有2000家,浙江破产的公司大概400家,而实际上北京同期成立的创业公司可能有3000家,创业死亡率为 67%,而浙江同期成立的创业公司可能有800家,创业死亡率为 50%,明显在北京创业有更高的存活率。

而后咱们在分行业维度来看看破产公司分布

# 行业
com_cat_gb = com_part[['com_name''cat']].groupby('cat').count().sort_values(by='com_name', ascending=False)
com_cat_gb.plot(kind='bar', rot=20, title='行业', figsize=(106))
复制代码

能够看到电子商务、企业服务、本地生活、金融等行业破产公司数量较多,这里一样存在幸存者误差的问题,行业死亡率是否高,还须要结合行业总体数据来判断。

一样的方式,咱们在分别看看融资阶段和破产缘由两个维度的状况

从破产融资阶段看,破产的公司大部分都没有融资记录或者没有得到融资。若是能拿到全部公司注册和破产的数据,再结合融资阶段画一个不一样融资阶段的漏斗图会很是直观看到各个融资阶段的存活率。

从破产缘由看,破产的缘由主要在于商业模式匮乏、行业竞争以及市场伪需求。

到这里,单维度的数据就分析完了。但单维度分析有个缺点是粒度太粗了,它只能反映总体的状况。若是须要更进一步的细化分析,还须要进行维度交叉。

上面对破产缘由单维度进行分析,咱们知道了大部分公司是由于什么缘由致使的破产,但这反映不出不一样行业的破产缘由。下面我就选行业破产缘由这俩个维度进行更细化的分析。首先的想法是将行业做为x轴,破产缘由做为y轴作个散点图,图上的点越大,说明对应的行业的破产缘由就越突出

# 选top行业和破产缘由
death_reasons = com_death_reason_gb[:15].index.values
cats = com_cat_gb[:10].index.values

com_part2 = com_part[com_part['death_reason'].isin(death_reasons) & com_part['cat'].isin(cats)]

com_part2.plot(kind='scatter', x='cat', y='death_reason', figsize=(106))
复制代码

行业和破产缘由太多了,咱们只选top的进行分析。从图上点的大小大概能看出来不一样行业的破产缘由是不一样的,但也不是太直观,而且不能定量地看。

如何更直观地看不一样行业下不一样破产缘由的区别呢,我想到一种方法,计算不一样行业、不一样破产缘由的TGI指标,而后画一个热力图。

TGI反应的是目标群体在整体里的强势或弱势指数。举例:在全部破产公司中,行业竞争缘由致使破产的比例是14%,而电商行业里,行业竞争缘由致使破产的比例为20%,那么电商行业在行业竞争这个破产缘由的TGI=20% / 15% = 1.42。大于1表明在整体里处于强势,数值越高就越强势。

沿着这个思路,准备所须要的数据

# 行业+破产缘由维度的破产公司数量
reason_cat_df = com_part2.groupby(['cat''death_reason']).count()[['com_name']]

# 行业维度的破产公司数量
cat_df = com_part2.groupby(['cat']).count()[['com_name']]

# 不一样破产缘由的占比
reason_df = (com_part2.groupby(['death_reason']).count()[['com_name']] / cat_df.sum())
复制代码

DataFarme索引变为列,方便关联

reason_cat_df.reset_index(inplace=True)
cat_df.reset_index(inplace=True)
reason_df.reset_index(inplace=True)
reason_df.rename(columns={'com_name''all_reason_r'}, inplace=True)
复制代码

按照不一样维度,将数据关联在一块儿,并计算TGI

# 关联数据
tmp_df = pd.merge(reason_cat_df, cat_df, on='cat',how='left')
df = pd.merge(tmp_df, reason_df, on = 'death_reason', how='left')

# 计算每一个行业破产缘由占比
df['cat_reason_r'] = df['com_name_x'] / df['com_name_y'
# 计算每一个行业破产缘由的TGI
df['cat_reason_tgi'] = df['cat_reason_r'] / df['all_reason_r']

df
复制代码

这样,TGI就计算完成了。为了画热力图,咱们还须要对数据进行重塑,经过透视图行业变成索引,破产缘由变成列

df_tgi = df.pivot_table(index='death_reason', columns='cat', values='cat_reason_tgi')
df_tgi = df_tgi.fillna(0)
df_tgi
复制代码

画热力图

plt.figure(figsize=(158))
sns.heatmap(df_tgi, annot=True, fmt='.2g')
复制代码

能够放大来看,颜色越浅表明越强势。好比:金融行业在政策监管法律法规风险TGI为7.5,说明这两个缘由是致使金融公司破产很强势的缘由。

经过TGI+热力图的方式咱们能够很直观而且定量的看到不一样行业下破产缘由的区别。个人分析就到这里了,有兴趣的朋友再对其余维度进行交叉分析。数据地址和源码已经打包,公众号回复关键字破产公司便可。

欢迎公众号 「渡码」 输出别地儿看不到的干货。