商业数据分析比赛实战,内附项目代码

2022-04-03 09:48:48 浏览数 (1)

如果你对商业数据分析感兴趣、想要积累更多项目经验,那么就来看看下面这项目吧。

数据竞赛平台和鲸社区最近正在举办一场数据分析大赛,不仅带来了22w奖金和30w创业基金支持,更是提供了统一的在线比赛环境,引入投中网的独家创业投资类数据,囊括了江苏地区科技金融,生物医药、芯片半导体制造行业,吸引了不少人的关注。

为了让大家更加熟悉商业数据分析流程,赛事平台和鲸社区还非常贴心提供了多场数据分析专题分享,下面就为大家打来第一场直播培训中,主讲老师黄凯根据大家反馈提供的培训Notebook,覆盖数据预处理、分组聚合计算、可视化的全流程,内容由浅入深。既适合数据分析入门的爱好者,也能给老手们提供不一样的分析思路。

(贴心提示:项目代码可以直接在平台上Fork哦~)

数据分析项目开发步骤简介

  • 数据分析项目第一步骤首先要确定分析目标,如果不能明确分析目标,那么就是数据挖掘项目。这也是数据分析项目与数据挖掘项目之间的主要区别;
  • 接下来进行收集,整理和清洗数据工作。本次竞赛已经提供质量非常高的数据,因此无需再进行收集工作。我们只要简单的进行一下整理和清洗即可;
  • 再针对我们的分析目标,进行分组聚合计算,得出有效的结论;
  • 最后对我们得出的结论进行可视化展示。

下图展示了本课程中使用Pandas、 Seaborn等常用工具库绘制的部分图表:

现在教程开始啦~

创新活力数据分析项目实战开发步骤

  • 数据集简介

数据预处理:清洗、过滤

数据分析:公司

数据分析:人员

数据分析:投资

最值得投资的公司:公司估值 vs 注册资金

投资活力指数计算

图表:投资活力指数

  • 数据预处理
代码语言:javascript复制
# 先让我们建立一下开发环境。
# 导入常用库
import numpy as np
import pandas as pd
import matplotlib. pyplot as plt
import seaborn as sns
import math
from datetime import datetime
# 忽略警告信息
import warnings
warnings. filterwarnings("ignore")
print(" 建立开发环境"  str(datetime. now() ) )
代码语言:javascript复制
# 查看以下数据及所在路径中的文件名称。
! ls /home/kesci/input/inv_data6040
代码语言:javascript复制
# 读取全部 CSV 数据
df_gs = pd. read_csv(' /home/kesci/input/inv_data6040/01_工商信息. csv' )
df_ry = pd. read_csv(' /home/kesci/input/inv_data6040/02_主要人员. csv' )
df_tz = pd. read_csv(' /home/kesci/input/inv_data6040/03_投融资事件. csv' )
df_td = pd. read_csv(' /home/kesci/input/inv_data6040/核心团队. csv' )
代码语言:javascript复制
# 了解公司基本信息
df_gs. info()
In [20] :
# 查看数据
df_gs. head(1)
  • 绘制图表:产业图谱条形图
代码语言:javascript复制
# 绘制条形图查看产业图谱
df_gs[' 产业图谱' ] . value_counts() . plot(kind=' barh' )
# barh 横向条形图, 方便查看种类的名称
# 如果我们使用 bar 绘制这个图表, 中文字符会比较难以查看
  • 按时间查看企业总数增长趋势
代码语言:javascript复制
# 按时间查看企业总数增长趋势
df_gs. groupby(df_gs. index. year) . 企业名称. count() . cumsum() . plot()

Out[32] :

<matplotlib. axes. _subplots. AxesSubplot at 0x7fbfe0bf07f0>

本项目第一次使用分组聚合计算, 在这里详细讲解一下

分组: groupby 按年度分组

聚合: count 企业名称计数

请思考为什么用企业名称而不是用其他列来计数?

回答:因为其他列包括空值,不唯一

计算: cumsum 增长求和

拓展:去 pandas 官网查看 cumsum 方法的文档,并查看其他相关方法。

  • 按产业图谱 时间 查看新公司注册趋势
代码语言:javascript复制
# 按 产业图谱   时间 查看新公司注册趋势
df_gs. groupby([ ' 产业图谱' , df_gs. index. year] ) . 企业名称. count() . unstack() . T. plot()
# groupby 可以对多列数据进行分组
# unstack 对多项索引转换为单例索引
# T 将x轴和y轴转置, 是 transform 的简写方法
# 技巧:unstack(). T 是一对难兄难弟,常常在一起使用
绘制图表, 展示注册资本随时间变化规律

Out[33] :

<matplotlib. axes. _subplots. AxesSubplot at 0x7fbfe0de3e48>

  • 按产业图谱分组绘制 注册资本对数值
代码语言:javascript复制
# 按产业图谱分组绘制 注册资本对数值
# 首先将注册资本取对数后的结果放在数据集当中。
df_gs[' 注册资本log' ] = df_gs. 注册资本. apply(lambda x : np. log10(x) )
# 使⽤seaborn 的 FacetGrid 按照产业图谱分组绘制注册资本对数值直⽅图
g = sns. FacetGrid(df_gs, col=' 产业图谱' )
g. map(sns. distplot, ' 注册资本log' )
# seaborn 的直方图默认也绘制了密度图

Out[27] :

<seaborn. axisgrid. FacetGrid at 0x7f15523073c8>

代码语言:javascript复制
# 融资情况对比:按产业图谱分组后计算投资次数
# fillna 填充空值
# sort_values 对数据进⾏排序
df_gs. groupby([' 产业图谱' , ' 当前轮次' ] ) . 企业名称
. count() . unstack() . T. fillna(value=0) . sort_values(by=' ⽣物医药' ) . plot(kind=' barh' , figsize=(12, 6))

Out[32] :

<matplotlib. axes. _subplots. AxesSubplot at 0x7f154ff5c588>

  • 绘制中文词云
代码语言:javascript复制
# 绘制中文词云
# 导入并初始化词云
from wordcloud import WordCloud
w = WordCloud(
font_path=' /home/kesci/input/hanserif6546/SourceHanSerifK-Light. otf' , # 字体文件
background_color=' white' # 背景色)
# 从词频绘制词云图片
w. generate_from_frequencies(pd. Series( words_clean) . value_counts() [1: 100] )
# 绘制词云图片
plt. figure(figsize=[16, 8] )
plt. imshow(w, interpolation=' bilinear' ) # 平滑参数

Out[45] :

<matplotlib. image. AxesImage at 0x7f1549e112e8>

  • 绘制投资关系图
代码语言:javascript复制
# 绘制高管、投资关系图
import networkx as nx
G = nx. Graph()
# 公司、高管
G. add_node(name)
G. add_edge(name, ' 高管' )
for r in ry. values:
G. add_edge(' 高管' , r[0]  " " r[2] )
# 投资数据
G. add_edge(name, ' 投融资' )
for i, r in tz. iterrows() :
G. add_edge(' 投融资' , r[' 投资⽅' ]  ' '  str( r[' 总交易⾦额 (万元) ' ] ) )
# 绘制
nx. draw(G, with_labels=True)
plt. show()

原文过长,这里进行了缩略。如果想要看到完整的项目代码与数据,快快点击“阅读原文”吧!报名参赛后,直接进入和鲸K-Lab就可以找到这个项目。项目代码在课程里,Fork一下就能跑~

0 人点赞