python 數據處理中各種存儲方式里數據類型的轉換


自己記錄,僅供參考

在數據處理時經常會遇到數據類型不匹配的事情,為了方便查看各種存儲方式中數據類型的改變。我把一些自己常用的整理方式記錄下來,希望可以為以后數據類型的處理工作提供便利。

數據常用的基本處理類型

1、字符串 2、布爾類型 3、整數 4、浮點數 5、日期

 

(1)單個變量的數據類型轉換及查看

單個變量的類型查看

1 In [82]: %paste
2 a='2'
3 type(a)
4 
5 ## -- End pasted text --
6 Out[82]: str

單個變量的類型轉換

數值轉字符串

1 In [84]: a='2'
2     ...: type(a)
3     ...:
4 Out[84]: str
5 
6 In [85]: a=float(a)
7     ...: type(a)
8     ...:
9 Out[85]: float

字符串轉日期及日期運算結果轉為數字

 1 In [96]: from datetime import timedelta
 2     ...: import time,datetime
 3     ...: changetime1='2016-12-11'
 4     ...: changetime2='2016-12-14'
 5     ...: t1= time.strptime(changetime1,"%Y-%m-%d")
 6     ...: y,m,d = t1[0:3]
 7     ...: change1=datetime.date(y,m,d)
 8     ...: t2= time.strptime(changetime2,"%Y-%m-%d")
 9     ...: y,m,d = t2[0:3]
10     ...: change2=datetime.date(y,m,d)#轉成日期格式
11     ...: tianshu=(change2-change1).days#轉成數值格式
12     ...: print(type(changetime1))
13     ...: print(type(change1))
14     ...: print(type(change2-change1))
15     ...: print(type(tianshu))
16     ...:
17 <class 'str'>
18 <class 'datetime.date'>
19 <class 'datetime.timedelta'>
20 <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的數據類型

1 In [99]: import numpy as np
2     ...: arr=np.array([1,2,3,4,5])
3     ...: arr.dtype#查看數據類型
4     ...:
5 Out[99]: dtype('int32')
1 In [100]: arr1=np.array(['1','2','3','4','5'])
2      ...: arr1.dtype
3      ...:
4 Out[100]: dtype('<U1')#unicode類型

通過ndaary的astype方式顯示地轉換dtype

1 In [101]: arr1=np.array(['1','2','3','4','5'])
2      ...: print(arr1.dtype)
3      ...: arr2=arr1.astype(int)
4      ...: print(arr2.dtype)
5      ...:
6 <U1
7 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的數據類型

 1 In [110]: %paste
 2 import numpy as np
 3 import pandas as pd
 4 from pandas import Series,DataFrame
 5 data={'state':['ni','hao','a'],
 6 'year':[2111,3232,4546],
 7 'age':['23','24','25']}
 8 frame=DataFrame(data)
 9 frame.dtypes#查看數據類型
10 
11 ## -- End pasted text --
12 Out[110]:
13 age      object
14 state    object
15 year      int64
16 dtype: object

更改dataframe的數據類型

 1 In [111]: %paste
 2 import numpy as np
 3 import pandas as pd
 4 from pandas import Series,DataFrame
 5 data={'state':['ni','hao','a'],
 6 'year':[2111,3232,4546],
 7 'age':['23','24','25']}
 8 frame=DataFrame(data)
 9 frame['age']=frame['age'].astype('int')#將age轉為int類型並替換原來的數據
10 frame.dtypes
11 
12 ## -- End pasted text --
13 Out[111]:
14 age       int32
15 state    object
16 year      int64
17 dtype: object

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM