最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用Akshare與Streamlit實現(xiàn)股票估值分析教程(圖文代碼)

 更新時間:2025年08月02日 14:31:01   作者:Nan_An_29  
入職測試中的一道題,要求:從Akshare下載某一個股票近十年的財務(wù)報表包括,資產(chǎn)負債表,利潤表,現(xiàn)金流量表,保存到本地Csv文件,對該公司進行財務(wù)分析,如提取近五年,營業(yè)收入,凈利潤數(shù)據(jù),并且算出同比增長,通過Pandas處理、Matplotlib可視化及Streamlit部署,實現(xiàn)財務(wù)數(shù)據(jù)分析

一、前言

入職測試中的一道題,要求:從Akshare下載某一個股票近十年的財務(wù)報表包括,資產(chǎn)負債表,利潤表,現(xiàn)金流量表,保存到本地Csv文件,對該公司進行財務(wù)分析,如提取近五年,營業(yè)收入,凈利潤數(shù)據(jù),并且算出同比增長,以上的分析以圖表顯示,用戶可以很方便的看出發(fā)展趨勢,通過streamlit 以web形式展示。

二、核心知識點梳理

1、Akshare數(shù)據(jù)獲取

  • 用于從新浪財經(jīng)接口獲取上市公司財務(wù)報表(資產(chǎn)負債表、利潤表、現(xiàn)金流量表)。

  • 關(guān)鍵函數(shù):ak.stock_financial_report_sina(),需指定股票代碼和報表類型。

2、Pandas數(shù)據(jù)處理

  • 數(shù)據(jù)清洗:解析日期、設(shè)置索引、排序。

  • 計算衍生指標:凈利潤、同比增長率。

  • 單位轉(zhuǎn)換:將數(shù)值單位從“元”轉(zhuǎn)換為“億元”。

3、Matplotlib可視化

  • 繪制雙軸趨勢圖(營業(yè)收入與凈利潤)。

  • 同比增長率折線圖,標注數(shù)據(jù)標簽。

  • 圖表格式優(yōu)化:日期格式化、網(wǎng)格線、中文字體支持。

4、Streamlit Web應(yīng)用

  • 快速構(gòu)建交互式儀表盤,支持多標簽頁布局。

  • 數(shù)據(jù)動態(tài)展示:表格、圖表、指標卡片的實時渲染。

5、財務(wù)分析基礎(chǔ)

  • 凈利潤 = 營業(yè)總收入 - 營業(yè)總成本。

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

二、代碼逐段解析

1、導(dǎo)入依賴庫

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

作用

  • akshare:獲取股票財務(wù)數(shù)據(jù)。

  • pandas:數(shù)據(jù)清洗與計算。

  • streamlit:構(gòu)建Web界面。

  • matplotlib:生成可視化圖表。

2、數(shù)據(jù)獲取與保存

# 獲取貴州茅臺近十年財務(wù)報表
balance_sheet = ak.stock_financial_report_sina(stock="sh600519", symbol="資產(chǎn)負債表").head(40)
income_statement = ak.stock_financial_report_sina(stock="sh600519", symbol="利潤表").head(40)
cash_flow = ak.stock_financial_report_sina(stock="sh600519", symbol="現(xiàn)金流量表").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)

關(guān)鍵參數(shù)

  • stock="sh600519":指定股票代碼(貴州茅臺)。

  • symbol:指定報表類型(資產(chǎn)負債表/利潤表/現(xiàn)金流量表)。

  • .head(40):取前40行數(shù)據(jù)(按季度存儲,10年共40個季度)。

注意事項

  • 文件路徑需根據(jù)本地環(huán)境修改(如C:/Users/Hp/Desktop/Test1/)。

3、數(shù)據(jù)處理與指標計算

# 讀取數(shù)據(jù)并設(shè)置日期索引
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['營業(yè)總收入'] - is_data['營業(yè)總成本']

# 計算同比增長率
is_data['營收同比增長'] = (is_data['營業(yè)收入'] - is_data['營業(yè)收入'].shift(4)) / is_data['營業(yè)收入'].shift(4) * 100
is_data['總凈利潤同比增長'] = (is_data['總凈利潤'] - is_data['總凈利潤'].shift(4)) / is_data['總凈利潤'].shift(4) * 100

# 單位轉(zhuǎn)換為億元
is_data['營業(yè)收入_億元'] = is_data['營業(yè)收入'] / 1e8
is_data['總凈利潤_億元'] = is_data['總凈利潤'] / 1e8

關(guān)鍵操作

  • parse_dates=['報告日']:將日期列解析為時間戳。

  • .shift(4):取4期前的數(shù)據(jù)(季度數(shù)據(jù),4期即去年同期)。

  • 單位轉(zhuǎn)換:將原始數(shù)據(jù)除以1e8(即10^8),轉(zhuǎn)換為“億元”。

4、Streamlit可視化展示

# 創(chuàng)建Web界面
st.title('貴州茅臺(600519)財務(wù)分析儀表板')

# 設(shè)置中文字體
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 分標簽頁展示
tab1, tab2 = st.tabs(["財務(wù)指標趨勢", "同比增長分析"])

with tab1:
    # 營業(yè)收入與凈利潤趨勢圖
    fig1, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10))
    ax1.plot(is_data.index, is_data['營業(yè)收入_億元'], label='營業(yè)收入', color='#1f77b4', marker='o')
    ax2.plot(is_data.index, is_data['總凈利潤_億元'], label='總凈利潤', color='#2ca02c', marker='s')
    # 設(shè)置圖表格式(略)
    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')
    # 設(shè)置圖表格式(略)
    st.pyplot(fig2)

# 展示核心數(shù)據(jù)表格
st.subheader("核心財務(wù)數(shù)據(jù)")
col1, col2 = st.columns(2)
with col1:
    st.dataframe(is_data[['營業(yè)收入_億元', '總凈利潤_億元']].tail(1).style.format("{:.2f}"))
with col2:
    st.dataframe(growth_data[['營收同比增長', '總凈利潤同比增長']].tail(1).style.format("{:.1f}%"))

功能亮點

  • 雙標簽頁設(shè)計,分別展示趨勢與增長率。

  • 數(shù)據(jù)表格動態(tài)更新,始終顯示最新季度結(jié)果。

三、運行與效果

1、安裝依賴:

pip install akshare pandas streamlit matplotlib

2、啟動應(yīng)用:

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

3、效果展示:

四、總結(jié)

到此這篇關(guān)于python使用Akshare與Streamlit實現(xiàn)股票估值分析教程(圖文代碼)的文章就介紹到這了,更多相關(guān)python用Akshare與Streamlit實現(xiàn)股票分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

河西区| 朝阳市| 民和| 仁化县| 永宁县| 松桃| 肃北| 延安市| 武强县| 黄骅市| 瑞昌市| 湛江市| 夏津县| 博爱县| 望城县| 将乐县| 南京市| 藁城市| 西充县| 衡东县| 松阳县| 静乐县| 华坪县| 济阳县| 肥东县| 施甸县| 文登市| 灵丘县| 万盛区| 遂川县| 新巴尔虎左旗| 双柏县| 清镇市| 灌南县| 柳林县| 泸定县| 历史| 从化市| 紫云| 绍兴县| 沧州市|