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()   等各种数学运算,

下期更精彩!欢迎交流和转载!

 

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