企业财务数据分析

发布时间 2023-12-25 13:02:50作者: 许智伟

选题背景介绍

选择此选题的原因在于,随着信息时代的到来,企业数据挖掘和分析技术的进步为深入了解公司年报提供了关键工具。公司年报作为企业向利益相关者披露财务和经营状况的主要渠道,其信息量庞大而复杂。传统手工分析已无法满足对大规模数据的处理和深入挖掘的需求。通过运用数据挖掘和分析技术,我们能更全面、准确地评估企业的经营状况、风险和机遇,为投资者、股东和利益相关者提供更明智的决策支持。这一研究的目标是借助先进技术,高效处理大规模数据,发现隐藏的关联和趋势,提升对企业运营情况的理解水平。从社会、经济、技术数据来源等多方面进行综合描述,突显了数据挖掘与分析公司年报的重要性,为社会经济的科技发展提供了实质性的支持和推动。

大数据设计方案及分析思路

准备数据:

获取企业财务年报数据,包括利润表、资产负债表、现金流量表等关键财务指标。

使用工具如Excel、Python的Pandas库、或其他数据处理工具整理和清理数据。

solvency.xlsx:

数据内容:包含年份、资产负债率、股东权益比率、流动比率和速动比率等财务指标。

数据特征分析:关注企业的偿债能力,了解资产结构、流动性状况,以及股东权益情况。

PROFITABILITY.xlsx:

数据内容:包含销售毛利率、营业利润率、总资产利润率、净资产收益率等指标。

数据特征分析:聚焦企业盈利能力,考察销售和利润关系,了解资产和净资产的收益率情况。

main economic indicators.xlsx:

数据内容:包含营业收入、营业利润、净利润、总资产、负债合计、股东权益合计等关键经济指标。

数据特征分析:综合考察企业的经济状况,包括收入、利润、资产负债状况和股东权益。

选择关键指标:

从财务报表中选择关键的财务指标,例如营业收入、净利润、资产总额、负债总额、现金流等。

确定分析方向:

定义您希望分析的方向,例如盈利能力、偿债能力、经营活动能力等。

确定关键的业务问题,以便有针对性地进行可视化分析。

选择可视化工具:

选择适当的可视化工具,如Matplotlib、Seaborn、Plotly(Python库)、Tableau、Power BI等。

根据分析需求选择合适的图表类型,如折线图、柱状图、饼图等。

创建可视化图表:

根据选定的指标和分析方向,创建相应的可视化图表。

可以制作趋势图、对比图、饼图、雷达图等,以展示不同财务指标的变化。

技术难点:

缺失值处理: 部分数据集中存在"--"等表示缺失的符号,需将其转换为NaN,再进行合理的填充或剔除。

数据合并: 确保三个数据集能够按年份正确合并,考虑使用数据库的连接操作或pandas的merge功能。

数据类型转换: 部分列可能需要从字符串或其他类型转换为数值类型进行分析。

数据集来源

中国产业研究院:中商产业研究院-中国产业咨询专家-政府产业智库 (askci.com)

数据清洗的主要步骤:

运行代码如下:

# 读取原始XLSX文件

workbook = openpyxl.load_workbook('main economic indicators.xlsx')

sheet = workbook.active

for i in range(1, 6): # 获取前五行

row_data = []

for j in range(1, sheet.max_column + 1):

cell_value = sheet.cell(row=i, column=j).value

row_data.append(cell_value)

print(row_data)

# 移除第一行

sheet.delete_rows(1)

# 保存清洗后的XLSX文件

workbook.save('main economic indicators.xlsx')

因为原数据比较清晰,所以我在这里删除了第一行体现数据清洗部分

大数据分析实验
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['simHei']
# 读取Excel文件
df = pd.read_excel("main economic indicators.xlsx")

# 提取所需的列数据
years = df['类别\\年份'].tolist()
revenue = df['营业收入'].tolist()
profit = df['净利润'].tolist()
assets = df['资产总计'].tolist()

