Python+PowerBI,高效完成股票分析!

科技继续进击 2024-05-22 21:39:36

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

利用 Python 和 Power BI 分析股票投资组合,结合 Python 的强大数据处理能力和 Power BI 的强大可视化功能,为股票投资提供全面的见解。首先,我们需要导入一些必要的库,如 os、pandas 和 yfinance。这些库分别用于文件操作、数据处理和获取财务数据。接着,我们从股票数据接口提供的 CSV 文件中读取交易数据,并将其合并成一个便于分析的 DataFrame。为了确保分析的准确性,数据清理是必不可少的。我们删除了多余的列,转换了数据类型,并标准化了股票代码以符合金融数据库的格式。这个步骤确保了我们的数据一致性并为后续处理做好了准备。# Remove columns that are not useful for the analysiscarteira = carteira.drop(["Conta", "Preço"], axis=1)# Converting columns to numeric typecarteira['Financeiro Compra'] = pd.to_numeric(carteira['Financeiro Compra'].str.replace('.', '').str.replace(',', '.'))carteira['Financeiro Venda'] = pd.to_numeric(carteira['Financeiro Venda'].str.replace('.', '').str.replace(',', '.'))# Convert the 'Dt. Negociação' column to datetime formatcarteira['Dt. Negociação'] = pd.to_datetime(carteira['Dt. Negociação'], format='%d/%m/%Y')display(carteira)

为了减少冗余并准备数据进行分析,我们按日期和库存汇总交易记录,然后计算采购和销售的累计总数。此步骤简化了数据,使其更易于分析和解释。

我们通过将股票数量乘以从雅虎财经获取的各自当前价格来计算投资组合的价值。这使我们能够跟踪投资的每日价值,并了解我们的投资组合在一段时间内的表现。为了评估我们的投资组合相对于市场的表现,我们将投资组合价值标准化,并将其与IBOVESPA指数的表现进行比较。该基准清楚地表明了我们的投资相对于大盘的表现。#A quick analysis between Ibovespa and the portfolio + dividendstotal_norm['Lucro_div_norm'].plot(label='Carteira', figsize=(15,5))df_ibov['ibov norm'].plot(label='IBOV')plt.legend()plt.show()print(f"O ibov subiu {(df_ibov['ibov norm'][-1] - 1):.2%}")print(f"A carteira com dividendos subiu {(total_norm[r'Lucro_div_norm'][-1] - 1):.2%}")

股息是投资回报的重要组成部分。我们创建函数来获取、计算和显示投资组合中每只股票收到的股息。此步骤有助于了解总投资回报,包括资本收益和股息收入。# Function to calculate and display dividends for a given stockdef Dividendos(ativo): div = get_dividends(ativo, start_date=data_inicial) div['quantidade'] = 0 div['total'] = 0 valortotal = 0 for indice, linha in div.iterrows(): valor = div.at[indice, 'dividend'] * df_carteira.at[indice,ativo] div.at[indice,'quantidade'] = df_carteira.at[indice,ativo] div.at[indice,'total'] = valor valortotal += valor display(div.loc[div['total'] > 0]) print(f'Você recebeu no total R${valortotal:.2f} de dividendos')# Function to analyze a specific stock in the portfoliodef AnalizarAtivo(): ativo = str(input('Escolha um Ativo:')) if ativo in carteira_por_acao['Ativo'].values: quant = carteira_por_acao.loc[carteira_por_acao['Ativo']==ativo,'Quantidade'].values[0] preço_medio = carteira_por_acao.loc[carteira_por_acao['Ativo']==ativo,'Preço'].values[0] preço_atual = tabela_cotacoes.loc[data_final,ativo] porce_carteira = (df_carteira_valor_atual.loc[data_final,ativo] * 100) / df_carteira_valor_atual.loc[data_final,'Total atual'] print(f'Você possui {quant} ações') print(f'O seu preço médio é de R${preço_medio:.2f}') print(f'Valor da ação no dia {data_final} é de R${preço_atual:.2f}') print(f'Lucro/prejuizo de {((preço_atual/preço_medio) -1):.2%}') print(f"Porcentagem na carteira é de {porce_carteira:.2f}%") tabela_cotacoes[ativo].plot(label=ativo, figsize=(15,5)) plt.legend() plt.show() Dividendos(ativo) else: print('Você não possui esse ativo na carteira')

选择股票后,结果是:

最后,我们将清理和处理的数据导出为 CSV 文件,以便轻松导入 Power BI 以进行进一步的可视化和报告。这允许通过交互式仪表板和报告增强对投资组合绩效的跟踪和分析。

下面是使用导出的数据创建的 Power BI 仪表板的一些屏幕截图:在这里,可以看到每种资产在您的投资组合中的分布情况及其报价。

在这里,可以看到每只股票收到了多少股息。

文章展示了 Python 的数据分析功能与 Power BI 的可视化工具相结合的强大功能,以获得对股票投资组合表现的宝贵见解。通过自动化数据处理和利用交互式仪表板,投资者可以更轻松地跟踪和分析他们的投资,从而做出更明智的决策。

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读 点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

最近我开了一家淘宝店,名字叫【打破壁垒】,主打程序开发相关付费素材、工具的共享类商品,帮助大家降低试错和使用成本。欢迎大家关注。

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

告诉你更多细节干货

欢迎围观我的朋友圈

👆每天更新所想所悟

0 阅读:1

科技继续进击

简介:感谢大家的关注