目录

一、style格式化数据

1、所有列格式化

2、指定列格式化

(1) 使用字典对指定列格式化

(2) 使用lambda对指定列格式化

(3) 使用 na_rep设置空值的显示

(4) 内置样式函数

3、用map()、applymap()结合自定义函数

4、隐藏索引hide_index或列hide_columns

5、当样式不取决于值时,使用set_properties

二、用map()、applymap()结合format()格式化

1、保留2位小数

2、设置百分数

3、设置千位分隔符


一、style格式化数据

需安装Jinja2:cmd>pip install Jinja2。

在pandas style的官方文档中,有这样一句note,意思大致是这样的:style属性本身会返回object对象,这个对象内部有一个_repr_heml_方法,可以转为html语言,可以调用.render()方法,查看其html语言及css样式。
        css样式在程序里是可以被浏览器识别的,而jupyter notebook本身是运行在网页上的开发工具,所以这些样式是可以被jupyter notebook识别的。

所以,以下数据效果只能在Notebook中显示。

生成模拟数据

import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],axis=1)
df.iloc[3, 3] = np.nan
df.iloc[0, 2] = np.nan

1、所有列格式化

# 所有列格式化为2位小数,并转为百分数
df.style.format("{:.2%}")

2、指定列格式化

使用字典和lambda来格式特定列

(1) 使用字典对指定列格式化

# 用字典对指定列进行格式化
df.style.format({'B': "{:0<4.0f}", 'D': '{:+.2f}'})# 用自定义字典对指定列进行格式化
format_dict = {'sum':'${0:,.0f}', '日期': '{:%Y-%m}', 'pct_of_total': '{:.2%}'}
(monthly_sales.style.format(format_dict).highlight_max(color='#cd4f39').highlight_min(color='lightgreen'))

(2) 使用lambda对指定列格式化

# 用lambda对指定列进行格式化
df.style.format({"B": lambda x: "±{:.2f}".format(abs(x))})

(3) 使用 na_rep设置空值的显示

df.style.format("{:.2%}", na_rep="空值")

(4) 内置样式函数

# 高亮最大值
df.style.highlight_max().format(None, na_rep="-")# 高亮空值
df.style.highlight_null(null_color='red')# 对B列取绝对值
df.style.format({'B': abs})

3、用map()、applymap()结合自定义函数

(1) 负数涂成红色,将正数涂成黑色

# 负数高亮显示
def color_negative_red(val):"""Takes a scalar and returns a string withthe css property `'color: red'` for negativestrings, black otherwise."""color = 'red' if val < 0 else 'black'return 'color: %s' % color
df.style.applymap(color_negative_red)# 最大值高亮显示
def highlight_max(s):is_max = s == s.max()return ['background-color: yellow' if v else '' for v in is_max]
df.style.applymap(color_negative_red).apply(highlight_max)#map()方法根据提供的函数,对序列的值映射
#apply()方法根据提供的函数,按axis=0或1的方式对序列的值映射
#applymap()方法根据提供的函数,对所有元素的值映射

(2)  结合seaborn使用热力图

import seaborn as sns
cm=sns.light_palette('green',as_cmap=True)
s=df.style.background_gradient(cmap=cm)

(3) 条形图样式

df.style.bar(subset['A','B'],color='#d65f5f')

subset 参数控制作用的行列。

subset 传入的参数类似DataFrame的切片

4、隐藏索引hide_index或列hide_columns

# 隐藏索引
df.style.hide_index()#隐藏列
df.style.hide_columns(['C','D'])

5、当样式不取决于值时,使用set_properties

df.style.set_properties(**{'background-color': 'black','color': 'lawngreen','border-color': 'white'})

参考链接:

pandas style格式化数据

Pandas Style 为数据表格美颜

提高数据的颜值!一起看看Pandas中的那些Style

二、用map()、applymap()结合format()格式化

需要重新赋值给df,写入excel时会保留格式。所以,这一方法更实用些。

- 对指定列格式化用map()

- 对所有元素格式化用applymap()

1、保留2位小数

#对'A'列进行设置
df['A']=df_decimal['A'].map(lambda x:('%.2f')%x)
#所有数字保留两位小数
df=df_decimal.applymap(lambda x:('%.2f')%x)

2、设置百分数

