在金融投资领域,Python 以其强大的数据处理能力和丰富的第三方库支持,为投资者提供了便捷、高效的市场数据获取与分析手段。本文将以一段代码为例,详解如何使用 Python 进行股票实时行情获取、关键指标筛选、多维度排名打分以及最终生成一份高质量的投资组合。我们将主要运用以下几个库:
一、实时行情数据获取与存储
import time, datetime
import os
import efinance.stock as ef
import pandas as pd
a = time.perf_counter()
quotes = ef.get_realtime_quotes()
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
csv_path = os.path.join(desktop_path, '10到300.csv')
quotes.to_csv(csv_path, index=False, encoding='utf-8-sig')
print(quotes.head(3))
二、公司财务指标获取与合并
performance = ef.get_all_company_performance()
csv_path1 = os.path.join(desktop_path, '股票指标.csv')
performance.to_csv(csv_path1, index=False, encoding='utf-8-sig')
df = pd.read_csv(csv_path1, encoding='utf-8-sig', dtype={'股票代码': str})
df['净利润'] = performance['净利润']
df['每股收益'] = performance['每股收益']
df['净资产收益率'] = performance['净资产收益率']
df['销售毛利率'] = performance['销售毛利率']
df['营业收入同比增长'] = performance['营业收入同比增长']
df.to_csv(csv_path1, encoding='utf-8-sig')
三、筛选与优化投资组合
csv_path2 = os.path.join(desktop_path, '10到300.csv')
df1 = pd.read_csv(csv_path2, encoding='utf-8-sig', dtype={'股票代码': str})
df1 = df1.merge(df, on='股票代码', how='left')
df1.to_csv(csv_path2, index=False, encoding='utf-8-sig')
df1['总市值'] = df1['总市值'].replace('-', float('nan'))
df1['总市值'] = df1['总市值'].astype(float)
df2 = df1[(df1['总市值'] > 1000000000) & (df1['总市值'] < 30000000000)]
df2['股票名称'] = df2['股票名称'].astype(str)
df2['股票代码'] = df2['股票代码'].astype(str)
df2 = df2[~df2['股票名称'].str.contains('S|\*') & ~df2['股票代码'].str.startswith(('688', '8', '4'))]
# ... 略去中间代码
df6 = pd.concat([df3, df4, df5])
df6.drop_duplicates(subset='股票代码', keep='first', inplace=True)
df6 = df6.sort_values(by=['流通市值'])
df6 = df6.iloc[:100]
for i, code in enumerate(df6['股票代码']):
if len(str(code)) != 6:
df6.at[i, '股票代码'] = str(code).zfill(6)
csv_path3 = os.path.join(desktop_path, '10到300-100.csv')
df6.to_csv(csv_path3, index=False, encoding='utf-8-sig')
df6 = pd.read_csv(csv_path3, encoding='utf-8-sig')
print(df6.head(3))
b = time.perf_counter()
print('运行时间:%s 秒' % (b - a))
print('运行时间:', time.strftime('%H:%M:%S', time.gmtime(b - a)))
综上所述,这段 Python 代码展示了如何从实时行情数据出发,结合公司财务指标,通过多维度排名与筛选策略,构建出符合特定条件的高质量股票投资组合。整个过程涉及数据获取、清洗、合并、筛选、排名、格式化等多个环节,充分体现了 Python 在金融数据分析领域的高效与灵活性。
联系客服