# 创建图表
fig, ax1 = plt.subplots(figsize=(12, 12))

# 绘制营业收入的线形图
ax1.plot(years, revenue, label='营业收入', marker='o', color='tab:blue')
ax1.set_xlabel('年份')
ax1.set_ylabel('营业收入(亿元)', color='tab:blue')
ax1.tick_params(axis='y', labelcolor='tab:blue')

# 创建第二个y轴,用于绘制净利润和资产总计的线形图
ax2 = ax1.twinx()
ax2.plot(years, profit, label='净利润', marker='s', color='tab:green')
ax2.plot(years, assets, label='资产总计', marker='^', color='tab:orange')
ax2.set_ylabel('净利润和资产总计(亿元)', color='black')
ax2.tick_params(axis='y', labelcolor='black')

# 添加图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
lines = lines1 + lines2
labels = labels1 + labels2
ax1.legend(lines, labels, loc='upper left')

# 设置图表标题
plt.title('企业盈利能力分析')

# 旋转x轴刻度标签,以便更好地显示年份
plt.xticks(rotation=45)

# 显示图表
plt.tight_layout()
plt.show()
plt.tight_layout()
plt.savefig("企业盈利能力分析.png")

2.企业偿债能力分析

  1. import pandas as pd
    import matplotlib.pyplot as plt

    # 读取Excel文件
    df = pd.read_excel("solvency.xlsx")

    # 提取所需的列数据
    years = df['年份'].tolist()
    debt_to_equity_ratio = df['资产负债率'].tolist()
    equity_ratio = df['股东权益比率'].tolist()
    current_ratio = df['流动比率'].tolist()
    quick_ratio = df['速动比率'].tolist()

    # 创建图表
    plt.figure(figsize=(12, 15))

    # 绘制资产负债率、股东权益比率、流动比率和速动比率的线形图
    plt.plot(years, debt_to_equity_ratio, label='资产负债率', marker='o')
    plt.plot(years, equity_ratio, label='股东权益比率', marker='o')
    plt.plot(years, current_ratio, label='流动比率', marker='o')
    plt.plot(years, quick_ratio, label='速动比率', marker='o')

    # 添加图例
    plt.legend()

    # 设置图表标题和标签
    plt.title('企业偿债能力分析')
    plt.xlabel('年份')
    plt.ylabel('百分比(%)')

    # 旋转x轴刻度标签,以便更好地显示年份
    plt.xticks(rotation=45)

    # 显示图表
    plt.tight_layout()
    plt.show()
    plt.tight_layout()
    plt.savefig("企业偿债能力分析.png")
  2. 3.企业营运能力分析
  3. import pandas as pd
    import matplotlib.pyplot as plt

    # 读取Excel文件
    df = pd.read_excel("PROFITABILITY.xlsx")

    # 提取所需的列数据
    years = df['类别\\年份'].tolist()
    inventory_turnover = df['存货周转率'].tolist()
    receivables_turnover = df['应收账款周转率'].tolist()
    total_asset_turnover = df['总资产周转率'].tolist()

    # 创建图表
    plt.figure(figsize=(12, 15))

    # 绘制存货周转率、应收账款周转率和总资产周转率的线形图
    plt.plot(years, inventory_turnover, label='存货周转率', marker='o')
    plt.plot(years, receivables_turnover, label='应收账款周转率', marker='o')
    plt.plot(years, total_asset_turnover, label='总资产周转率', marker='o')

    # 添加图例
    plt.legend()

    # 设置图表标题和标签
    plt.title('公司营运能力分析')
    plt.xlabel('年份')
    plt.ylabel('次数')

    # 旋转x轴刻度标签,以便更好地显示年份
    plt.xticks(rotation=45)

    # 显示图表
    plt.tight_layout()
    plt.show()
    plt.tight_layout()
    plt.savefig("公司营运能力分析.png")

