出于学术研究目的,本文将讲述如何使用Python对Excel文本内容进行关键词统计。
数据挖掘目的:
① 判定该文本是否含有关键词(其中之一),若是则为1,否则为0 !!!
此处涉及重复项
② 判定该文本含有的关键词词频(每一个关键词)
③ 按照特定时间节点进行分组统计(公司*月度/年度)
一、引入相关库
import pandas as pd
from collections import defaultdict
import datetime
注释:datetime目的为将日期数据统一为月度或年度
二、数据特征
由于经济管理,特别是财会金融领域,非常多日度、月度以及年度的文本信息,因此文本分析成为研究的主流。例如,企业数字化转型、年报语调、年报可读性等。
数据结构:非平衡面板数据(公司个体*日度)
==>面板特征可以更改为年度、月度、周度
Stkcd | Date(日度) | Text |
000002 | 2022-12-31 | 下过雨的夏天傍晚 |
000002 | 2022-12-30 | 我都会期待 |
........ | ......... | .......... |
000002 | 2011-10-01 | 第一次呼吸畅快 |
三、读取Excel文件
def read_excel(file_path):
df = pd.read_excel(file_path)
return df
四、按照月度分组统计
由于我们一般不对日度数据或其他高频数据进行研究,因此常规来说我们需要进行月度、年度的分组,这里介绍按公司*月度分组统计日度信息。
def keyword_filter_and_count_by_month(df, company_column, date_column, text_column, keywords):
df[date_column] = pd.to_datetime(df[date_column]).dt.to_period('M')
grouped_data = df.groupby([company_column, date_column])
summary_data = []
for (company, month), 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, month, num_filtered_rows, *keyword_counts.values()))
return summary_data
五、写入EXCEL文件
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 = "EXCEL文件路径"
output_file_path = '输出文件保存路径'
company_column = 'Symbol'
date_column = 'QuestionDate'
text_column = 'QuestionContent'
keywords = ["关键词1","关键词2".....]
df = read_excel(input_file_path)
summary_data = keyword_filter_and_count_by_month(df, company_column, date_column, text_column, keywords)
write_to_excel(summary_data, output_file_path, keywords)
if __name__ == '__main__':
main()
七、运行程序
if __name__ == '__main__':
main()
八、输出数据结构特征
Stkcd | Date(月度) | 含有关键词的文本个数 | 关键词1词频 | 关键词2词频 | 关键词3词频 |
000002 | 2022-12 | 2 | 2 | 1 | 0 |
000002 | 2022-11 | 4 | 3 | 1 | 1 |
........ | ......... | ||||
000002 | 2011-01 | 3 | 2 | 2 | 0 |
九、写在最后
作为经济管理财会金融学子,本人目前着手文本分析,因感此类研究较为丰富且长期热门,特撰该代码公布。当然,这类代码对商业分析、大数据等信息处理的实际应用也有帮助。
总之,望对各位研究有所帮助,如有,还望点赞+收藏+关注。