
4.2 数据格式化
在进行数据处理时,尤其是在数据计算中应用求均值(mean()函数)后,发现结果中的小数位数增加了许多。此时就需要对数据进行格式化,以增加数据的可读性。例如,保留小数点位数、百分号、千位分隔符等。首先来看一组数据,如图4.9所示。

图4.9 原始数据
4.2.1 设置小数位数
设置小数位数主要使用DataFrame对象的round()函数,该函数可以实现四舍五入,而它的decimals参数则用于设置保留小数的位数,设置后数据类型不会发生变化,依然是浮点型。语法如下:
DataFrame.round(decimals=0, *args, **kwargs)
decimals:每一列四舍五入的小数位数,整型、字典或Series对象。如果是整数,则将每一列四舍五入到相同的位置。否则,将字典和Series舍入到可变数目的位置;如果小数是类似于字典的,那么列名应该在键中;如果小数是级数,列名应该在索引中。没有包含在小数中的任何列都将保持原样。非输入列的小数元素将被忽略。
*args:附加的关键字参数。
**kwargs:附加的关键字参数。
返回值:返回DataFrame对象。
【示例12】 四舍五入保留指定的小数位数。(示例位置:资源包\MR\Code\04\12)
使用round()函数四舍五入保留小数位数,程序代码如下:

运行程序,控制台输出结果如下:

当然,保留小数位数也可以用自定义函数,例如,为DataFrame对象中的各个浮点值保留两位小数,主要代码如下:
df.applymap(lambda x: '%.2f'%x)
注意
经过自定义函数处理过的数据将不再是浮点型而是对象型,如果后续计算需要数据,则应先进行数据类型转换。
4.2.2 设置百分比
在数据分析过程中,有时需要百分比数据。那么,利用自定义函数将数据进行格式化处理,处理后的数据就可以从浮点型转换成带指定小数位数的百分比数据,主要使用apply()函数与format()函数。
【示例13】 将指定数据格式化为百分比数据。(示例位置:资源包\MR\Code\04\13)
将A1列的数据格式化为百分比数据,程序代码如下:

运行程序,控制台输出结果如下:

4.2.3 设置千位分隔符
由于业务需要,有时需要将数据格式化为带千位分隔符的数据。那么,处理后的数据将不再是浮点型而是对象型。
【示例14】 将金额格式化为带千位分隔符的数据。(示例位置:资源包\MR\Code\04\14)
将图书销售码洋格式化为带千位分隔符的数据,程序代码如下:

运行程序,控制台输出结果如下:

注意
设置千位分隔符后,对于程序来说,这些数据将不再是数值型,而是数字和逗号组成的字符串,如果由于程序需要再变成数值型就会很麻烦,因此设置千位分隔符要慎重。