4.企业发展能力分析

  1. # 提取发展能力相关的数据
    gross_profit_margin = df['销售毛利率'].tolist()
    operating_profit_margin = df['营业利润率'].tolist()
    total_asset_profit_margin = df['总资产利润率'].tolist()
    return_on_equity = df['净资产收益率'].tolist()

    # 创建图表
    plt.figure(figsize=(12, 18))

    # 绘制销售毛利率、营业利润率、总资产利润率和净资产收益率的线形图
    plt.plot(years, gross_profit_margin, label='销售毛利率', marker='o')
    plt.plot(years, operating_profit_margin, label='营业利润率', marker='o')
    plt.plot(years, total_asset_profit_margin, label='总资产利润率', marker='o')
    plt.plot(years, return_on_equity, label='净资产收益率', marker='o')

    # 添加图例
    plt.legend()

    # 设置图表标题和标签
    plt.title('公司发展能力分析')
    plt.xlabel('年份')
    plt.ylabel('百分比')

    # 旋转x轴刻度标签,以便更好地显示年份
    plt.xticks(rotation=45)

    # 显示图表
    plt.tight_layout()
    plt.show()
    plt.tight_layout()
    plt.savefig("公司发展能力分析.png")

4.1附完整程序源代码(以及输出结果)

  1. #平安银行股份有限公司  
  2. import pandas as pd  
  3. import matplotlib.pyplot as plt  
  4. from pylab import mpl  
  5. mpl.rcParams['font.sans-serif'] = ['simHei']  
  6. # 读取原始XLSX文件  
  7. workbook = openpyxl.load_workbook('main economic indicators.xlsx')  
  8. sheet = workbook.active  
  9. for i in range(1, 6):  # 获取前五行  
  10.     row_data = []  
  11.     for j in range(1, sheet.max_column + 1):  
  12.         cell_value = sheet.cell(row=i, column=j).value  
  13.         row_data.append(cell_value)  
  14.     print(row_data)  
  15. # 移除第一行  
  16. sheet.delete_rows(1)  
  17.   
  18. # 保存清洗后的XLSX文件  
  19. workbook.save('main economic indicators.xlsx')  
  20. # 读取Excel文件  
  21. df = pd.read_excel("main economic indicators.xlsx")  
  22.   
  23. # 提取所需的列数据  
  24. years = df['类别\\年份'].tolist()  
  25. revenue = df['营业收入'].tolist()  
  26. profit = df['净利润'].tolist()  
  27. assets = df['资产总计'].tolist()  
  28.   
  29. # 创建图表  
  30. fig, ax1 = plt.subplots(figsize=(12, 12))  
  31.   
  32. # 绘制营业收入的线形图  
  33. ax1.plot(years, revenue, label='营业收入', marker='o', color='tab:blue')  
  34. ax1.set_xlabel('年份')  
  35. ax1.set_ylabel('营业收入(亿元)', color='tab:blue')  
  36. ax1.tick_params(axis='y', labelcolor='tab:blue')  
  37.   
  38. # 创建第二个y轴,用于绘制净利润和资产总计的线形图  
  39. ax2 = ax1.twinx()  
  40. ax2.plot(years, profit, label='净利润', marker='s', color='tab:green')  
  41. ax2.plot(years, assets, label='资产总计', marker='^', color='tab:orange')  
  42. ax2.set_ylabel('净利润和资产总计(亿元)', color='black')  
  43. ax2.tick_params(axis='y', labelcolor='black')  
  44.   
  45. # 添加图例  
  46. lines1, labels1 = ax1.get_legend_handles_labels()  
  47. lines2, labels2 = ax2.get_legend_handles_labels()  
  48. lines = lines1 + lines2  
  49. labels = labels1 + labels2  
  50. ax1.legend(lines, labels, loc='upper left')  
  51.   
  52. # 设置图表标题  
  53. plt.title('企业盈利能力分析')  
  54.   
  55. # 旋转x轴刻度标签,以便更好地显示年份  
  56. plt.xticks(rotation=45)  
  57.   
  58. # 显示图表  
  59. plt.tight_layout()  
  60. plt.show()  
  61.   
  62.   
  63.   
  64. import pandas as pd  
  65. import matplotlib.pyplot as plt  
  66.   
  67. # 读取Excel文件  
  68. df = pd.read_excel("solvency.xlsx")  
  69.   
  70. # 提取所需的列数据  
  71. years = df['年份'].tolist()  
  72. debt_to_equity_ratio = df['资产负债率'].tolist()  
  73. equity_ratio = df['股东权益比率'].tolist()  
  74. current_ratio = df['流动比率'].tolist()  
  75. quick_ratio = df['速动比率'].tolist()  
  76.   
  77. # 创建图表  
  78. plt.figure(figsize=(12, 15))  
  79.   
  80. # 绘制资产负债率、股东权益比率、流动比率和速动比率的线形图  
  81. plt.plot(years, debt_to_equity_ratio, label='资产负债率', marker='o')  
  82. plt.plot(years, equity_ratio, label='股东权益比率', marker='o')  
  83. plt.plot(years, current_ratio, label='流动比率', marker='o')  
  84. plt.plot(years, quick_ratio, label='速动比率', marker='o')  
  85.   
  86. # 添加图例  
  87. plt.legend()  
  88.   
  89. # 设置图表标题和标签  
  90. plt.title('企业偿债能力分析')  
  91. plt.xlabel('年份')  
  92. plt.ylabel('百分比(%)')  
  93.   
  94. # 旋转x轴刻度标签,以便更好地显示年份  
  95. plt.xticks(rotation=45)  
  96.   
  97. # 显示图表  
  98. plt.tight_layout()  
  99. plt.show()  
  100. plt.tight_layout()  
  101. plt.savefig("企业偿债能力分析.png")  
  102.   
  103.   
  104.   
  105. import pandas as pd  
  106. import matplotlib.pyplot as plt  
  107.   
  108. # 读取Excel文件  
  109. df = pd.read_excel("PROFITABILITY.xlsx")  
  110.   
  111. # 提取所需的列数据  
  112. years = df['类别\\年份'].tolist()  
  113. inventory_turnover = df['存货周转率'].tolist()  
  114. receivables_turnover = df['应收账款周转率'].tolist()  
  115. total_asset_turnover = df['总资产周转率'].tolist()  
  116.   
  117. # 创建图表  
  118. plt.figure(figsize=(12, 15))  
  119.   
  120. # 绘制存货周转率、应收账款周转率和总资产周转率的线形图  
  121. plt.plot(years, inventory_turnover, label='存货周转率', marker='o')  
  122. plt.plot(years, receivables_turnover, label='应收账款周转率', marker='o')  
  123. plt.plot(years, total_asset_turnover, label='总资产周转率', marker='o')  
  124.   
  125. # 添加图例  
  126. plt.legend()  
  127.   
  128. # 设置图表标题和标签  
  129. plt.title('公司营运能力分析')  
  130. plt.xlabel('年份')  
  131. plt.ylabel('次数')  
  132.   
  133. # 旋转x轴刻度标签,以便更好地显示年份  
  134. plt.xticks(rotation=45)  
  135.   
  136. # 显示图表  
  137. plt.tight_layout()  
  138. plt.show()  
  139. plt.tight_layout()  
  140. plt.savefig("公司营运能力分析.png")  
  141.   
  142.   
  143.   
  144. # 提取发展能力相关的数据  
  145. gross_profit_margin = df['销售毛利率'].tolist()  
  146. operating_profit_margin = df['营业利润率'].tolist()  
  147. total_asset_profit_margin = df['总资产利润率'].tolist()  
  148. return_on_equity = df['净资产收益率'].tolist()  
  149.   
  150. # 创建图表  
  151. plt.figure(figsize=(12, 18))  
  152.   
  153. # 绘制销售毛利率、营业利润率、总资产利润率和净资产收益率的线形图  
  154. plt.plot(years, gross_profit_margin, label='销售毛利率', marker='o')  
  155. plt.plot(years, operating_profit_margin, label='营业利润率', marker='o')  
  156. plt.plot(years, total_asset_profit_margin, label='总资产利润率', marker='o')  
  157. plt.plot(years, return_on_equity, label='净资产收益率', marker='o')  
  158.   
  159. # 添加图例  
  160. plt.legend()  
  161.   
  162. # 设置图表标题和标签  
  163. plt.title('公司发展能力分析')  
  164. plt.xlabel('年份')  
  165. plt.ylabel('百分比')  
  166.   
  167. # 旋转x轴刻度标签,以便更好地显示年份  
  168. plt.xticks(rotation=45)  
  169.   
  170. # 显示图表  
  171. plt.tight_layout()  
  172. plt.show()  
  173. plt.tight_layout()  
  174. plt.savefig("公司发展能力分析.png")  
  175.   
  176.   
  177. import matplotlib.pyplot as plt  
  178.   
  179. # 模拟数据  
  180. labels = ['产品A', '产品B', '产品C', '产品D']  
  181. sales = [30, 25, 20, 25]  # 假设销售数量  
  182.   
  183. # 创建饼状图  
  184. fig, ax = plt.subplots()  
  185. ax.pie(sales, labels=labels, autopct='%1.1f%%', startangle=90)  
  186.   
  187. # 设置图表标题  
  188. plt.title('产品销售比例')  
  189.   
  190. # 显示图表  
  191. plt.show()  
  192.   
  193.   
  194.   
  195. import pandas as pd  
  196. import matplotlib.pyplot as plt  
  197.   
  198. # 读取Excel文件  
  199. df = pd.read_excel("main economic indicators.xlsx")  
  200.   
  201. # 提取所需的列数据  
  202. years = df['类别\\年份'].tolist()  
  203. total_assets = df['资产总计'].tolist()  
  204.   
  205. # 创建折线图  
  206. plt.plot(years, total_assets, marker='o')  
  207.   
  208. # 设置图表标题和标签  
  209. plt.title('每年的总资产增长情况')  
  210. plt.xlabel('年份')  
  211. plt.ylabel('资产总计(亿元)')  
  212.   
  213. # 旋转x轴刻度标签,以便更好地显示年份  
  214. plt.xticks(rotation=45)  
  215.   
  216. # 显示图表  
  217. plt.tight_layout()  
  218. plt.show()  
  219.   
  220.   
  221.   
  222. import matplotlib.pyplot as plt  
  223.   
  224. # 模拟数据  
  225. labels = ['2019', '2020', '2021', '2022', '2023']  
  226. revenue_composition = [30, 25, 20, 15, 10]  # 假设营业收入构成比例  
  227. colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue', 'lightgreen']  # 自定义颜色  
  228. explode = (0.1, 0, 0, 0, 0)  # 突出显示某一部分数据  
  229.   
  230. # 创建饼状图  
  231. fig, ax = plt.subplots()  
  232. ax.pie(revenue_composition, labels=labels, explode=explode, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)  
  233.   
  234. # 设置图表标题  
  235. plt.title('营业收入构成比例')  
  236.   
  237. # 显示图表  
  238. plt.show()  
  239.   
  240.   
  241. import matplotlib.pyplot as plt  
  242.   
  243. # 模拟数据  
  244. departments = ['销售部', '市场部', '财务部', '人力资源部']  
  245. sales = [800, 650, 500, 400]  # 假设每个部门的销售额  
  246.   
  247. # 创建柱形图  
  248. fig, ax = plt.subplots()  
  249. ax.bar(departments, sales)  
  250.   
  251. # 设置图表标题和标签  
  252. plt.title('不同部门的销售额')  
  253. plt.xlabel('部门')  
  254. plt.ylabel('销售额(万元)')  
  255.   
  256. # 显示图表  
  257. plt.show()  
  258.   
  259.   
  260.   
  261. import matplotlib.pyplot as plt  
  262. import numpy as np  
  263.   
  264. # 模拟数据  
  265. regions = ['东区', '南区', '西区', '北区']  
  266. sales_2019 = [800, 600, 500, 400]  # 假设每个区域2019年的销售额  
  267. sales_2020 = [1000, 700, 600, 450]  # 假设每个区域2020年的销售额  
  268.   
  269. # 创建堆叠柱形图  
  270. x = np.arange(len(regions))  
  271. width = 0.35  
  272. fig, ax = plt.subplots()  
  273. ax.bar(x - width/2, sales_2019, width, label='2019')  
  274. ax.bar(x + width/2, sales_2020, width, label='2020')  
  275.   
  276. # 设置图表标题和标签  
  277. plt.title('不同区域的销售额')  
  278. plt.xlabel('区域')  
  279. plt.ylabel('销售额(万元)')  
  280. plt.xticks(x, regions)  
  281. plt.legend()  
  282.   
  283. # 显示图表  
  284. plt.show()  
  285.   
  286.   
  287. import matplotlib.pyplot as plt  
  288.   
  289. # 模拟数据  
  290. months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']  
  291. sales = [500, 600, 700, 550, 800, 900]  # 假设每个月的销售额  
  292.   
  293. # 创建柱形图  
  294. fig, ax = plt.subplots()  
  295. ax.bar(months, sales)  
  296.   
  297. # 设置图表标题和标签  
  298. plt.title('不同月份的销售额')  
  299. plt.xlabel('月份')  
  300. plt.ylabel('销售额(万元)')  
  301.   
  302. # 显示图表  

