用pandas做項目已經快4個月了,pandas中的模塊使用也到了即使不記得,但是知道功能的地步。如果知道了功能,那麼實現功能也不過就是查閱筆記的事。
正當一個人容易傲嬌的時候,就會有各種小麻煩找上來。比如說:
1.merge合併表格時,dtype類型不一樣;
2.datetime的處理;
3.series,numpy,dataframe,list的轉換;
4.object到int,float,datetime的轉換;
5.eval處理數據時,數據類型轉換;
6.等等等等。
每當我處理數據時忘記轉換數據類型,就會導致即將出結果之時報錯,於是乎前面跑了n久n久的代碼全作廢。
總結了一下這些小trouble,大概都是數據類型的問題!!!
聽起來挺好笑,數據類型不就那幾個類型嗎?
可是,數據類型如果統一轉換好,就不存在後續的麻煩了~~~~
下面介紹一些我在項目中總結的經驗:
一、讀取表格時的類型轉換
方法一:
[In]:
print(data.dtypes)
data = data.convert_objects(convert_numeric=True) # 該方法會有一個FutureWarning
print(data.dtypes)
data['時間'] = pd.to_datetime(data['時間'])
print(data.dtypes)
[out]:
LICENCECD object
ORDER_DATE object
CIGCD object
ORDQTY object
SLQTY object
COMPCD object
dtype: object
LICENCECD int64
ORDER_DATE object
CIGCD float64
ORDQTY float64
SLQTY float64
COMPCD int64
dtype: object
LICENCECD int64
ORDER_DATE datetime64[ns]
CIGCD float64
ORDQTY float64
SLQTY float64
COMPCD int64
dtype: object
方法二:
[In]:
print(data.dtypes)
data = data.infer_objects(convert_numeric=True) # 該方法會有一個FutureWarning
print(data.dtypes)
data['時間'] = pd.to_datetime(data['時間'])
print(data.dtypes)
[out]:
LICENCECD object
ORDER_DATE object
CIGCD object
ORDQTY object
SLQTY object
COMPCD object
dtype: object
LICENCECD object
ORDER_DATE object
CIGCD object
ORDQTY object
SLQTY object
COMPCD object
dtype: object
LICENCECD object
ORDER_DATE datetime64[ns]
CIGCD object
ORDQTY object
SLQTY object
COMPCD object
dtype: object
許可證號 object
這個infer_objects無效
但是在昨天的實驗中,電腦不知咋了,convert_objects不好用了,不能轉換數據類型
而infer_objects突然就好用了,此前convert_objects用了好幾個月
所以,多試試才知道哪個好用
注:此方法一convert_objects / infer_objects可以應對後面的:
merge,append(以object數據類型爲主)等各種合併;
eval() ,groupby().sum() 等各種數學運算,
下期更精彩!歡迎交流和轉載!