Python如何统计文本中指定代码出现次数并按日期分别绘制可视化图表
实现方案
前置依赖
确保已安装pandas和matplotlib两个基础数据处理和可视化库。
完整实现代码
import pandas as pd import matplotlib.pyplot as plt # 1. 数据预处理 # 转换时间列为datetime格式,提取日期维度(按天统计) discussion['dt'] = pd.to_datetime(discussion['dt']).dt.date # 为每个股票代码新增标记列,记录单条讨论是否提及对应代码 for tag in top: discussion[f'is_mention_{tag}'] = discussion['text'].apply(lambda txt: 1 if tag in txt else 0) # 2. 拆分独立子DataFrame + 生成独立可视化 # 自定义全局图表大小 plt.rcParams['figure.figsize'] = (12, 6) for tag in top: # 拆分当前代码对应的子DataFrame sub_df = discussion[discussion[f'is_mention_{tag}'] == 1].reset_index(drop=True) # 可选:将子DataFrame保存为本地csv # sub_df.to_csv(f'{tag}_相关讨论.csv', index=False) # 按日期统计当前代码的每日提及次数 daily_cnt = sub_df.groupby('dt').size().reset_index(name='提及次数') # 生成独立图表 plt.figure() plt.plot(daily_cnt['dt'], daily_cnt['提及次数'], marker='o', color='#2E86AB') plt.title(f'{tag} 每日讨论提及次数统计') plt.xlabel('日期') plt.ylabel('提及次数') plt.xticks(rotation=45) plt.tight_layout() # 可选:将图表保存到本地 # plt.savefig(f'{tag}_提及次数统计.png', dpi=300) plt.show()
补充说明
如果需要按小时/周等其他时间维度统计,仅需修改时间处理逻辑即可,比如按周统计的话将discussion['dt'] = pd.to_datetime(discussion['dt']).dt.date替换为discussion['dt'] = pd.to_datetime(discussion['dt']).dt.to_period('W')。
内容的提问来源于stack exchange,提问作者YanRemes
相关产品推荐
相关产品推荐