5.总结

企业盈利能力:

销售毛利率和营业利润率在大部分年份均未提供,但在2005年及之后的部分年份中可以看到,这两项指标保持在较高的水平,表明银行能够维持较高的盈利水平。

总资产利润率和净资产收益率的数据显示,银行的利润总额和净利润相对于资产和股东权益的比例在波动,但整体呈现增长趋势,说明银行的盈利能力逐年提高。

偿债能力:

资产负债率在近年来有所下降,说明银行的负债水平在减少,偿债能力在增强。

流动比率和速动比率在大部分年份未提供,但在可用的数据中显示银行具备良好的短期偿债能力。

营运能力:

存货周转率和应收账款周转率数据未提供,无法分析。

总资产周转率保持在较低的水平,可能表明银行资产的使用效率有待提高。

发展能力:

从股东权益比率的逐年提升可以看出,银行的所有者权益相对于总资产的比例在上升,反映了公司的内在增值能力。

资产和股东权益的增长速度显示出银行的规模在不断扩大,发展势头良好。

达到的目标:

目标一:全面了解企业经济状况

达到:通过不同维度的数据分析,得到了对企业经济状况的全面了解。

目标二:发现潜在问题与机会

部分达到:挖掘了财务和盈利能力方面的潜在问题,但需要更深入的行业研究来确定机会。

目标三:学生技能提升

达到:我通过实际操作,提升了数据清洗、合并、分析等方面的技能。

完成此设计过程中的收获与建议:

收获:

实际应用经验: 通过处理真实数据集,加深了对数据分析和挖掘实际应用的理解。

团队协作:学会向同学寻求帮助,尤其是在数据清洗和分析过程中,我更好地理解了团队协作的重要性。

建议:

更多实战案例: 多去查找实际业务案例,让自己面对更多不同类型的数据。

深入行业研究: 强调在数据背后的业务背景,鼓励自己应该进行更深入的行业研究,以更好地解释数据。

技术细节加强: 在课程中加强数据处理的技术细节,如更复杂的数据清洗、特征工程等技术。