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

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

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

一、前言

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

二、核心知識點梳理

1、Akshare數據獲取

  • 用于從新浪財經接口獲取上市公司財務報表(資產負債表、利潤表、現金流量表)。

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

2、Pandas數據處理

  • 數據清洗:解析日期、設置索引、排序。

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

  • 單位轉換:將數值單位從“元”轉換為“億元”。

3、Matplotlib可視化

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

  • 同比增長率折線圖,標注數據標簽。

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

4、Streamlit Web應用

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

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

5、財務分析基礎

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

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

二、代碼逐段解析

1、導入依賴庫

import akshare as ak
import pandas as pd
import streamlit as 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個季度)。

注意事項

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

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['營業(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

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

關鍵操作

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

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

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

4、Streamlit可視化展示

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

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

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

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')
    # 設置圖表格式(略)
    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[['營業(yè)收入_億元', '總凈利潤_億元']].tail(1).style.format("{:.2f}"))
with col2:
    st.dataframe(growth_data[['營收同比增長', '總凈利潤同比增長']].tail(1).style.format("{:.1f}%"))

功能亮點

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

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

三、運行與效果

1、安裝依賴:

pip install akshare pandas streamlit matplotlib

2、啟動應用:

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

3、效果展示:

四、總結

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

相關文章

最新評論

镇巴县| 本溪市| 广州市| 大名县| 清河县| 宝坻区| 永顺县| 定结县| 互助| 文山县| 黄梅县| 高碑店市| 葫芦岛市| 丹巴县| 明水县| 鹤庆县| 夏邑县| 朝阳县| 射洪县| 集安市| 永新县| 彝良县| 景谷| 麻江县| 屯昌县| 永清县| 孟连| 凉城县| 会昌县| 肇州县| 永春县| 旬邑县| 盖州市| 甘南县| 民丰县| 乐东| 阿合奇县| 仁布县| 芜湖市| 古交市| 安乡县|