本文系转载,在原文基础上做了修改
作者:精灵鼠小弟_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[])
比如要想要获取上图中‘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都有自己的一套数据格式,它们之间的对应关系可参考下面的表格:
这里需要强调的是object类型实际上可以包括多种不同的类型,比如一列数据里,既有整型、浮点型,也有字符串类型,这些在pandas中都会被标识为‘object’,所以在处理数据时,可能需要额外的一些方法提前将这些字段做清洗,str.replace(),float(),int(),astype(),apply()等等。