1. Pandas数据类型
pandas做数据处理,经常用到数据转换,得到正确类型的数据。
pandas与numpy之间的数据对应关系。
重点介绍object,int64,float64,datetime64,bool等几种类型,category与timedelta两种类型这里不做介绍。
importnumpy as npimportpandas as pd#从csv文件读取数据,数据表格中只有5行,里面包含了float,string,int三种数据python类型,也就是分别对应的pandas的float64,object,int64
df = pd.read_csv("sales_data_types.csv", index_col=0)print(df)
Customer Number Customer Name 2016 2017 \
0 10002.0 Quest Industries $125,000.00 $162500.00
1 552278.0 Smith Plumbing $920,000.00 $101,2000.00
2 23477.0 ACME Industrial $50,000.00 $62500.00
3 24900.0 Brekke LTD $350,000.00 $490000.00
4 651029.0 Harbor Co $15,000.00 $12750.00
Percent Growth Jan Units Month Day Year Active
0 30.00% 500 1 10 2015 Y
1 10.00% 700 6 15 2014 Y
2 25.00% 125 3 29 2016 Y
3 4.00% 75 10 27 2015 Y
4 -15.00% Closed 2 2 2014 N
df.dtypes
Customer Number float64
Customer Name object
2016 object
2017 object
Percent Growth object
Jan Units object
Month int64
Day int64
Year int64
Active object
dtype: object
#想得到2016年与2017年的数据总和,直接相加不是我们需要的答案,因为这两列中的数据类型是object,执行该操作之后,得到是一个更加长的字符串,#通过df.info() 来获得关于数据框的更多的详细信息
df['2016']+df['2017']
0 $125,000.00$162500.00
1 $920,000.00$101,2000.00
2 $50,000.00$62500.00
3 $350,000.00$490000.00
4 $15,000.00$12750.00
dtype: object
df.info()#Customer Number 列是float64,然而应该是int64#2016 2017两列的数据是object,并不是float64或者int64格式#Percent以及Jan Units 也是objects而不是数字格式#Month,Day以及Year应该转化为datetime64[ns]格式#Active 列应该是布尔值#如果不做数据清洗,很难进行下一步的数据分析,为了进行数据格式的转化,pandas里面有三种比较常用的方法#1. astype()强制转化数据类型#2. 通过创建自定义的函数进行数据转化#3. pandas提供的to_nueric()以及to_datetime()
Int64Index: 5 entries, 0 to 4
Data columns (total 10 columns):
Customer Number 5 non-null float64
Customer Name 5 non-null object
2016 5 non-null object
20