前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DataFrame表样式设置(一)

DataFrame表样式设置(一)

作者头像
张俊红
发布2019-05-05 16:51:20
5.3K0
发布2019-05-05 16:51:20
举报
文章被收录于专栏:张俊红
总第136篇/张俊红

1.前言

我们知道Excel功能很强大,Python与Excel交互也有很多现成的模块可以用,主要有xlrdxlwtopenpyxlxlsxwriter这四种可以用,这些模块可以很好地通过Python实现Excel的功能,但是这些模块有一个不太方便的地方就是针对每一个单元格的行列位置去操作的,每次使用都很麻烦,不像DataFrame那样可以针对行列去进行操作。DataFrame虽然操作便利,但是DataFrame又有个不如意的地方就是不能针对表去进行设置格式(字体颜色、大小之类的),所以有的时候为了可以设置表的格式还是需要用那几个比较麻烦的 Excel模块。直到我遇到了StyleFrame模块,这个模块是把Pandasopenpyxl进行了结合,让你既可以享受DataFrame的操作便利,又可以轻松利用openpyxl进行表格样式设置。

接下来我们就看一看如何针对DataFrame表进行样式设置。要看怎么设置,我们得先看看可以设置什么。延续『对比Excel』特点,我们还是同样看看Excel中有哪些格式可以设置。

Excel中我们平常设置的主要有字体(类型、颜色、边框线、背景色、下划线、大小、加粗)、对齐方式(水平方向、垂直方向)、数字(数据显示格式,百分数、小数点位数、时间格式等设置)、条件格式四个部分。

2.准备工作

因为StyleFrame这个模块不是Anaconda自带的,所以需要我们手动进行安装。直接进行如下命令即可进行安装:

代码语言:javascript
复制
pip install StyleFrame

你也可以选择其他安装方式,关于包的安装方式可以看这篇:讲几种Python包的安装方式

如果你是python3.7,那么你直接运行上述命令可能会报错,因为pip默认安装的是该模块的最新版本(目前最新是2.0.2),但是最新版本可能不太兼容,这个时候你可以安装1.6.2版本(2.0版本尝试了也安装失败)的,我就是用的1.6.2版本安装成功的。安装命令如下:

代码语言:javascript
复制
pip install StyleFrame==1.6.2

安装好以后,我们需要新建一个StyleFrame供接下来使用,新建StyleFrame使用的方法与新建DataFrame用的一样。

代码语言:javascript
复制
from StyleFrame import StyleFrame, Styler, utils

sf = StyleFrame({"col_1": ["一","二","三"],
                 "col_2":["Excel","Sql","Python"]})

需要注意的是这里的sf不同于DataFrame表的df,是不可以预览的。

3.设置样式对象

我们主要通过对下面的Styler进行样式设置。

代码语言:javascript
复制
Styler(bg_color=None, bold=False, font=utils.fonts.arial, font_size=12, font_color=None,
       number_format=utils.number_formats.general, protection=False, underline=None,
       border_type=utils.borders.thin, horizontal_alignment=utils.horizontal_alignments.center,
       vertical_alignment=utils.vertical_alignments.center, wrap_text=True, shrink_to_fit=True,
       fill_pattern_type=utils.fill_pattern_types.solid, indent=0, comment_author=None, comment_text=None)

以下为Styler对象的参数说明:

参数

说明

bg_color

单元格背景色

bold

字体加粗与否设置

font

字体类型

font_size

字体大小

font_color

字体颜色

number_format

数值格式

protection

保护表格不被修改

underline

下划线设置

border_type

边框线设置

horizontal_alignment

水平方向对齐设置

vertical_alignment

垂直方向对齐设置

wrap_text

是否自动换行

shrink_to_fit

是否根据字符长度缩小以适应单元格

fill_pattern_type

背景填充模式

indent

缩进距离

comment_author

批注作者

comment_text

批注内容

4.使用样式

设置完样式以后,我们就需要来指定在哪一行或哪一列上使用这个样式。

4.1在列上使用

在某一列上使用样式时需要用到如下方法:

代码语言:javascript
复制
apply_column_style(cols_to_style,styler_obj,style_header)

参数说明如下:

参数

说明

cols_to_style

要设置样式的列名

styler_obj

样式对象,即上面设置过的Styler

style_header

是否将表头也设置样式

4.2在行上使用

我们除了在某一列上设置样式外,我们有的时候要需要针对某些行进行样式设置,用到的方法如下:

代码语言:javascript
复制
apply_style_by_indexes(indexes_to_style,styler_obj,cols_to_style)

参数说明如下:

参数

说明

indexes_to_style

要设置样式的行,sf[sf['col1'] = 20]表示设置col1列等于20的行

styler_obj

样式对象

cols_to_style

要设置通过indexes_to_style选出那些行对应的哪些列

5.字体设置

这一篇我们主要讲讲字体相关的设置,其他设置留在下一篇再讲。

5.1字体类型

第一个是关于字体类型的设置,也就是什么字体,关于字体类型设置使用的是font参数,主要有如下几种参数值(字体)可选:

