一、招股说明书

日期: 截止2022-01-01
体积: 27G
格式: txt/pdf/csv
字段: 公司名、股票代码、发布日期、标题、报告文本等

链接:https://pan.baidu.com/s/1pLZHDy0oXwcTiCakFb-KiA 
提取码:e68l 

声明: 科研用途,仅供展示;如有任何问题, 加微信372335839, 备注「姓名-学校-专业」



二、实验

import pandas as pd

df = pd.read_csv('招股说明书.csv')
df.head()

# 招股记录数
len(df)

Run

4630

三、定义指标函数

这里准备两个比较简单的指标,设计函数,可以理解为设计数据分析流水线某环节的输入和输出。

  • 报告长度
  • 情感得分
  • 其他指标…

例如

3.1 报告长度函数

  • 输入: 字符串
  • 运算: 计算字符长度
  • 输出: 数字
def length(text):
    return len(text)

text = '你好啊'
length(text)

Run

3



3.2 某类词个数

  • 输入: 字符串
  • 运算: 使用某种词典(成熟的或自己开发),计算文本中正面词个数、负面词个数、总词数
  • 输出: 数字
import cntext as ct

#使用已有词典或自定义词典
diction = {'pos': ['独家', '进步', '发展', '稳定', '卓越', '提高', '成功'],
           'neg': ['丑闻', '挪用', '错过', '不利', '牺牲', '干扰', '过度']}

text = '公司在市场竞争中,主动发挥技术优势,取得了长足的发展。'

ct.sentiment(text=text, 
             diction=diction, 
             lang='chinese')

Run

{'pos_num': 1,
 'neg_num': 0,
 'stopword_num': 7,
 'word_num': 16,
 'sentence_num': 1}

import cntext as ct

diction = {'pos': ['独家', '进步', '发展', '稳定', '卓越', '提高', '成功'],
           'neg': ['丑闻', '挪用', '错过', '不利', '牺牲', '干扰', '过度']}

def pos(text):
    #使用已有词典或自定义词典
    res = ct.sentiment(text=text, 
                       diction=diction, 
                       lang='chinese')
    return res['pos_num']


def neg(text):
    #使用已有词典或自定义词典
    res = ct.sentiment(text=text, 
                       diction=diction, 
                       lang='chinese')
    return res['neg_num']
    


text = '公司在市场竞争中,主动发挥技术优势,取得了长足的发展。'

print(pos(text))
print(neg(text))

Run

1
0



四、批量运算

选中dataframe中某一列,使用apply应用某种计算函数。

#确保text这列所有的数据均为字符串
#如果不是字符串,强制转化为字符串
df2['text'] = df2['text'].astype(str)

df2['Len'] = df2['text'].apply(length)
df2['Pos'] = df2['text'].apply(pos)
df2['Neg'] = df2['text'].apply(neg)


df2['Senti'] = (df2['Pos']-df2['Neg'])/(df2['Pos']+df2['Neg'])
df2.head()

Run



五、保存

最后保存为csv、或xlsx,具体根据自己需要进行选择。

  • df.to_csv()
  • df.to_excel()
#df.to_csv('result.csv', encoding='utf-8', index=False)
df.to_excel('result.xlsx', index=False)



广而告之