pandas中查看数据类型的几种方式

本文系转载,在原文基础上做了修改
作者:精灵鼠小弟_fb22
链接:https://www.jianshu.com/p/8a5f0710cad3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在获得数据之后、分析数据之前,我们一般需要对数据总体进行一个概览,如有哪些字段,每个字段的类型,值是否缺失等,以下列出了几种方法,供我们方便快捷的查看dataframe的数据类型。

1、维度查看:df.shape

# 以某表为例,先读取源数据,不同城市,每天的产品销售信息
engine = create_engine('mysql+pymysql://username:password@localjost:3306/dataset?charset=utf8')
sql = 'select * from dw_customer_order'
gather_customer_order = pd.read_sql_query(sql,con=engine)
gather_customer_order.shape

返回结果如下如所示,说明此表格一共有203401行,16列:

(203401, 16)

2、数据表基本信息(维度、列名称、数据格式、所占空间等):df.info()

gather_customer_order.info()

返回结果

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 203401 entries, 0 to 203400
Data columns (total 16 columns):
#   Column              Non-Null Count   Dtype  
---  ------              --------------   -----  
0   create_date         203401 non-null  object 
1   product_name        203401 non-null  object 
2   cpzl_zw             203401 non-null  object 
3   cplb_zw             203401 non-null  object 
4   order_num           203401 non-null  int64  
5   customer_num        203401 non-null  int64  
6   sum_amount          203401 non-null  float64
7   is_current_year     203401 non-null  object 
8   is_last_year        203401 non-null  object 
9   is_yesterday        203401 non-null  object 
10  is_today            203401 non-null  object 
11  is_current_month    203401 non-null  object 
12  is_current_quarter  203401 non-null  object 
13  chinese_province    203401 non-null  object 
14  chinese_city        203401 non-null  object 
15  chinese_territory   203401 non-null  object 
dtypes: float64(1), int64(2), object(13)
memory usage: 24.8+ MB

可见,用info方法可以非常全面的看出表格的各项属性,包括:
1.源数据的数据类型为:DataFrame
2.表格的维度:203401行 * 16列,RangeIndex:0-203400
3.表格的列名,是否为空值和列字段类型dtype
4.表格所占空间:24.8M+

3、每一列数据的格式:df.dtypes
这个功能与df.info()类似,如果只想查看每一列存储的是什么数据格式,那么可以直接使用df.dtypes

gather_customer_order.dtypes

返回结果如下,可以看到,这个结果基本就是df.info()的简化版,指明了各列的数据类型。

create_date            object
product_name           object
cpzl_zw                object
cplb_zw                object
order_num               int64
customer_num            int64
sum_amount            float64
is_current_year        object
is_last_year           object
is_yesterday           object
is_today               object
is_current_month       object
is_current_quarter     object
chinese_province       object
chinese_city           object
chinese_territory      object
dtype: object

4、某一列格式:df['B'].dtype
5.type(变量名)
通过以上4种方式有时候也无法看到数据类型,比如下图中,通过df.dtypes查每一列的数据类型,字段'create_date'是'object'(这里表示对象的意思),那么这个对象到底是什么类型不知道,就需要我们进一步查询确定了,这时可以使用type(df['列名'])把维度降下来查其类型。或者直接使用loc[]函数降维度(可以不断使用loc[]函数降维度),查其数据类型:type(df['列名'].loc[])

image.png

image.png

比如要想要获取上图中‘create_date’字段中的年月,首先我们得查看该字段的数据类型

type(gather_customer_order['create_date'])

结果如下:

pandas.core.series.Series

可以看出是Series类型,Series类型可以使用loc[]函数来进行切片,再去针对切片查看数据类型

type(gather_customer_order['create_date'].loc[0])  # 查看'create_date'字段的第一个值的类型

结果如下:是datetime类型

datetime.date

由上文可见,float64,int64,object都是pandas专有的数据格式,同理,Python,numpy都有自己的一套数据格式,它们之间的对应关系可参考下面的表格:


image.png

这里需要强调的是object类型实际上可以包括多种不同的类型,比如一列数据里,既有整型、浮点型,也有字符串类型,这些在pandas中都会被标识为‘object’,所以在处理数据时,可能需要额外的一些方法提前将这些字段做清洗,str.replace(),float(),int(),astype(),apply()等等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容