(五)Pandas的数据结构及可视化

序列(Series)

1、由索引和对应的数值两部分组成
2、只能有两列:索引列和数据列
3、pd.Series([list],index=[list]),index不填则默认为从0开始

import pandas as pd
stock
Out[4]: 
array([[ 0.003731,  0.021066, -0.004854,  0.006098, -0.00606 ],
       [-0.001838,  0.001842, -0.016544, -0.003738,  0.003752],
       [-0.003087, -0.000344, -0.033391,  0.007123,  0.004597],
       [-0.024112,  0.011704, -0.029563, -0.01457 ,  0.016129]])
series1=pd.Series(stock[:,0],index=['股票a','股票b','股票c','股票d']);series1
#通过stock数组生成序列,选取每支股票首个交易日的数据
Out[5]: 
股票a    0.003731
股票b   -0.001838
股票c   -0.003087
股票d   -0.024112
dtype: float64
series2=pd.Series(stock[0],index=range(1,6));series2
#选取第一支股票每天的收益率数据生成序列
Out[8]: 
1    0.003731
2    0.021066
3   -0.004854
4    0.006098
5   -0.006060
dtype: float64
series3=pd.Series({'a':10,'b':20,'c':30,'d':40,'e':50});series3
#字典自带索引
Out[14]: 
a    10
b    20
c    30
d    40
e    50
dtype: int64

数据框(DataFrame)

1、序列是一维数据,数据框是多维数据
2、第一个参数是data,第二个参数index是行名,第三个参数columns是列名
3、除了从excel和csv文件导入数据,还可从wind等数据库的API接口导入

数据框的建立和导出

sid=['股票a','股票b','股票c','股票d']
date=['2018-09-03','2018-09-04','2018-09-05','2018-09-06','2018-09-07']
stockre=pd.DataFrame(stock,sid,date);stockre
Out[18]: 
     2018-09-03  2018-09-04  2018-09-05  2018-09-06  2018-09-07
股票a    0.003731    0.021066   -0.004854    0.006098   -0.006060
股票b   -0.001838    0.001842   -0.016544   -0.003738    0.003752
股票c   -0.003087   -0.000344   -0.033391    0.007123    0.004597
股票d   -0.024112    0.011704   -0.029563   -0.014570    0.016129
stockre.to_excel('C:/Users/lenovo/Desktop/return.xlsx')
#以excel(或CSV、txt)读出文件,保存在桌面,命名为return

外部数据导入生成数据框

close=pd.read_csv('C:/Users/lenovo/Desktop/quantitative investment/closeprice.csv',encoding='gb18030')
#读入一个csv文件。表格中含有中文或者特殊字符,编码改为'gb18030'
close
Out[35]: 
   ticker secShortName  tradeDate  closePrice
0       1         平安银行  2017/6/20        9.12
1       2          万科A  2017/6/20       21.03
2       4         国农科技  2017/6/20       27.03
3       5         世纪星源  2017/6/20        5.45
4       6         深振业A  2017/6/20        8.87
5       7          全新好  2017/6/20       15.87
close2=pd.read_excel('C:/Desktop/closeprice.xlsx',sheet_name='sheet1',header=0,index_col=0)
#sheet_name为要导入的工作表,header指定列名的行,index_col指定索引的列

数据框的可视化

1、kind表示图形类型,可选line,bar,hist,pie,scatter等;
2、subplots=True表示有子图,默认无;
3、若有子图,sharex=True表示共用x轴刻度及标签,默认否,sharey同理;
4、use_index表示默认用索引做x轴;
5、若有子图,layout=(2,2)表示子图4个,两行两列;
6、figsize=(10,8)表示图形尺寸大小;
7、title=‘2018沪深300指数走势’;
8、grid=True表示有网格,默认无;
9、fontsize设置轴刻度字体大小,单位是磅。

import warnings
# filter warnings
warnings.filterwarnings('ignore')
# 正常显示中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 以黑体字体显示中文
mpl.rcParams['axes.unicode_minus']=False
# 解决图像中负号显示为方块的问题
HS300=pd.read_excel('C:/Users/lenovo/Desktop/quantitative investment/沪深300指数.xlsx',header=0,index_col=0)
HS300.head()
Out[39]: 
                 开盘点位       最高点位       最低点位       收盘点位
日期                                                    
2018-01-02  4045.2086  4087.7789  4045.2086  4087.4012
2018-01-03  4091.4607  4140.0543  4088.7302  4111.3925
2018-01-04  4114.1213  4137.6420  4105.8858  4128.8119
2018-01-05  4133.3439  4151.2818  4123.2817  4138.7505
2018-01-08  4140.8545  4166.3182  4127.3081  4160.1595
HS300.plot(kind='line',subplots=True,sharex=True,layout=(2,2),figsize=(10,8),title='2018沪深300指数走势',grid=True,fontsize=13)
Out[40]:

在这里插入图片描述

发布了31 篇原创文章 · 获赞 2 · 访问量 1618

猜你喜欢

转载自blog.csdn.net/hzk427/article/details/103838204