參考書目:《深入淺出Pandas:利用Python進行數據處理與分析》
pandas的數據類型有很多,一列一種,但是可以相互轉換。主要是用astype的方法
首先讀取案例數據
import numpy as np
import pandas as pd
import datetime
data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data)
df = pd.DataFrame(data, dtype='float32') # 對所的字段指定類型
# 每個字段分別指定
df = pd.read_excel(data, dtype={'team': 'string', 'Q1': 'int32'})
# 自動轉換合適的數據類型
df.convert_dtypes() # 推薦!新的方法,支持 string 類型
df.infer_objects()
df.infer_objects().dtypes
df.convert_dtypes().dtypes
# 按大體類型推定
m = ['1', 2, 3]
s = pd.to_numeric(m) # 轉成數字
pd.to_datetime(m) # 轉成時間
pd.to_timedelta(m) # 轉成時差
pd.to_datetime(m, errors='coerce') # 錯誤處理
pd.to_numeric(m, errors='ignore')
pd.to_numeric(m ,errors='coerce').fillna(0) # 兜底填充
pd.to_datetime(df[['year', 'month', 'day']]) # 組合成日期
## 應用函數
df.apply(pd.to_timedelta) #pd.to_numeric
df.dtypes # 查看數據類型
df.Q1.astype('int32').dtypes #dtype('int32')
df.index.astype('int64') # 索引類型轉換
df.astype('int32') # 所有數據轉換為 int32
df.astype({'col1': 'int32'}) # 指定字段轉指定類型
s.astype('int64')
s.astype('int64', copy=False) # 不與原數據關聯
s.astype(np.uint8)
df['name'].astype('object')
data['Q4'].astype('float')
s.astype('datetime64[ns]')
data['狀態'].astype('bool')
#常用 pd.to_datetime() 和 s.astype('datetime64[ns]')
t=pd.Series(['20210806','20210808'])
pd.to_datetime(t)
t.astype('datetime64[ns]')