不得不掌握的数据可视化小工具——Excel切片器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不得不掌握的数据可视化小工具——Excel切片器相关的知识,希望对你有一定的参考价值。

参考技术A “ 本文中你将收获到:

切片器简单得说就是一个可视化的筛选工具。使用切片器后,你只需要点击相应的数据就能在数据透视表或者透视图表中筛选信息了。

比如这样:

由于在Excel 2010中,切片器只能用于数据透视表,因此有两种方式可以添加:

右键点击 “数据透视表字段” 中相应的字段,然后选择 “添加为切片器”

在数据透视表工具栏中,点击 “插入切片器”

在较新的Excel版本中,由于切片器还可以用于普通的图表,因此在之前的两种添加方式基础上,还可以:

在插入工具栏中,选择“切片器”

你可以给一个透视表添加任意多个切片器。当添加多个切片器之后,每个切片器都会影响最终的显示结果。

除了给一个图表添加若干个切片器,一个切片器也能连接多个透视表。

1.先给多个透视表命名,这样会便于后续的操作。

2.右键切片器,选择 “报表连接”

3.在弹出窗口中,勾选若干个需要关联的透视表

效果如下:

当然啦,一个切片器还可以连接多个图表,实现同时对多个图表进行动态显示的目的。

别以为微软大人没有给你自由展示的机会,我们的切片器也可以变化多端的:

Q:我的切片器中条目太多,怎么办?

Q:我不想显示切片器的标题怎么办?

Q:我完全不喜欢内置的那些个切片器式样,要怎么改?

听了一路的介绍,你是不是有点跃跃欲试了。赶紧打开你的Excel尝试一下切片器的作用吧!

PyQt5 小工具:Excel数据分组汇总器...

在写数据汇总分组工具之前梳理一下需求,要求一:能够将excel的数据展示到列表中。要求二:能够支持按列汇总数据,并且多列分组汇总。要求三:能够预览分组汇总以后的数据,最后将分好组汇总的数据保存到新的excel数据文件中。

【阅读全文】

完整源代码的获取方式放在文末了,有需要的可以自行下载使用。

主要使用到第三方python模块有下面这些,和前面几个 PyQt5 应用不同的是这次增加了一个样式模块 qdarkstyle ,通过最后将这个模块直接加入到 QApplication 中就可以显示成黑色酷酷的应用了。这个样式我个人是比较喜欢的...

\'\'\'应用操作库\'\'\'
import sys
import os

\'\'\'应用样式库\'\'\'
from qdarkstyle import load_stylesheet_pyqt5

\'\'\'UI界面库\'\'\'
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

\'\'\'数据提取库\'\'\'
import pandas as pd

