通常这样导入依赖包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
创建对象
可以参考官方文档 http://pandas.pydata.org/pandas-docs/version/0.19.2/10min.html
通过传入一个列表建一个序列,默认索引为整数
>>> s = pd.Series([1, 2, 3, np.nan, 5, 6])
>>> s
0 1.0
1 2.0
2 3.0
3 NaN
4 5.0
5 6.0
dtype: float64
其中:NAN(NOt a Number) 表示不存在
- 通过numpy创建一个数组,并且用datetime作为索引和标记列名,创建一个DataFrame
其中pd.date_range('20130101', periods=6)
创建了一个时间序列,periods=6
表示有6个值,freq='D'
表时时间序列按天跨度,也可以指定为w(周)
、M(月)
等。
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
创建了一个DataFrame
,第一个参数表示要填充的数据,第二个参数表示行索引,第三个参数表示列标签,它们的大小要匹配。
- 使用一个可以转换成类序列的字典对象创建一个DataFrame
其中字典的每个key作为列标签,该key对应的value为该列的数据,行索引默认创建
查看数据
head()和tail()
可以使用head()
和tail()
查看一个DataFrame
和Series
对象的数据,head()
表示从头查起,tail()
表示从尾部,默认只查看五项元素,可以自定义。
Series对象:
DataFrame对象:
显示索引、行标和数据
分别使用index、columns
和values
属性访问
desctibe()
快速显示数据的汇总统计
转置
通过坐标轴排序
其中的
sort_index()
表示对行索引或者列标签进行排序,axis=1
表示对行标签进行排序,axis=0
表示对列索引进行排序,ascending=False
表示按降序排列
通过数据排序
sort_values()
表示对数据进行排序,by='B'
表示按照列标签的B进行排序,该关键字不可以传入列索引。
选择
虽然通过标准的python表达方法可以选取和设置元素,但是建议使用pandas的数据获取方式,即使用.at, .iat, .loc, .iloc
和 .ix
方法。
选取单行
选取单行数据,该方法得到一个Series
,可以等价于使用df.A
通过[ ]选择
该方式将数据表进行按列切片,可以选择按列索引和列序号的方式切
通过标签选择
- 使用
.loc
获得交叉部分的数据
>>> df.loc[dates[0]:dates[3],'A']
2013-01-01 -1.863928
2013-01-02 2.693466
2013-01-03 0.271626
2013-01-04 2.202905
Freq: D, Name: A, dtype: float64
其中datas就表示表中的数据,[0]表示按行取,也可以通过加列标签取出部分数据,如下:
>>> df.loc[dates[0],['A', 'B']]
A -1.863928
B 0.227029
- 通过标签选取多轴数据
其中
loc[ ]
的内容可用,
分割开,第一部分:
表示全部的行,第二部分['A','B']
表示选取A
和B
两列,第一部分还可以指定为部分行,采用行索引即可,如下:
通过位置选择
- 通过传入的整数表示的位置选择(按行选择)
- 通过整数切片选择(左行右列原则)
也可以通过传入了两个list来选定行和列,按照传入的整数选取,同样是左行右列原则:
- 获取确定的位置的值
布尔索引
使用单行的值去选择数据
选取A标签列大于0的所有数据
使用isin()过滤数据
df2['E'].isin(['two','four'])
表示在E
标签的列中选出有two
和four
的所有数据
缺失值
pandas主要使用np.nan代表缺失的值
丢掉任何有缺失值的行和列
填充缺失值
使用布尔值表示数据是否是nan
运算
统计
统计在大多数情况下不包含缺失值
默认对列进行求均值
传入参数1时表示对行求平均
应用
将函数应用于数据
合并
concat()
使用concat()
将pandas对象连接在一起
分组
本次使用的数据df:
- 使用groupby()分组,然后对结果应用一个sum()函数
- 按多个列进行分组形成分层索引,然后应用函数
时间序列
-
rng = pd.date_range('1/1/2012', periods=100, freq='S')
其中freq='S'
表示每个元素的跨度为秒
rng = pd.date_range('3/6/2012 00:00', periods=5, freq='D')
绘画
- 针对一个Series对象,调用
cumsum()
方法和plot()
方法即可
- 针对DateFrame对象,
plot()
函数会对每个列标签表示的数据调用plot()
存取数据
CVS文件
- 写入一个CVS文件
- 从CVS文件读取数据
Excel文件
- 写入excel文件
- 从excel文件读取数据
附:
以上均来自官方文档
如有错误,欢迎指正,谢谢!