Python——pandas.Dateframe中的數據類型處理總結(一)

用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()   等各種數學運算,

下期更精彩!歡迎交流和轉載!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章