自己记录,仅供参考
在数据处理时经常会遇到数据类型不匹配的事情,为了方便查看各种存储方式中数据类型的改变。我把一些自己常用的整理方式记录下来,希望可以为以后数据类型的处理工作提供便利。
数据常用的基本处理类型
1、字符串 2、布尔类型 3、整数 4、浮点数 5、日期
(1)单个变量的数据类型转换及查看
单个变量的类型查看
In [82]: %paste
a=''
type(a) ## -- End pasted text --
Out[82]: str
单个变量的类型转换
数值转字符串
In [84]: a=''
...: type(a)
...:
Out[84]: str In [85]: a=float(a)
...: type(a)
...:
Out[85]: float
字符串转日期及日期运算结果转为数字
In [96]: from datetime import timedelta
...: import time,datetime
...: changetime1='2016-12-11'
...: changetime2='2016-12-14'
...: t1= time.strptime(changetime1,"%Y-%m-%d")
...: y,m,d = t1[0:3]
...: change1=datetime.date(y,m,d)
...: t2= time.strptime(changetime2,"%Y-%m-%d")
...: y,m,d = t2[0:3]
...: change2=datetime.date(y,m,d)#转成日期格式
...: tianshu=(change2-change1).days#转成数值格式
...: print(type(changetime1))
...: print(type(change1))
...: print(type(change2-change1))
...: print(type(tianshu))
...:
<class 'str'>
<class 'datetime.date'>
<class 'datetime.timedelta'>
<class 'int'>
(2) numpy内数据类型的转变及查看
numpy类型
类型 | 类型代码 | 说明 |
int8,uint8 | i1,u1 | 有符号和无符号的8位(1个字节)整型 |
int16,uint16 | i2,u2 | 有符号和无符号的16位(2个字节)整型 |
int32,uint32 | i4,u4 | 有符号和无符号的32位(4个字节)整型 |
int64,uint64 | i8,u8 | 有符号和无符号的64位(8个字节)整型 |
float16 | f2 | 半精度浮点数 |
float32 | f4或f | 标准的单精度浮点数。与c的float兼容 |
float64 | f8或d | 标准的双精度浮点数。与c的double和python的float对象兼容 |
float128 | f16或g | 扩展精度浮点数 |
complex64,complex128 | c8,c16 | 分别用两个32位,64位或128位浮点数表示的 |
complex256 | c32 | 复数 |
bool | ? | 存储true和false值的布尔类型 |
obiect | O | python对象类型 |
string | S | 固定长度的字符串类型(每个字符1个字节) |
unicode | U | 固定长度的uincode类型(字数由平台决定)跟字符创的定义方式一样(如U10) |
查看numpy的数据类型
In [99]: import numpy as np
...: arr=np.array([1,2,3,4,5])
...: arr.dtype#查看数据类型
...:
Out[99]: dtype('int32')
In [100]: arr1=np.array(['','','','',''])
...: arr1.dtype
...:
Out[100]: dtype('<U1')#unicode类型
通过ndaary的astype方式显示地转换dtype
In [101]: arr1=np.array(['','','','',''])
...: print(arr1.dtype)
...: arr2=arr1.astype(int)
...: print(arr2.dtype)
...:
<U1
int32 In [102]: arr2
Out[102]: array([1, 2, 3, 4, 5])#将unicode类型转为int32 #转为字符串
arr3=arr2.astype(np.str)
print(arr3.dtype) ## -- End pasted text --
<U11
(3)dataframe内数据类型的查看及更改
查看dataframe的数据类型
In [110]: %paste
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
data={'state':['ni','hao','a'],
'year':[2111,3232,4546],
'age':['','','']}
frame=DataFrame(data)
frame.dtypes#查看数据类型 ## -- End pasted text --
Out[110]:
age object
state object
year int64
dtype: object
更改dataframe的数据类型
In [111]: %paste
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
data={'state':['ni','hao','a'],
'year':[2111,3232,4546],
'age':['','','']}
frame=DataFrame(data)
frame['age']=frame['age'].astype('int')#将age转为int类型并替换原来的数据
frame.dtypes ## -- End pasted text --
Out[111]:
age int32
state object
year int64
dtype: object