前一陣有個字節跳動的程序員火了,年僅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=(10, 6))
複製代碼
明顯能看到從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=(10, 6))
複製代碼
能夠看到北京、廣東、上海等經濟發達的地區,破產產的公司更多。這裏須要注意一個概念叫倖存者誤差,舉個例子,你若是從這個數據得出北京、上海等地創業更容易破產的結論,那就是有誤差的。由於你只是從倖存下來的破產數據去下結論,而沒有考慮整體數據,所以獲得的結論是有誤差的或者說是不對的。舉個例子,圖上能夠看到北京破產的公司有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=(10, 6))
複製代碼
能夠看到電子商務、企業服務、本地生活、金融等行業破產公司數量較多,這裏一樣存在倖存者誤差的問題,行業死亡率是否高,還須要結合行業總體數據來判斷。
一樣的方式,咱們在分別看看融資階段和破產緣由兩個維度的狀況
從破產融資階段看,破產的公司大部分都沒有融資記錄或者沒有得到融資。若是能拿到全部公司註冊和破產的數據,再結合融資階段畫一個不一樣融資階段的漏斗圖會很是直觀看到各個融資階段的存活率。
從破產緣由看,破產的緣由主要在於商業模式匱乏、行業競爭以及市場僞需求。
到這裏,單維度的數據就分析完了。但單維度分析有個缺點是粒度太粗了,它只能反映總體的狀況。若是須要更進一步的細化分析,還須要進行維度交叉。
上面對破產緣由
單維度進行分析,咱們知道了大部分公司是由於什麼緣由致使的破產,但這反映不出不一樣行業的破產緣由。下面我就選行業
和破產緣由
這倆個維度進行更細化的分析。首先的想法是將行業
做爲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=(10, 6))
複製代碼
行業和破產緣由太多了,咱們只選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=(15, 8))
sns.heatmap(df_tgi, annot=True, fmt='.2g')
複製代碼
能夠放大來看,顏色越淺表明越強勢。好比:金融
行業在政策監管
和法律法規風險
的TGI
爲7.5,說明這兩個緣由是致使金融公司破產很強勢的緣由。
經過TGI
+熱力圖的方式咱們能夠很直觀而且定量的看到不一樣行業下破產緣由的區別。個人分析就到這裏了,有興趣的朋友再對其餘維度進行交叉分析。數據地址和源碼已經打包,公衆號回覆關鍵字破產公司便可。
歡迎公衆號 「渡碼」 輸出別地兒看不到的乾貨。