import xlsxwriter
import csv
import pandas as pd
from collections import Counter
import numpy
import time
# 新建一个表格,并添加表及柱状图
def generate_excel(dic):
workbook = xlsxwriter.Workbook('Books score statistics.xlsx')
worksheet = workbook.add_worksheet('statistics')
# 设定格式,等号左边格式名称自定义,字典中格式为指定选项
# bold:加粗,num_format:数字格式
bold_format = workbook.add_format({'bold': True})
# 将二行二列设置宽度为15(从0开始)
worksheet.set_column(1, 1, 15)
# 用符号标记位置,例如:A列1行
worksheet.write('A1', '评分', bold_format)
worksheet.write('B1', '个数', bold_format)
row = 1
col = 0
for item in (dic):
# 使用write_number方法,指定数据格式写入数据
worksheet.write_number(row, col, float(item['Book score']))
worksheet.write_number(row, col + 1, int(item['Quantity']))
row += 1
# --------生成图表并插入到excel---------------
# 创建一个柱状图(column chart)
chart_col = workbook.add_chart({'type': 'column'})
# 配置系列数据
chart_col.add_series({
'name': '=statistics!$B$1',
'categories': '=statistics!$A$2:$A$7',
'values': '=statistics!$B$2:$B$7',
'line': {'color': 'red'},
})
# 设置图表的title 和 x,y轴信息
chart_col.set_title({'name': 'Books score statistics'})
chart_col.set_x_axis({'name': 'Book score'})
chart_col.set_y_axis({'name': 'Quantity (piece)'})
# 设置图表的风格
chart_col.set_style(11)
# 把图表插入到worksheet以及偏移
worksheet.insert_chart('A15', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()
if __name__ == '__main__':
# 访问文件
with open('f:/python_document/豆瓣读书TOP250.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
column1 = [row[3] for row in reader] #统计文件中的第三列数据
#print(column1)
# 统计评分个数
result = {}
for i in set(column1):
result[i] = column1.count(i)
del result['评分']
data = result
#print(data)
# 新建列表储存图书信息Book score和Quantity信息
bookdic = []
for key in data:
bookdata = {"Book score": key, "Quantity": data[key]}
bookdic.append(bookdata)
print(bookdic)
#调用函数
generate_excel(bookdic)