Python统计文件某一列相同数据出现的个数并插入柱状图

Python统计文件某一列相同数据出现的个数并插入柱状图

说明 (模块:xlsxwriter)

Python访问文件中某一列相同数据出现的个数,新建xlsx文件并根据数据插入相应柱状图
图示:(以上次python爬虫获取的文件为例)
访问第三列相同评分出现的个数(访问文件图示)
在这里插入图片描述新建文件并得出结果,插入柱状图(得出文件图示)
在这里插入图片描述

上代码(可以套用,需修改所访问文件地址,及第几列数据)

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)

知识点

统计字典中相同数据出现的次数

result = {}
    for i in set(column1):
        result[i] = column1.count(i)

在这里插入图片描述

插入柱状图

 # --------生成图表并插入到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()

name:系列的名字
categories为图表下面的分组名称
values:必填项,要统计的图标数据
[sheetname, A1(起始单元格标识), F1(结束单元格标识)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值