这个问题出现在画热度图的时候,热度图似乎只读数字部分不认字符部分。用pandas包读取的csv数据文件有很多列都是字符,导致无法正常画出热度图。求个转化方法。字符全都是名字或者商品之类的,直接用数字唯一值代替字符唯一值就好。
用map 啊,给你参考一下
mapping1 = {'一线':1, '二线':2, '三线':3, '四线':4, '五线':5, '六线':6}
data['城市级别'] = data['城市级别'].map(mapping1)
关键要看你的字符是什么,它们有没有关联,虽然随便转换成数字都可以画图,但是我想你更希望连续的数据放在一起。
比如 'Jan' 'Feb' 'Mar' 'Apr' ... 你转换成 1 2 3 4,它相邻的月份在一起,但是你转换成1 8 4 9 ... 这种毫无规律的,那么就不好了。
所以要先知道你字符串的性质。
如果没有规律,那么可以用df.groupby(df['字符串列'])得到分组,相同的放一组,然后你再给它们编号,修改回去即可。
给你个方法:
def convert_func(x):
try:
x=float(x)
except:
x=0# 或者你想要替换成的数字
return x
data['col'] = data['col'].map(lambdax\ x: convert_func(X))
sklearn里面有可以直接帮你转换的函数,你可以参考文档https://scikit-learn.org/stable/modules/feature_extraction.html