开发者

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

开发者 https://www.devze.com 2025-08-03 09:26 出处:网络 作者: Nan_An_29
目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotlib可视化4、Streamlit Web应用5、财务分析基础二、代码逐段解析1、导入依赖库2、数据获取与保存3、数据处理与指标计算4、Streamlit可
目录
  • 一、前言
  • 二、核心知识点梳理
    • 1、Akshare数据获取
    • 2、Pandas数据处理
    • 3、Matplotlib可视化
    • 4、Streamlit Web应用
    • 5、财务分析基础
  • 二、代码逐段解析
    • 1、导入依赖库
    • 2、数据获取与保存
    • 3、数据处理与指标计算
    • 4、Streamlit可视化展示
  • 三、运行与效果
    • 1、安装依赖:
    • 2、启动应用:
    • 3、效果展示:
  • 四、总结

    一、前言

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

    二、核心知识点梳理

    1、Akshare数据获取

    • 用于从新浪财经接口获取上市公司财务报表(资产负债表、利润表、现金流量表)。

    • 关键函数:ak.stock_financial_report_sina(),需指定股票代码和报表类型。

    2、Pandas数据处理

    • 数据清洗:解析日期、设置索引、排序。

    • 计算衍生指标:净利润、同比增长率。

    • 单位转换:将数值单位从“元”转换为“亿元”。

    3、Matplotlib可视化

    • 绘制双轴趋势图(营业收入与净利润)。

    • 同比增长率折线图,标注数据标签。

    • 图表格式优化:日期格式化、网格线、中文字体支持。

    4、Streamlit Web应用

    • 快速构建交互式仪表盘,支持多标签页布局。

    • 数据动态展示:表格、图表、指标卡片的实时渲染。

    5、财务分析基础

    • 净利润 = 营业总收入 - 营业总成本。

    • 同比增长率 =(当期值 - 去年同期值)/ 去年同期值 × 100%。

    二、代码逐段解析

    1、导入依赖库

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

    作用

    • akshare:获取股票财务数据。

    • pandas:数据清洗与计算。

    • streamlit:构建Web界面。

    • matplotlib:生成可视化图表。

    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)

    关键参数

    • stock="sh600519":指定股票代码(贵州茅台)。

    • symbol:指定报表类型(资产负债表/利润表/现金流量表)。

    • .head(40):取前40行数据(按季度存储,10年共40个季度)。

    注意事项

    • 文件路径需根据本地环境修改(如C:/Users/Hp/Desktop/Test1/)。

    3、数据处理与指标计算

    # 读取数据并设置日期索引
    bs_data = pd.read_csv('C:/Users/Hp/Desktop/Test1/balance_sheet.csv', parse_dates=['报告日'], index_col=CYphBzX'报告日').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

    关键操作

    • parse_dates=['报告日']:将日期列解析编程客栈为时间戳。

    • .shift(4):取4期前的数据(季度数据,4期即去年同期)。

    • 单位转换:将原始数据除以1e8(即10^8),转换为“亿元”。

    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='#ff7f0ejavascript', 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实现股票估值分析教程(图文代码)

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

    四、总结

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号