#对'A'列进行设置
df['A']=df_decimal['A'].map(lambda x:format(x,'.2%'))
#所有数字设置百分号(%)
df=df_decimal.applymap(lambda x:format(x,'.2%'))#注意需要重新赋值给df

3、设置千位分隔符

#对'A'列进行设置(千位分隔符)
df['A']=df_int['A'].map(lambda x:format(x,','))
#对所有数据设置千位分隔符
df=df_int.applymap(lambda x: format(x,','))

参考文章:Pandas 实战系列:数字格式设置

Python模块之Pandas 格式化数据相关推荐

  1. Python模块之Pandas模块学习笔记

    目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...

  2. python模块(6)-Pandas 简易使用教程

    Pandas 简易教程 1.Pandas简介 2.创建 2.1创建dataFrame 2.2创建Series 3.dataframe数据访问 3.1 获取一列--列标签 3.2 获取多列--列标签列表 ...

  3. 利用python模块pandas获取网页表格,并保存为excel

    文章只用于学习交流 利用python模块pandas获取网页表格. 网页上的表格内容,想要保存下来,有没有办法呢?答案是有的. 主要有两个步骤, 一是读取表格内容, 二是保存读取后的内容. 在这里只讲 ...

  4. python 【模块】pandas数组处理详解

    python 模块 pandas 数组处理 文章目录 python 模块 pandas 数组处理 1. pandas介绍 2. 方法 2.1 Series 2.1.1 传递list对象创建一个 Ser ...

  5. python怎么安装pandas模块-windows下如何安装Python、pandas

    windows下如何安装Python.pandas 本篇主要涵盖以下三部分内容: Python.Pycharm的安装 使用Pycharm创建.运行Python程序 安装pandas 1.Python. ...

  6. python第三方库排行-Python模块汇总(常用第三方库)

    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...

  7. (转载)Python数据分析之pandas学习

    转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容: 1.数据 ...

  8. import pymysql 没有模块_小白详细的 python 模块的运用

    小白详细的 python 模块的运用 什么是模块 用书里的话说:模块是最高级别的程序组织单元.这句话的意思是,模块什么都能封装,就像这样: 在模块中,我们不但可以直接存放变量,还能存放函数,还能存放类 ...

  9. python模块与包

    一.模块 模块就是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块 # 1. python ...

最新文章

  1. 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
  2. .NET跨平台实践:用C#开发Linux守护进程
  3. 【2016.11.17】HTML学习笔记第二天
  4. pythonrequest得替代_python的扩展包requests的高级用法
  5. Adobe illustrator 论文图形编辑和排版 - 连载 2
  6. vue.js毕设项目利器,路过给个star
  7. [哎]关于ftp扫描工具的破解问题
  8. PHOTOSHOP抽出滤镜抠发法(转)
  9. 日记 [2006年06月06日] 庞加莱猜想
  10. 利用count if()+条件格式突出显示多余的重复值
  11. 台式计算机如何连接手机热点上网,台式电脑怎么连接手机热点 教你使用USB共享网络...
  12. UFS和eMMC简介与区别
  13. 国内移动广告平台的现状对比(2010年8月-10月)
  14. 史上最全面试题汇总,没有之一,不接受反驳
  15. 2021综述:计算机视觉中的注意力机制(续四):分支注意力
  16. android 头像高斯模糊,Android 高斯模糊头像
  17. navicat premium连接失败-修改ssh密码后,解决mysql 连接 ssh 的时候出现错误
  18. python中strip()函数的详解
  19. 使用Lucene开发简单的站内新闻搜索引擎(环境的搭建)
  20. React Native Apps的最佳主题

热门文章

  1. 五、Lua 变量的学习
  2. jdbc驱动安装以及简单测试
  3. Visual Studio 2015正式版/产品密钥
  4. 服务器系统盘大文件检测指令,服务器系统盘大文件检测指令
  5. 如何添加、修改和删除矢量线段
  6. 使用邮件,有哪些邮箱格式模板需要注意的么?
  7. 【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式
  8. mysql5.7错误提示ERROR 1265 (01000)的问题分析及解决方案和修改字段属性为中文
  9. linux下删除u盘分区工具,如何删除U盘中的CDFS分区-
  10. Android Word转HTML源码