编写 UI 界面组件布局,UI 布局函数 init_ui()。init_ui() 的函数整体内容都贴在下面这里,大佬们可以根据自己的需要随意发挥。

  def init_ui(self):
        # 标题、图标设置
        self.setWindowTitle(\'Excel数据汇总工具   公众号:[Python 集中营]\')
        self.setWindowIcon(QIcon(\':/data_sum.ico\'))

        # 初始化水平布局
        hbox = QHBoxLayout()

        # 初始化栅格布局
        grid = QGridLayout()

        self.data_source_text = QLineEdit()
        self.data_source_text.setReadOnly(True)

        self.data_source_btn = QPushButton()
        self.data_source_btn.setText(\'数据\')
        self.data_source_btn.clicked.connect(self.data_source_btn_click)

        self.data_group_column = QLabel()
        self.data_group_column.setText(\'设置分组列\')

        self.data_group_column_text = QLineEdit()
        self.data_group_column_text.setPlaceholderText(\'列名1,列名2...\')

        self.save_dir_text = QLineEdit()
        self.save_dir_text.setReadOnly(True)

        self.save_dir_btn = QPushButton()
        self.save_dir_btn.setText(\'路径\')
        self.save_dir_btn.clicked.connect(self.save_dir_btn_click)

        self.view_data_btn = QPushButton()
        self.view_data_btn.setText(\'预览数据\')
        self.view_data_btn.clicked.connect(self.view_data_btn_click)

        self.save_data_btn = QPushButton()
        self.save_data_btn.setText(\'保存\')
        self.save_data_btn.clicked.connect(self.save_data_btn_click)

        grid.addWidget(self.data_source_text, 0, 0, 1, 2)
        grid.addWidget(self.data_source_btn, 0, 2, 1, 1)
        grid.addWidget(self.data_group_column, 1, 0, 1, 1)
        grid.addWidget(self.data_group_column_text, 1, 1, 1, 2)

        grid.addWidget(self.save_dir_text, 2, 0, 1, 2)
        grid.addWidget(self.save_dir_btn, 2, 2, 1, 1)
        grid.addWidget(self.view_data_btn, 3, 0, 1, 2)
        grid.addWidget(self.save_data_btn, 3, 2, 1, 1)

        self.table_view = QTableView()
        self.table_view.setFixedWidth(500)
        self.table_view.setFixedHeight(100)

        hbox.addWidget(self.table_view)
        hbox.addLayout(grid)

        self.setLayout(hbox)

槽函数总共使用了四个,分别是下面这些。

save_data_btn_click:将分组汇总后的 DataFrame 数据直接保存。

data_source_btn_click:用来加载需要分组汇总的 excel 文件的,并将加载出来的 DataFrame 数据直接显示到 QTableView 的组件上面,这样可以实时的看见加载进来的原始数据。

save_dir_btn_click:点击选择存储路径时触发的槽函数,用来调起 QFileDialog 来选择文件路径。

view_data_btn_click:调起预览分组汇总后的数据,将分组后的数据显示到窗口上。

槽函数 data_source_btn_click,加载 excel 源数据。

    def data_source_btn_click(self):
        xlsx_file = QFileDialog.getOpenFileName(self, \'选择文件\', self.cwd, \'Excel File(*.xlsx)\')
        self.data_source_text.setText(xlsx_file[0])
        self.data_frame = pd.read_excel(self.data_source_text.text().strip())
        print(self.data_frame)
        model = TableModelView(self.data_frame)
        self.table_view.setModel(model)

槽函数 save_data_btn_click,保存最终的 excel 数据。

    def save_data_btn_click(self):
        dir = self.save_dir_text.text().strip()
        self.data_frame_group.to_excel(dir + \'group_data.xlsx\',sheet_name=\'数据信息汇总\')

槽函数 view_data_btn_click,预览分组汇总的数据。

    def view_data_btn_click(self):
        columns = self.data_group_column_text.text().strip()
        column_list = []
        if columns != \'\':
            column_list = columns.split(\',\')
        self.data_frame_group = self.data_frame.groupby(column_list, as_index=False).sum()
        print(self.data_frame_group)
        model = TableModelView(self.data_frame_group)
        self.table_view.setModel(model)

槽函数 save_dir_btn_click,存储文件选择。

    def save_dir_btn_click(self):
        save_path = QFileDialog.getExistingDirectory(self, \'选择文件夹\', self.cwd)
        self.save_dir_text.setText(save_path + \'/\')

最后,在主要代码块中展示列表数据时时使用了一个 QTableView 组件自定义的模型 TableModelView,由于篇幅问题这里就不分享了,大家可以去公众号下载源码。

【福利】公众号内回复 "Excel数据分组汇总器",获取完整源代码。

【往期精选】

● 异常:存储MYSQL转义数据保证数据存储的准确性...

● 做一个小闹钟,按规划做事...

● 使用pyqt5的日期控件做一个小日历方便查看...

● 将几万张图片合成一张图片,制作一个超赞的马赛克图!

● 小工具批量将mp3音频格式转换为wav格式

● 不用H5,直接使用pywebio模块实现网页

● python回调函数能做什么?

● 解决pyinstaller打包过程中外部资源无法加载的问题 ...

● 如何在控制台实现一个数据管理系统(包括MYSQL数据库的增删改查)

● pyqt5做了一个二维码生成器,已打包成exe可执行程序...

● 自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...

● PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?

● PyQt5 GUI:百度图片下载器(文末附源码)

● 浪漫的turtle,送给程序员自己的圣诞树!

欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!

以上是关于不得不掌握的数据可视化小工具——Excel切片器的主要内容,如果未能解决你的问题,请参考以下文章

Excel数据透视表(图)的切片器,快速筛选数据表格与可视化!

通过 Python 在 Excel 中创建切片器对象

数据可视化之powerBI基础(十七)掌握PowerBI按列排序,再也不用担心顺序错乱了

在线数据分析工具都有哪些?

数据分析,除了Excel数据透视表,还有啥工具?

数据分析,除了Excel数据透视表,还有啥工具?