【Python与经管学术】关键词词频统计与输出(按年度统计)

import pandas as pd
from collections import defaultdict
import datetime

def read_excel(file_path):
    df = pd.read_excel(file_path)
    return df

def keyword_filter_and_count_by_year(df, company_column, date_column, text_column, keywords):
    df[date_column] = pd.to_datetime(df[date_column]).dt.to_period('Y')
    grouped_data = df.groupby([company_column, date_column])

    summary_data = []

    for (company, year), group in grouped_data:
        num_filtered_rows = 0
        keyword_counter = defaultdict(int)

        for index, row in group.iterrows():
            text = row[text_column]
            row_keywords = set()
            for keyword in keywords:
                if keyword in text:
                    row_keywords.add(keyword)
                    keyword_counter[keyword] += 1

            if row_keywords:
                num_filtered_rows += 1

        keyword_counts = {k: keyword_counter[k] for k in keywords}
        summary_data.append((company, year, num_filtered_rows, *keyword_counts.values()))

    return summary_data

def write_to_excel(summary_data, output_file_path, keywords):
    columns = ['证券代码', '年份', '包含关键词的提问个数'] + keywords
    summary_df = pd.DataFrame(summary_data, columns=columns)
    summary_df.to_excel(output_file_path, index=False)

def main():
    input_file_path = "   "
    output_file_path = '   '
    company_column = 'Symbol'
    date_column = 'QuestionDate'
    text_column = 'QuestionContent'
    keywords = [    ]

    df = read_excel(input_file_path)
    summary_data = keyword_filter_and_count_by_year(df, company_column, date_column, text_column, keywords)
    write_to_excel(summary_data, output_file_path, keywords)

if __name__ == '__main__':
    main()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FerencABC

没饭吃了,帮帮孩子

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值