@[toc]
利用pandas库将日期和评分转为二维数据表格,并写入Excel工作簿
1.汇总舆情数据评分
- 获取一段时间的时间序列
这里可以通过pandas库的date_range()函数生成一个时间范围的时间序列,假设数据库中已经存储有“万科集团”每日的新闻舆情评分数据,我们想要获取从2019年9月1日到2019年12月1日的时间序列,为之后批量从数据库调取评分数据做准备。
import pandas as pd
date_list = pd.date_range('2019-09-01', '2019-12-01')
print(date_list)
在这里插入图片描述
这里可以看到,返回的结果为一个日期格式的时间索引序列,并不是一个常规的列表,所以还需要通过list函数将其转化为列表。
在这里插入图片描述
此时返回的是一个列表,但是里面的元素的数据类型为Timestamp(时间戳)类型,因此这里需要将其进一步转换为"%Y-%m-%d"格式的日期字符串,代码如下:
在这里插入图片描述
- 根据时间序列遍历数据库
db = pymysql.connect(host='localhost', port=3308, user='root', password='',
database='spider', charset='utf8')
# 设定参数
company = '万科集团'
date_list = list(pd.date_range('2019-09-01', '2019-12-01'))
for i in range(len(date_list)):
date_list[i] = datetime.datetime.strftime(date_list[i], '%Y-%m-%d')
# print(date_list)
# 编写SQL语句
cur = db.cursor()
sql = 'SELECT * FROM baidu_news WHERE company = %s AND date = %s'
# 遍历date_list中的日期,获取每天的评分并存储到score_list中
score_list = {} #定义字典,用于存储每天的评分
for i in range(len(date_list)):
cur.execute(sql, (company, date_list[i]))
data = cur.fetchall()
score = 100
for j in range(len(data)):
score += data[j][5]
score_list[date_list[i]] = score
db.commit()
cur.close()
db.close()
2. 导出舆情数据评分表格
获取每日舆情数据评分结果之后,首先将其转换成DataFrame类型的二维数据表格。代码如下
data = pd.DataFrame.from_dict(score_list, orient='index', columns=['score'])
在这里插入图片描述
- 通过重置索引的方式将行索引转换为列,并将其存入Excel表格中
data = pd.DataFrame.from_dict(score_list, orient='index', columns=['score'])
data.index.name = 'date'
data = data.reset_index()
在这里插入图片描述
data.to_excel('score.xlsx', index=False)
网友评论