Python 数据分析 常用类库

144 阅读5分钟

常用类库

使用anaconda进行第三方类库的下载管理,一些类库默认channel中不存在,需要使用anaconda的pip进行安装:

命令行进入anaconda的bin目录,使用pip3 install 类库名,进行安装

Numpy

数值计算

常用函数

函数示例用途
random.normalrandom.normal(loc=0.0, scale=1.0, size=1000)
loc:期望值,scale:标准差即振幅/离散程度,size:数量
生成正态分布序列
random.randintnumpy.random.randint(low, high=None, size=None, dtype=’l’)
生成随机整数
random.randnnumpy.random.randn (2,3)
返回2行3列矩阵,由标准正态分布样本填充
标准正态分布中返回一个或多个样本
random.randnumpy.random.rand (d0,d1,…dn)标准正态分布中随机样本位于 [0, 1) 中
rangerange(0,10,2)
从0到10步长为2取5个数,左闭右开
取数
rollroll(data,1)将序列中的数值循环右移1位
linspacelinspace(0.5, 7.5, 1000)
起始值/终点值/数量
创建等差数列
wherewhere(condition, x, y)x if condition else y
cumsum/cumproddata.cumsum()/cumprod()返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array
zeroszeros(4, 7)
4X7的二维矩阵
数组转矩阵,缺失数据用0填充。类似的还有ones()、empty()
shapematrix = [[1, 1, 1], [2, 2, 2]] print(np.shape(matrix)) --> [2,3]
2行3列
返回对象的形状
signsign(x - y)
x > y 返回 1.0
x < y 返回-1.0
获取差值符号

Panda

数据分析和统计

常用函数

函数示例用途
data_rangedate_range('2010-01-01',freq='D',periods=1000),
起始时间/时间间隔/数量
生成DatetimeIndex格式的日期序列
DataFrameDataFrame({'列名': 数据集合, 'price range': pct_change}, index=dd)用于生成DataFrame
DataReader#从雅虎获取上证指数的2017.1.1日至今的交易数据
df_stockload = pandas_datareader.data.DataReader("000001.SS", "yahoo", datetime.datetime(2017,1,1), datetime.date.today())
获取股票数据
to_datetimepd.to_datetime(df_sh.date)转换行索引为时间索引
dropdrop(axis=1, columns='date', inplace=True)删除某一列
valuesprint(df_stockload.values)
# 访问全部元素数值 """ [[ 3349.05297852 3314.03100586 3314.03100586 3348.32592773 1. 3348.32592773] [ 3379.91503906 3345.2890625 3347.74291992 3369.10791016 2. 3369.10791016] ...... [ 3495.09301758 3424.41894531 3478.66992188 3446.97998047 3. 3446.97998047] [ 3463.1640625 3388.86010742 3419.22509766 3462.08105469 4. 3462.08105469]] """
访问 DataFrame 全部元素数值,以 numpy.ndarray 数据类型返回
index/columns查看行索引/列索引信息
locDataFrame.loc['2018-01-02',['High','Low']]
选取了 '2018-01-02' 行对应的 'High','Low' 这两列的元素内容
通过标签方式选取数据
ilocDataFrame.iloc[0:2]
选取了前两行,所有列对应的元素。
DataFrame.iloc[0:2,0:1]
选取了前两行,第一列对应的元素。
DataFrame.iloc[[0,2],[0,1]]
访问到了第 0 行和第 2 行,第一列和第二列对应的元素
通过位置方式选取数据
ix废弃结合 loc 和 iloc 的特点,采用混合标签和位置的方式访问元素
rollingDataFrame.rolling(window=20).mean()
20元素的均值
获取窗口内元素
dropnaDataFrame.rolling.dropna(axis=0,how='any',inplace=True)#NAN值删除
参数 axis=0 表示删除包含缺失值行,axis=1 表示删除包含缺失值列;参数 how=any 表示只要有一个缺失值就删除该行或列,how=all 表示只有当所有值都为缺失值时才删除该行或列
axis的解释:www.cnblogs.com/rrttp/p/802…
删除包含nan值的行或列
apply# 求每列的最大值与最小值的差
a = df.apply(lambda row:row.max()-row.min())
# 求每行的最大值与最小值的差
b = df.apply(lambda column:column.max()-column.min(), axis=1)
blog.csdn.net/Evan_Blog/a…
将函数应用到由列或行形成的一维数组上
resampleDataFrame.price.resample('1min', closed='left', label='left').ohlc()
resample函数参数
ohlc() 用于汇集开盘价、最高价、最低价、收盘价等数据
数据进行时间序列上的重采样

Tushare

免费、开源的 python 财经数据接口包

常用函数

函数示例用途
旧版-get_hist_dataget_hist_data('sh',start='2017-01-01',end=datetime.datetime.now().strftime('%Y-%m-%d'))
获取上证指数 2017 年 1 月 1 日至今的交易数据
返回基本的开盘价(open)、最高价(high)、收盘价(close)等数据外,还包括涨跌幅、均价等指标数据,但是它的缺点是不能获取股票自上市以来的所有日线数据
旧版-get_k_data#get_k_data 返回2008年数据 df_sh=ts.get_k_data('sh',start='2008-01-01',end=datetime.datetime.now().strftime('%Y-%m-%d')) print(df_sh.head())获取数据的速度更快些,可以返回每一只股票从上市开始到当前交易日的所有日线数据
新版-dailydaily(ts_code='000001.SZ', start_date='20180101', end_date='20190101')获取数据

AkShare

基于 Python 的开源金融数据接口库

常用函数

函数示例用途
stock_zh_a_spotak.stock_zh_a_spot()单次返回所有 A 股上市公司的实时行情数据
stock_zh_a_dailystock_zh_a_daily(symbol="sh600000", factor="")某A股上市公司的所有历史行情

Matplotlib

绘图

常用函数

函数示例用途
figurefigure(figsize=(12, 8))
长度/宽度
创建图表并设置大小
plotplot(x, y, '--g', lw=2, label='sin(x)')
# lw:line width,用于设置线条宽度
# '--g':结合linestyle和color,线条使用虚线,颜色使用绿色
# label:设置线条的标签为'sin(x)'
# c:颜色
绘制线条图形
xlim/ylimxlim(0, 10) ylim(-1.5, 1.5)调整坐标刻度范围
xlabel/ylabelplt.xlabel('X axis') plt.ylabel('Y axis')设置x轴/y轴的显示标签
xtickets/yticketsplt.xticks(np.arange(0,10,2),['2015-07-02','2015-08-02','2015-09-02','2015-10-02','2015-11-02'],rotation=45)
location 为浮点数或整数组成的列表,表示坐标轴上坐标的位置。labels 是与 location 等长的字符串列表,表示坐标的显示标签。rotation 参数可旋转调节坐标标签,当坐标密集时可避免标签重叠
设置x轴/y轴的坐标标签
grid()plt.grid(True, ls=':', color='r', alpha=0.5)设置网格线条
title()设置标题
legendplt.legend(loc='upper right')
upper left(左上角)、upper center(中上)、upper right(右上角)、lower left(左下角)、 lower center(中下)、 lower right(右下)
增加图例显示,当多条曲线显示在同一张图中时,便于识别不同的曲线

绘图效果展示