DCD*_*DSD 5 python object python-3.x jupyter-notebook
我正在做 python/jupyter 笔记本练习。我的列值的问题有'K'千和'M'百万。
需要有关如何执行以下操作的帮助:
注意:我目前正在使用带有 pandas 和 numpy import 的 jupyter 笔记本
我希望输出如下:
450K 至 450000 9.5M 至 9500000 12M 至 12000000
这是“值”下数据文件列的链接
https://drive.google.com/open?id=1BOUVYiY6iRLbUdimCg7rgwtecfU6QAwS
查看附件:

如果你想转换为数字--改编自这篇文章--如何在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)