Python模块之Pandas 格式化数据
目录
一、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 格式化数据相关推荐
- Python模块之Pandas模块学习笔记
目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...
- python模块(6)-Pandas 简易使用教程
Pandas 简易教程 1.Pandas简介 2.创建 2.1创建dataFrame 2.2创建Series 3.dataframe数据访问 3.1 获取一列--列标签 3.2 获取多列--列标签列表 ...
- 利用python模块pandas获取网页表格,并保存为excel
文章只用于学习交流 利用python模块pandas获取网页表格. 网页上的表格内容,想要保存下来,有没有办法呢?答案是有的. 主要有两个步骤, 一是读取表格内容, 二是保存读取后的内容. 在这里只讲 ...
- python 【模块】pandas数组处理详解
python 模块 pandas 数组处理 文章目录 python 模块 pandas 数组处理 1. pandas介绍 2. 方法 2.1 Series 2.1.1 传递list对象创建一个 Ser ...
- python怎么安装pandas模块-windows下如何安装Python、pandas
windows下如何安装Python.pandas 本篇主要涵盖以下三部分内容: Python.Pycharm的安装 使用Pycharm创建.运行Python程序 安装pandas 1.Python. ...
- python第三方库排行-Python模块汇总(常用第三方库)
模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...
- (转载)Python数据分析之pandas学习
转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析. 接下来pandas介绍中将学习到如下8块内容: 1.数据 ...
- import pymysql 没有模块_小白详细的 python 模块的运用
小白详细的 python 模块的运用 什么是模块 用书里的话说:模块是最高级别的程序组织单元.这句话的意思是,模块什么都能封装,就像这样: 在模块中,我们不但可以直接存放变量,还能存放函数,还能存放类 ...
- python模块与包
一.模块 模块就是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块 # 1. python ...
最新文章
- 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
- .NET跨平台实践:用C#开发Linux守护进程
- 【2016.11.17】HTML学习笔记第二天
- pythonrequest得替代_python的扩展包requests的高级用法
- Adobe illustrator 论文图形编辑和排版 - 连载 2
- vue.js毕设项目利器,路过给个star
- [哎]关于ftp扫描工具的破解问题
- PHOTOSHOP抽出滤镜抠发法(转)
- 日记 [2006年06月06日] 庞加莱猜想
- 利用count if()+条件格式突出显示多余的重复值
- 台式计算机如何连接手机热点上网,台式电脑怎么连接手机热点 教你使用USB共享网络...
- UFS和eMMC简介与区别
- 国内移动广告平台的现状对比(2010年8月-10月)
- 史上最全面试题汇总,没有之一,不接受反驳
- 2021综述:计算机视觉中的注意力机制(续四):分支注意力
- android 头像高斯模糊,Android 高斯模糊头像
- navicat premium连接失败-修改ssh密码后,解决mysql 连接 ssh 的时候出现错误
- python中strip()函数的详解
- 使用Lucene开发简单的站内新闻搜索引擎(环境的搭建)
- React Native Apps的最佳主题