代码语言:javascript
复制
aegean = 'Aegean'
aegyptus = 'Aegyptus'
aharoni = 'Aharoni CLM'
anaktoria = 'Anaktoria'
analecta = 'Analecta'
anatolian = 'Anatolian'
arial = 'Arial'
calibri = 'Calibri'
david = 'David CLM'
dejavu_sans = 'DejaVu Sans'
ellinia = 'Ellinia CLM'

字体类型中用的最多的就是arial,即微软雅黑。当我们把字体样式设置成Arial样式,实现代码如下:

代码语言:javascript
复制
#将col_1和col_2列的字体设置成微软雅黑
sf.apply_column_style(cols_to_style=["col_1","col_2"], 
                      styler_obj=Styler(font='Arial'),
                      style_header=True)
ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

我们用Excel打开设置样式后的文件,在字体类型那一栏就会显示Arial

5.2颜色

第二个是关于字体颜色的设置,关于字体颜色设置使用的是font_color参数,主要有如下几种参数值(颜色)可选:

代码语言:javascript
复制
white = op_colors.WHITE #白色
blue = op_colors.BLUE #蓝色
dark_blue = op_colors.DARKBLUE #深蓝色
yellow = op_colors.YELLOW #黄色
dark_yellow = op_colors.DARKYELLOW #深黄色
green = op_colors.GREEN #绿色
dark_green = op_colors.DARKGREEN #深绿色
black = op_colors.BLACK #黑色
red = op_colors.RED #红色
dark_red = op_colors.DARKRED #深红色
purple = '800080' #紫色
grey = 'D3D3D3' #灰色

我们把col_1列的字体设置成绿色,col_2列字体设置成红色,实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_1"], 
                      styler_obj=Styler(font_color='green'),
                      style_header=True)

sf.apply_column_style(cols_to_style=['col_2'], 
                      styler_obj=Styler(font_color='red'),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.3边框线

第三个是关于单元格边框线设置的,关于边框线的设置使用的border_type参数,主要有如下几种参数值(边框线类型)可选:

代码语言:javascript
复制
dash_dot = 'dashDot' #点划线
dash_dot_dot = 'dashDotDot' #双点划线
dashed = 'dashed' #虚线
dotted = 'dotted' #点线
double = 'double' #双线
hair = 'hair' #丝线
medium = 'medium'
medium_dash_dot = 'mediumDashDot' #中等点划线
medium_dash_dot_dot = 'mediumDashDotDot' #中等双点划线
medium_dashed = 'mediumDashed' #中等虚线
slant_dash_dot = 'slantDashDot' #斜划线
thick = 'thick' #粗线
thin = 'thin' #细线

这里的边框线其实也是一种线,那既然是线的设置,就和我们之前学过的折线图里面线的设置大同小异了,大家可以根据自己的需求选择合适的线形。

我们把边框线设置成点划线,实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_1","col_2"], 
                      styler_obj=Styler(border_type='dashDot'),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.4背景色

第四个是关于背景色的设计,即单元格填充颜色,关于单元格背景颜色使用的是bg_color参数,单元格背景的可选颜色和字体颜色一致,这里不再赘述。

我们把col_1列的单元格背景设置成绿色,col_2列单元格背景设置成红色,实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_1"], 
                      styler_obj=Styler(bg_color='green'),
                      style_header=True)

sf.apply_column_style(cols_to_style=['col_2'], 
                      styler_obj=Styler(bg_color='red'),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.5下划线

第五个是关于下划线设置,给字加下划线,关于下划线的设置使用的是underline参数,主要有如下几种参数值(下划线类型)可选:

代码语言:javascript
复制
single = 'single' #单下划线
double = 'double' #双下划线

我们把整表全部加单下划线,实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_1","col_2"], 
                      styler_obj=Styler(underline='single'),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.6字体大小

第六是字体大小的设置,字体大小的设置就比较简单了,直接给参数font_size指明一个具体数字就行。如下,我们将第一列设置成20号字体,将第二列设置成12号字体。实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_1"], 
                      styler_obj=Styler(font_size=20),
                      style_header=True)

sf.apply_column_style(cols_to_style=["col_2"], 
                      styler_obj=Styler(font_size=12),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.7字体加粗

第七个是字体是否加粗的设置,关于字体是否加粗使用的是bold参数,如果要让字体加粗,另bold=True,否则不设置即可。

我们将第儿列字体进行加粗,第一列不进行设置,实现代码如下:

代码语言:javascript
复制
sf.apply_column_style(cols_to_style=["col_2"], 
                      styler_obj=Styler(bold=True),
                      style_header=True)

ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

关于字体相关的设置,我们就讲到这里,下一篇开始讲一些其他方面的设置,敬请期待。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 俊红的数据分析之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.准备工作
  • 3.设置样式对象
  • 4.使用样式
    • 4.1在列上使用
      • 4.2在行上使用
      • 5.字体设置
        • 5.1字体类型
          • 5.2颜色
            • 5.3边框线
              • 5.4背景色
                • 5.5下划线
                  • 5.6字体大小
                    • 5.7字体加粗
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档