數據集及源碼已打包連結:https://pan.baidu.com/s/1gHvqxJCJC5W0nLvCO0QXtQ 提取碼:8suc
前一陣有個字節跳動的程式設計師火了,年僅28歲實現了財務自由,宣布提前退休。最直接的原因是選擇了一家發展前景很好的創業公司。當然平時我們經常能聽到,某某人加入創業公司,xx年後公司上市,身價暴漲,財務自由。但這都是小概率事件,大部分人往往要麼等不到公司上市就離職,要麼公司還沒上市就破產。這兩天找到一份近幾年破產的IT公司名單,共6000家,下面就對這份數據做個簡單分析。
分析思路大致如下:
首先導入分析所需的模塊
import pandas as pdimport seaborn as snsimport matplotlib.pylab as pltimport numpy as np39;font.sans-serif&39;SimHei&39;axes.unicode_minus&39;./data/com.csv& 從日期字符串提取年份子串com_all[&39;] = com_all[&39;].apply(lambda x: x[:4])39;com_name&39;death_year&39;death_year&39;death_year&39;2014& 城市com_city_gb = com_part[[&39;, &39;]].groupby(&39;).count().sort_values(by=&39;, ascending=False)com_city_gb[com_city_gb[&39;] > 10].plot(kind=&39;, rot=20, title=&39;, figsize=(10, 6))
可以看到北京、廣東、上海等經濟發達的地區,破產產的公司更多。這裡需要注意一個概念叫倖存者偏差,舉個例子,你如果從這個數據得出北京、上海等地創業更容易破產的結論,那就是有偏差的。因為你只是從倖存下來的破產數據去下結論,而沒有考慮總體數據,因此得到的結論是有偏差的或者說是不對的。舉個例子,圖上可以看到北京破產的公司有2000家,浙江破產的公司大概400家,而實際上北京同期成立的創業公司可能有3000家,創業死亡率為 67%,而浙江同期成立的創業公司可能有800家,創業死亡率為 50%,明顯在北京創業有更高的存活率。
然後我們在分行業維度來看看破產公司分布
39;com_name&39;cat&39;cat&39;com_name&39;bar&39;行業& 選top行業和破產原因death_reasons = com_death_reason_gb[:15].index.valuescats = com_cat_gb[:10].index.valuescom_part2 = com_part[com_part[&39;].isin(death_reasons) & com_part[&39;].isin(cats)]com_part2.plot(kind=&39;, x=&39;, y=&39;, figsize=(10, 6))
行業和破產原因太多了,我們只選top的進行分析。從圖上點的大小大概能看出來不同行業的破產原因是不同的,但也不是太直觀,並且不能定量地看。
如何更直觀地看不同行業下不同破產原因的區別呢,我想到一種方法,計算不同行業、不同破產原因的TGI指標,然後畫一個熱力圖。
TGI反應的是目標群體在總體裡的強勢或弱勢指數。舉例:在所有破產公司中,行業競爭原因導致破產的比例是14%,而電商行業裡,行業競爭原因導致破產的比例為20%,那麼電商行業在行業競爭這個破產原因的TGI=20% / 15% = 1.42。大於1代表在總體裡處於強勢,數值越高就越強勢。
沿著這個思路,準備所需要的數據
39;cat&39;death_reason&39;com_name& 行業維度的破產公司數量cat_df = com_part2.groupby([&39;]).count()[[&39;]]39;death_reason&39;com_name&39;com_name&39;all_reason_r& 關聯數據tmp_df = pd.merge(reason_cat_df, cat_df, on=&39;,how=&39;)df = pd.merge(tmp_df, reason_df, on = &39;, how=&39;)39;cat_reason_r&39;com_name_x&39;com_name_y& 計算每個行業破產原因的TGIdf[&39;] = df[&39;] / df[&39;]df
這樣,TGI就計算完成了。為了畫熱力圖,我們還需要對數據進行重塑,通過透視圖把行業變成索引,破產原因變成列
df_tgi = df.pivot_table(index=&39;, columns=&39;, values=&39;)df_tgi = df_tgi.fillna(0)df_tgi
畫熱力圖
plt.figure(figsize=(15, 8))sns.heatmap(df_tgi, annot=True, fmt=&39;)
可以放大來看,顏色越淺代表越強勢。比如:金融行業在政策監管和法律法規風險的TGI為7.5,說明這兩個原因是導致金融公司破產明顯比整體更強勢。
通過TGI+熱力圖的方式我們可以很直觀並且定量的看到不同行業下破產原因的區別。有興趣的朋友再對其他維度進行交叉分析。數據地址和源碼已經打包,自行下載即可。
感謝您的支持。喜歡的點讚轉發關注,感謝您一直以來的陪伴!