将带有 M 和 K 的字符串对象值转换为百万和千

DCD*_*DSD 5 python object python-3.x jupyter-notebook

我正在做 python/jupyter 笔记本练习。我的列值的问题有'K'千和'M'百万。

需要有关如何执行以下操作的帮助:

  1. 如何使值具有“K”千个值
  2. 如何使值具有“M”百万值(整数和小数)

注意:我目前正在使用带有 pandas 和 numpy import 的 jupyter 笔记本

我希望输出如下:

450K 至 450000 9.5M 至 9500000 12M 至 12000000

这是“值”下数据文件列的链接

https://drive.google.com/open?id=1BOUVYiY6iRLbUdimCg7rgwtecfU6QAwS

查看附件:

在此输入图像描述

Dar*_*ylG 2

如果你想转换为数字--改编自这篇文章--如何在Python中一致地将“3.71B”和“4M”等字符串转换为数字?

import numpy as np

def text_to_num(text, bad_data_val = 0):
    d = {
        'K': 1000,
        'M': 1000000,
        'B': 1000000000
    }
    if not isinstance(text, str):
        # Non-strings are bad are missing data in poster's submission
        return bad_data_val

    elif text[-1] in d:
        # separate out the K, M, or B
        num, magnitude = text[:-1], text[-1]
        return int(float(num) * d[magnitude])
    else:
        return float(text)
Run Code Online (Sandbox Code Playgroud)

处理海报的 FIFA 数据集

统计数据会有所不同,具体取决于我们为错误或丢失数据设置的默认值。

当我们处理“工资”列时,这一点更加明显,该列的缺失数据比“值”列多得多。

例子

print("Starting Values\n", df['Wage'].head())
for default_val in [0, None]:  # Try 0 and None for missing data fields
    print('\nUsing Default Value {}'.format(default_val))
    df['Result'] = df.apply(lambda row: text_to_num(row['Wage'], default_val), axis=1)
    print("Converted values:\n", df['Result'].head())
    print("\nStats {}".format(default_val))
    print(df['Result'].dropna().describe())  # Get stats dropping missing data (i.e. None values)
    print('-'*20)
Run Code Online (Sandbox Code Playgroud)

输出

笔记:

(1) 当使用 0 作为默认值时,它会降低统计数据(即零和较低平均值的最小值)

(2) 当 None 用作 defaultValue 时,我们忽略该值并获得更好的统计数据

Starting Values
 0    565K
1    565K
2    280K
3    510K
4    230K
Name: Wage, dtype: object

Using Default Value 0
Converted values:
 0    565000
1    565000
2    280000
3    510000
4    230000
Name: Result, dtype: int64

Stats 0
count     17981.000000
mean      11546.966242
std       23080.000139
min           0.000000
25%        2000.000000
50%        4000.000000
75%       12000.000000
max      565000.000000
Name: Result, dtype: float64
--------------------

Using Default Value None
Converted values:
 0    565000.0
1    565000.0
2    280000.0
3    510000.0
4    230000.0
Name: Result, dtype: float64

Stats None
count     17733.000000
mean      11708.453166
std       23200.122784
min        1000.000000
25%        2000.000000
50%        4000.000000
75%       12000.000000
max      565000.000000
Name: Result, dtype: float64
--------------------
Run Code Online (Sandbox Code Playgroud)