python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python用Akshare与Streamlit实现股票分析

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

作者:Nan_An_29

入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存到本地Csv文件,对该公司进行财务分析,如提取近五年,营业收入,净利润数据,并且算出同比增长,通过Pandas处理、Matplotlib可视化及Streamlit部署,实现财务数据分析

一、前言

入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存到本地Csv文件,对该公司进行财务分析,如提取近五年,营业收入,净利润数据,并且算出同比增长,以上的分析以图表显示,用户可以很方便的看出发展趋势,通过streamlit 以web形式展示。

二、核心知识点梳理

1、Akshare数据获取

2、Pandas数据处理

3、Matplotlib可视化

4、Streamlit Web应用

5、财务分析基础

二、代码逐段解析

1、导入依赖库

import akshare as ak
import pandas as pd
import streamlit as st
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

作用

2、数据获取与保存

# 获取贵州茅台近十年财务报表
balance_sheet = ak.stock_financial_report_sina(stock="sh600519", symbol="资产负债表").head(40)
income_statement = ak.stock_financial_report_sina(stock="sh600519", symbol="利润表").head(40)
cash_flow = ak.stock_financial_report_sina(stock="sh600519", symbol="现金流量表").head(40)

# 保存为CSV文件
balance_sheet.to_csv('C:/Users/Hp/Desktop/Test1/balance_sheet.csv', index=False)#要填你要保存的地址
income_statement.to_csv('C:/Users/Hp/Desktop/Test1/income_statement.csv', index=False)
cash_flow.to_csv('C:/Users/Hp/Desktop/Test1/cash_flow.csv', index=False)

关键参数

注意事项

3、数据处理与指标计算

# 读取数据并设置日期索引
bs_data = pd.read_csv('C:/Users/Hp/Desktop/Test1/balance_sheet.csv', parse_dates=['报告日'], index_col='报告日').head(20)
is_data = pd.read_csv('C:/Users/Hp/Desktop/Test1/income_statement.csv', parse_dates=['报告日'], index_col='报告日').head(20)
cf_data = pd.read_csv('C:/Users/Hp/Desktop/Test1/cash_flow.csv', parse_dates=['报告日'], index_col='报告日').head(20)

# 按日期排序
bs_data = bs_data.sort_values(by='报告日')
is_data = is_data.sort_values(by='报告日')
cf_data = cf_data.sort_values(by='报告日')

# 计算净利润
is_data['总净利润'] = is_data['营业总收入'] - is_data['营业总成本']

# 计算同比增长率
is_data['营收同比增长'] = (is_data['营业收入'] - is_data['营业收入'].shift(4)) / is_data['营业收入'].shift(4) * 100
is_data['总净利润同比增长'] = (is_data['总净利润'] - is_data['总净利润'].shift(4)) / is_data['总净利润'].shift(4) * 100

# 单位转换为亿元
is_data['营业收入_亿元'] = is_data['营业收入'] / 1e8
is_data['总净利润_亿元'] = is_data['总净利润'] / 1e8

关键操作

4、Streamlit可视化展示

# 创建Web界面
st.title('贵州茅台(600519)财务分析仪表板')

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 分标签页展示
tab1, tab2 = st.tabs(["财务指标趋势", "同比增长分析"])

with tab1:
    # 营业收入与净利润趋势图
    fig1, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10))
    ax1.plot(is_data.index, is_data['营业收入_亿元'], label='营业收入', color='#1f77b4', marker='o')
    ax2.plot(is_data.index, is_data['总净利润_亿元'], label='总净利润', color='#2ca02c', marker='s')
    # 设置图表格式(略)
    st.pyplot(fig1)

with tab2:
    # 同比增长率分析
    growth_data = is_data[['营收同比增长', '总净利润同比增长']].dropna()
    fig2, ax = plt.subplots(figsize=(12, 6))
    ax.plot(growth_data.index, growth_data['营收同比增长'], label='营收同比增长率', color='#d62728', marker='^')
    ax.plot(growth_data.index, growth_data['总净利润同比增长'], label='净利润同比增长率', color='#ff7f0e', marker='d')
    # 设置图表格式(略)
    st.pyplot(fig2)

# 展示核心数据表格
st.subheader("核心财务数据")
col1, col2 = st.columns(2)
with col1:
    st.dataframe(is_data[['营业收入_亿元', '总净利润_亿元']].tail(1).style.format("{:.2f}"))
with col2:
    st.dataframe(growth_data[['营收同比增长', '总净利润同比增长']].tail(1).style.format("{:.1f}%"))

功能亮点

三、运行与效果

1、安装依赖:

pip install akshare pandas streamlit matplotlib

2、启动应用:

streamlit run C:\Users\Hp\Desktop\py\Test1.py

3、效果展示:

四、总结

到此这篇关于python使用Akshare与Streamlit实现股票估值分析教程(图文代码)的文章就介绍到这了,更多相关python用Akshare与Streamlit实现股票分析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文