简介
名称 “Pandas” 源于“面板数据”(Panel Data)一词,是多维结构化数据集的计量经济学术语。pandas是一个处理excel的Python模块,它建造在numpy之上,许多用excel处理起来很复杂的任务如果用panda处理会很简单。下面对pandas以及其处理excel的方法进行简单介绍。
安装依赖
首先需要安装相关依赖,安装命令如下:
sudo python -m pip install xlwt xlrd sudo python -m pip install panda openpyxl
主要数据结构
pandas中有两个主要的数据结构:Series和DataFrame。
Series
Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引。为了方便理解,你可以把Series看着是一个有序字典。其中索引是连续的,从0开始。
from pandas import Series, DataFrame series = Series(["Jim", "Tom", "Lily"]) print(series)
输出如下,左边表示每个元素对应的索引,右边表示相应元素,索引从0开始。
0 Jim 1 Tom 2 Lily dtype: object
你可以使用 series.values和series.index 来获取元素和相应的索引。
print(series.values) print(series.index)
输出如下:
['Jim' 'Tom' 'Lily'] RangeIndex(start=0, stop=3, step=1)
可以用Series对象去和一些值进行比较,实际处理时会使用每个元素去与该值进行比较,比较后的结果也是一个Series对象。
series2 = Series([3, 6, 8, 7]) series3 = series2 > 5 print(series3) print(isinstance(series3, Series))
输出如下:
0 False 1 True 2 True 3 True dtype: bool True
在创建Series对象时可以指定索引,然后使用指定的索引去访问Series对象,未指定时用初始化的索引去访问。
series4 = Series([20, 30, 40], index=["Jan", "Feb", "Mar"]) print(series4) print(series4["Jan"])
输出如下:
Jan 20 Feb 30 Mar 40 dtype: int64 20
或者使用Series对象去访问Series对象
series5 = Series(["Feb", "Mar"]) series6 = series4 > 35 print(series5) print(series6) print(series4[series5]) print(series4[series6])
输出如下:
0 Feb 1 Mar dtype: object Jan False Feb False Mar True dtype: bool Feb 30 Mar 40 dtype: int64 Mar 40 dtype: int64
这里只对Series进行简单介绍,更多复杂功能请参考官方文档。
DataFrame
一个DataFrame表示一个表格,它包含一个经过排序的列表集。每一个列表都可以有不同的类型值(数字,字符串,布尔等等)。Datarame有行和列的索引;它可以被看作是一个Series的字典(每个Series共享一个索引)。
可以通过相等长度列表的字典来构建一个DataFrame。
data = {"name": ["Jim", "Tom", "Lily"], "age": ["18", "17", "17"]} dataFrame = DataFrame(data) print(dataFrame)
输出如下,这时对列名进行了排序。
age name 0 18 Jim 1 17 Tom 2 17 Lily
当然,你可以通过columns参数来指定列的排序。
data = {"name": ["Jim", "Tom", "Lily"], "age": ["18", "17", "17"]} dataFrame = DataFrame(data, columns=["name", "age"]) print(dataFrame)
输出如下:
name age 0 Jim 18 1 Tom 17 2 Lily 17
和Series中一样,如果你多传入了一个列,但它不包含在data中,那么在结果中,它会显示为NA值。
data = {"name": ["Jim", "Tom", "Lily"], "age": ["18", "17", "17"]} dataFrame = DataFrame(data, columns=["name", "age", "score"]) print(dataFrame)
输出如下:
name age score 0 Jim 18 NaN 1 Tom 17 NaN 2 Lily 17 NaN
参考
http://pandas.pydata.org/pandas-docs/stable/cookbook.html#cookbook
http://pda.readthedocs.io/en/latest/chp5.html#