DataFrame表样式设置(二)
總第138篇/張俊紅
在DataFrame樣式表設(shè)置的第一節(jié)DataFrame表樣式設(shè)置(一)中我們講了字體相關(guān)的一些設(shè)置,這一節(jié)我們講一下,對齊方式、數(shù)字顯示、條件格式相關(guān)的一些設(shè)置。
1.對齊方式
對齊方式主要有兩種,一種是水平方向?qū)R,一種是垂直方向?qū)R。
1.1水平方向?qū)R
關(guān)于水平方向?qū)R情況使用的是horizontal_alignment參數(shù),主要有如下幾個參數(shù)值可選:
general?=?'general'?#一般 left?=?'left'?#左對齊 center?=?'center'?#居中對齊 right?=?'right'?#右對齊 fill?=?'fill'?#填滿單元格對齊 justify?=?'justify'?#兩端對齊 center_continuous?=?'centerContinuous' distributed?=?'distributed'?#分散對齊#注意區(qū)分兩端對齊和分散對齊我們把col_1列設(shè)置成左對齊,col_2列設(shè)置成右對齊,col_3列設(shè)置成居中對齊,實現(xiàn)代碼如下:
sf.apply_column_style(cols_to_style=["col_1"],?styler_obj=Styler(horizontal_alignment="left"),style_header=True) sf.apply_column_style(cols_to_style=["col_2"],?styler_obj=Styler(horizontal_alignment="right"),style_header=True) sf.apply_column_style(cols_to_style=["col_3"],?styler_obj=Styler(horizontal_alignment="center"),style_header=True) ew?=?StyleFrame.ExcelWriter(r'my_excel.xlsx') sf.to_excel(ew) ew.save()最后效果如下:
1.2垂直方向?qū)R
垂直方向?qū)R和水平方向?qū)R的原理一樣,關(guān)于垂直對齊使用的是vertical_alignment參數(shù),主要有如下幾個參數(shù)值可選:
top?=?'top'?#靠上對齊 center?=?'center'?#靠中對齊 bottom?=?'bottom'?#靠下對齊 justify?=?'justify'?#兩端對齊 distributed?=?'distributed'?#分散對齊2.數(shù)字顯示
我們知道一個數(shù)字有不同的表現(xiàn)形式,可以是小數(shù)點也可以是百分?jǐn)?shù),可以設(shè)置保留兩位小數(shù)點還可以設(shè)置保留三位小數(shù)點。我們要想設(shè)置數(shù)字的這些顯示形式,需要用到number_format參數(shù),主要有如下幾個參數(shù)值可選:
general?=?'General'?#對應(yīng)Excel中的常規(guī) general_integer?=?'0'?#不保留小數(shù)點? general_float?=?'0.00'?#保留兩位小數(shù)點 percent?=?'0.0%'?#百分?jǐn)?shù) thousands_comma_sep?=?'#,##0'?#千位分隔樣式 date?=?'DD/MM/YY'?#年月日 time_24_hours?=?'HH:MM'?#小時分鐘 time_24_hours_with_seconds?=?'HH:MM:SS'?#小時分鐘秒 time_12_hours?=?'h:MM?AM/PM'?#12小時分鐘?上下午區(qū)分 time_12_hours_with_seconds?=?'h:MM:SS?AM/PM'?#12小時分鐘秒?上下午區(qū)分 date_time?=?'DD/MM/YY?HH:MM'?#年月日時分 date_time_with_seconds?=?'DD/MM/YY?HH:MM:SS'?#年月日時分秒我們把col_1列設(shè)置成常規(guī)格式,col_2列設(shè)置成保留3位小數(shù)點,col_3列設(shè)置成百分?jǐn)?shù)格式,實現(xiàn)代碼如下:
sf.apply_column_style(cols_to_style=["col_1"],?styler_obj=Styler(number_format="0"),style_header=True) sf.apply_column_style(cols_to_style=["col_2"],?styler_obj=Styler(number_format="0.000"),style_header=True) sf.apply_column_style(cols_to_style=["col_3"],?styler_obj=Styler(number_format="0.0%"),style_header=True) ew?=?StyleFrame.ExcelWriter(r'my_excel.xlsx') sf.to_excel(ew) ew.save()最后效果如下:
3.條件格式
條件格式主要將滿足條件的某些值重點突出顯示出來,條件格式主要用在色階顯示中,可選的條件如下:
num?=?'num'?#根據(jù)具體數(shù)值 percent?=?'percent'?#根據(jù)百分?jǐn)?shù) max?=?'max'?#根據(jù)最大值 min?=?'min'?#根據(jù)最小值 formula?=?'formula'?#根據(jù)公式 percentile?=?'percentile'?#根據(jù)分位數(shù)色階調(diào)整需要用到add_color_scale_conditional_formatting方法。
4.行寬列高設(shè)置
4.1設(shè)置列寬
設(shè)置列寬的時候,我們可以將整個表中所有列設(shè)置成一樣的寬度,也可以不同列的列寬是不一樣的。設(shè)置列寬不是通過設(shè)置Styler來設(shè)置的,而是在sf表上直接調(diào)用set_column_width和set_column_width_dict方法即可。
我們把整個表列寬都設(shè)置成10,實現(xiàn)代碼如下:
sf.set_column_width(columns?=?["col_1","col_2","col_3"],width=10) ew?=?StyleFrame.ExcelWriter(r'my_excel.xlsx') sf.to_excel(ew) ew.save()最后效果如下:
我們把col_1列列寬設(shè)置成10,col_2列列寬設(shè)置成20,col_3列列寬設(shè)置成30,實現(xiàn)代碼如下:
sf.set_column_width_dict(col_width_dict?=?{"col_1":10,"col_2":20,"col_3":30}) ew?=?StyleFrame.ExcelWriter(r'my_excel.xlsx') sf.to_excel(ew) ew.save()最后效果如下:
4.2設(shè)置行高
設(shè)置列寬與行高的原理是一樣的,使用的方法是set_row_height和set_row_height_dict。
5.讀取本地表
讀取本地表就是我們可將本地的Excel文件讀取進(jìn)來,然后對其設(shè)置樣式,也可以將本地Excel文件的樣式讀取進(jìn)來。讀取文件用到的方法是read_excel。
read_excel有如下參數(shù):
| path | 待讀取文件路徑 |
| sheet_name | 要讀取文件的sheet名 |
| read_style | 是否讀取文件表中已有的樣式,默認(rèn)是False |
| use_openpyxl_styles | 是使用 Openpyxl的風(fēng)格,還是使用Styler風(fēng)格,默認(rèn)False,即使用Styler風(fēng)格 |
| read_comments | 是否讀取批注,默認(rèn)Fasle |
需要注意的一點是,讀取進(jìn)來的本地表不可以進(jìn)行預(yù)覽,即你在Python里面是看不到長什么樣子的。讀取文件實例如下:
from?StyleFrame?import?StyleFrame sf=StyleFrame.read_excel(r"C:\Users\my_excel.xlsx") sf------- <StyleFrame.style_frame.StyleFrame?at?0x287b4eca90>6.保存到本地
將文件格式設(shè)置好了,我們就可以將文件導(dǎo)出到本地進(jìn)行保存,保存文件用到的方法是to_excel。
to_excel有如下參數(shù):
| excel_writer | 輸出文件路徑 |
| sheet_name | 輸出文件sheet名 |
| allow_protection | 是否受保護(hù),默認(rèn)是False |
| right_to_left | 使sheet從右到左排 |
| columns_to_hide | 要隱藏的列名,以列表傳入 |
| row_to_add_filters | 要過濾哪些行,傳入行索引即可 |
| columns_and_rows_to_freeze | 要凍結(jié)的窗口,如果輸入"C3",則會把A、B列和1、2行凍結(jié) |
| best_fit | 傳入列名,會根據(jù)列寬自動調(diào)節(jié)字體大小 |
總結(jié)
以上是生活随笔為你收集整理的DataFrame表样式设置(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么样面相的男人口蜜腹剑
- 下一篇: 3月碎碎念