Pandas 是基于 Numpy 构建的,让以 Numpy 为中心的应用变得更加简单
Pandas 提供了大量快速便捷地处理数据的函数和方法,这也是使 Pandas 成为强大的高效的数据分析环境的重要因素之一
Pandas 的数据结构主要有三种
- Series
- DataFrame
- Panel
一维数组 Series
Series 是由一组数据(各种 Numpy 数据类型),以及一组与之相关的标签数据(即索引)组成。仅上一组数据即可产生最简单的 Series,也可以通过传递一个 list 对象来创建一个 Series 。需要注意的是,Pandas 会默认创建整形索引
Series 中只允许在座相同类型的数据,以提高运算效率
# 引用 pandas 库,并重命名为 pd
import pandas as pd
pd_series = pd.Series(['Python','C','C#','C++','Java','VB','VC'])
print("显示Series中的内容\n", pd_series)
print("显示Series中的索引\n", pd_series.index)
print("显示Series中的数据\n", pd_series.values)
# 创建带指定索引的Serices
other_series = pd.Series(['Python','C','C#','C++','Java','VB','VC'], index = ['a','b','c','d','e','f','g'])
print("显示Series中的内容\n:", other_series)
显示Series中的内容
0 Python
1 C
2 C#
3 C++
4 Java
5 VB
6 VC
dtype: object
显示Series中的索引
Int64Index([0, 1, 2, 3, 4, 5, 6], dtype='int64')
显示Series中的数据
['Python' 'C' 'C#' 'C++' 'Java' 'VB' 'VC']
显示Series中的内容:
a Python
b C
c C#
d C++
e Java
f VB
g VC
dtype: object
二维数组 DataFrame
DataFrame 是一个表格型数据结构,它含有一组有序的列,每一列的数据结构都是相同的,而不同列之间则可以是不同的数据类型。或者以数据库进行类型,DataFrame 中的每一行是一个记录,名称为 Index 的一个元素,而每一列则为一个字段,是这个记录的一个属性。DataFrame 既有行的索引也有列的索引,可以被看作由 Series 组成的字典(共用一个索引)
DataFrame 是个二维数组,相当于表结构。它的列称为columns,行称为index。也可以将DataFrame理解为Series的容器
创建 DataFrame
# 引用 pandas 库,并重命名为 pd
import pandas as pd
data = {
"name":["yahoo", "google", "facebook"], "marks": [200,400,800], "price": [9, 3, 7]}
pd_dataframe = pd.DataFrame(data)
print("显示DataFrame的数据")
print(pd_dataframe)
显示DataFrame的数据
marks name price
0 200 yahoo 9
1 400 google 3
2 800 facebook 7
提示,因为字典是无序的,所以最后转换成DataFrame后,列的顺序可能与定义的时候是不一样的
查看数据
先利用get_price
函数来获取某股票一段时间内的数据,其语法如下:
get_price(security, start_date=None, end_date=None, frequency='daily', fields=None, skip_paused=False, fq='pre', count=None)
参数解析:
-
security
:一只股票的代码或一组股票代码的 list -
start_date
: 开始时间,与参数count
二选一,不可同时使用。如果两者都没有设置,则start_date
生效,默认时间为’2015-01-01’。如果取分钟数据,时间可以精确到分钟 -
end_date
: 结束时间,默认是’2015-12-31’,包含此日期。当取分钟数据时,如果只有日期,则日内时间等同于’00:00:00’,所以返回的数据不包括 end_date 这一天 -
frequency
: 单位时间长度,几天或者几分钟,默认是 daily ,即表示1天。现在支持- Xd 几天
- Xm 几分钟
- daily 1天
- minute 1分钟
需要注意的是,当X>1时,fields 只支持 [‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘money’] 这几个标准字段
-
fields
: 字符串 list,选择要获取的行情数据字段,默认是 None(表示 [‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘money’] 这几个标准字段)。参数 felids 支持 SecurityUnitData 里面的所有基本属性,包含:[‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘money’, ‘factor’, ‘high_limit’, ‘low_limit’, ‘avg’, ‘pre_close’, ‘paused’] -
sikp_paused
:是否跳过不易日期(包括停牌、未上市或者退市后数据者为 nan。需要注意的是,该参数默认为 False ,即不跳过不交易日期。如果当该参数是 True 时,只能选取一只股票的信息 -
fq
: 复权选项。参数值设为 ‘pre’,表示前复权,为默认设置;参数值为 None,表示不复权,返回实际价格;参数值设置为 ‘post’,表示后复权 -
count
:与 start_date 二选一,不可同时使用。参数 count 表示数量,返回结果集的行数,表示获取 end_date 之前几个 frequency 的数据
示例代码:
# 引用 pandas 库,并重命名为 pd
import pandas as pd
# 通过get_price函数获取一段时间内某股票的数据
date_frame = get_price('000009.XSHE',
start_date='2018-04-03',