Python读取Excel时把文本数据自动识别为float或int类型的解决办法
在使用Python做数据分析时,经常需要导入保存在Excel中的数据集文件,但很多时候Python的Pandas会把Excel中的文本数据(例如员工编号,身份证号,不同城市的数字代码等数值型文本)识别为’float’或’int’类型, 而这并不是我们所需要的,特别是在有些机器学习模型中需要对连续型数据和离散型数据(字符串,也就是文本)进行严格区分。看下面的栗子:
数据集Excel长这样:
现在我们用Pandas把该Excel文件读入Python中:
data=pd.read_excel(r"F:\Testdata.xlsx")
data
导入Python后的数据长这样:
”社保卡号“一列数据前面的0被自动去掉了(因为被识别成int的数据类型了)。
查看一下导入Python后两列文本的数据类型:
data.info()
可以看出两列文本数据被识别成了“int"类型,并不是原来的文本数据。
解决办法:
在读取Excel文件的语句中指定每列数据的数据类型,看下面代码:
# 在导入数据时,把两列文本数据的数据类型指定为“str"
dtype={
'社保卡号':str,
'商品编码':str
}
data=pd.read_excel(r"F:\Testdata.xlsx",dtype=dtype)
data
再看看此时这两列文本数据的类型:
data.info()
Python读取Excel时把文本数据自动识别为float或int类型的解决办法
在使用Python做数据分析时,经常需要导入保存在Excel中的数据集文件,但很多时候Python的Pandas会把Excel中的文本数据(例如员工编号,身份证号,不同城市的数字代码等数值型文本)识别为’float’或’int’类型, 而这并不是我们所需要的,特别是在有些机器学习模型中需要对连续型数据和离散型数据(字符串,也就是文本)进行严格区分。看下面的栗子:
数据集Excel长这样:
现在我们用Pandas把该Excel文件读入Python中:
data=pd.read_excel(r"F:\Testdata.xlsx")
data
导入Python后的数据长这样:
”社保卡号“一列数据前面的0被自动去掉了(因为被识别成int的数据类型了)。
查看一下导入Python后两列文本的数据类型:
data.info()
可以看出两列文本数据被识别成了“int"类型,并不是原来的文本数据。
解决办法:
在读取Excel文件的语句中指定每列数据的数据类型,看下面代码:
# 在导入数据时,把两列文本数据的数据类型指定为“str"
dtype={
'社保卡号':str,
'商品编码':str
}
data=pd.read_excel(r"F:\Testdata.xlsx",dtype=dtype)
data
再看看此时这两列文本数据的类型:
data.info()