接触Pandas有一段时间,但一直未能系统的进行过总结。最近开始接触机器学习,用pandas的地方颇多,因此专门重新整理以下。
首先,Pandas 作为Python处理矩阵类数据的王牌利器,其官方文档相当丰富而且详细,为了方便学习Pandas官方竟然给了一个10min中的入门教程,链接如下:http://pandas.pydata.org/pandas-docs/stable/10min.html 。
教程很详细,但是对于入门者而言,个人感觉还是缺少一些说明。因此特意增加了一些相关的注释和说明。详细内容如下:
- 第一步:加载Pandas 库
import pandas as pd import numpy as np import matplotlib.pyplot as plt
上述为加载的pandas 库,由于pandas中的维度元素主要是numpy,所以通常也将numpy一起加载,而matplotlib是一个画图的工具,为了方便后面展示需要,因此也加载了一份。这里需要注意的是3个加载的库都使用了缩写的简称pd,np,plt缩写的名字虽无正式约定,但是已经约定俗成,因此建议保留这种缩写的方式。
- 创建一个Series对象
官方的定义:Series is a one-dimensional labeled array capable of holding any data type (integers, strings, floating point numbers, Python objects, etc.). The axis labels are collectively referred to as the index.
Series 是一个一维带标记的数组,它由一组数据(integers, strings, floating point numbers, Python objects, etc.)以及一组与之相关的索引组成。可以将Series看成是一个定长的有序字典,索引是到数据值的一个映射。
最长用的创建Series的方式:
s = pd.Series(data, index=index)
data 可以是任意的一种Numpy类型:
- a Python dict
- an ndarray
- a scalar value (like 5)
Index是一组索引标签。如下所示:
>>> import pandas as pd >>> import numpy as np >>> import matplotlib.pyplot as plt >>> s = pd.Series([1,3,5,np.nan,6,8]) >>> s 0 1.0 1 3.0 2 5.0 3 NaN 4 6.0 5 8.0 dtype: float64
上文没有使用index,因此自动生成从0开始的index(注意:index并非只能是数值,也可以是字符串等值,但是需要自己定义).
代码中的np.nan是代表空值的含义。
- 通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame
>>> dates = pd.date_range('20130101', periods=6) >>> dates DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D') >>> df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) >>> df A B C D 2013-01-01 -1.456158 -0.017003 0.043328 0.314046 2013-01-02 -0.443706 -1.127461 0.122404 0.358885 2013-01-03 -1.004546 -0.029662 1.321131 -1.048084 2013-01-04 -0.103759 0.287075 -1.101669 -0.367991 2013-01-05 -0.379868 1.898191 3.520912 -0.384936 2013-01-06 -1.792955 1.118273 -0.279532 0.281036