Pandas 如何将数据框中某些浮点列格式化为百分比

您所在的位置:网站首页 把数据变成百分数的函数 Pandas 如何将数据框中某些浮点列格式化为百分比

Pandas 如何将数据框中某些浮点列格式化为百分比

2024-07-13 01:51| 来源: 网络整理| 查看: 265

Pandas 如何将数据框中某些浮点列格式化为百分比

在本文中,我们将向您介绍如何在 pandas 数据框中将某些浮点列格式化为百分比。

假设我们有以下数据框:

import pandas as pd data = {"country": ["China", "India", "USA", "Indonesia", "Pakistan"], "population": [1439.32, 1380.00, 331.16, 273.52, 220.91], "pop_growth": [0.39, 1.06, 0.71, 1.05, 2.00], "urban_pop_ratio": [0.61, 0.35, 0.83, 0.56, 0.39]} df = pd.DataFrame(data)

该数据框显示了五个国家的人口、人口增长率和城市人口占总人口的比例数据。

country population pop_growth urban_pop_ratio 0 China 1439.32 0.39 0.61 1 India 1380.00 1.06 0.35 2 USA 331.16 0.71 0.83 3 Indonesia 273.52 1.05 0.56 4 Pakistan 220.91 2.00 0.39

我们希望将三列数据,即人口增长率、城市人口占总人口的比例以及人口转换为百分比形式。

阅读更多:Pandas 教程

方法1:使用 map 和 lambda 函数

我们可以使用 map 和 lambda 函数,先将浮点数乘以 100 得到百分比,然后再添加百分比符号 %。

df["pop_growth"] = df["pop_growth"].map(lambda x: '{:.2f}%'.format(x*100)) df["urban_pop_ratio"] = df["urban_pop_ratio"].map(lambda x: '{:.2f}%'.format(x*100)) df["population"] = df["population"].map(lambda x: '{:,.2f}%'.format(x))

这会将浮点列转换为百分比列。现在,数据框变成了这个样子:

country population pop_growth urban_pop_ratio 0 China 1,439.32% 39.00% 61.00% 1 India 1,380.00% 106.00% 35.00% 2 USA 331.16% 71.00% 83.00% 3 Indonesia 273.52% 105.00% 56.00% 4 Pakistan 220.91% 200.00% 39.00%

注意,map 方式返回一个列表值,因此需要在列表值加入批量值处理。此处用到 {},其中“:表示格式化输出符号,{}用于表示输出的值所在的位置,而后面的.几f/%表示向前保留几位小数以及添加百分比符号%`。

方法2:使用 applymap 函数

另一种方法是使用 applymap 函数,将每个元素作为一个 DataFrame 数组进行处理。

df[['pop_growth', 'urban_pop_ratio']] = df[['pop_growth', 'urban_pop_ratio']].applymap('{:.2f}%'.format) df["population"] = df["population"].apply('{:,.2f}%'.format)

这同样可以将浮点列转换为百分比列。现在,数据框变成了这个样子:

country population pop_growth urban_pop_ratio 0 China 1,439.32% 39.00% 61.00% 1 India 1,380.00% 106.00% 35.00% 2 USA 331.16% 71.00% 83.00% 3 Indonesia 273.52% 105.00% 56.00% 4 Pakistan 220.91% 200.00% 39.00%

可以看到,结果与方法 1 是相同的。

方法3:在读取时指定格式

还有一种方法是在读取文件时指定格式,这需要使用到 read_csv 函数的 converters 参数。

def convert_percent(val): if isinstance(val, float): return '{:.2f}%'.format(val*100) else: return val df = pd.read_csv('population.csv', converters={'pop_growth': convert_percent, 'urban_pop_ratio': convert_percent, 'population': lambda x: '{:,.2f}%'.format(float(x))})

这将直接将浮点列转换为百分比列。此处的 convert_percent 函数将浮点数转换为百分比字符串。

总结

在 pandas 数据框中,我们可以使用 map、lambda 函数或者 applymap 函数将浮点列转换为百分比列;也可以在读取文件时使用 converters 参数指定格式。这些方法都可以简便地处理百分比类型数据,让我们的数据更易于理解和应用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3