20200304 matplotlib图表使用及金融基础知识

昨日回顾

pandas的两大数据结构: 

Series 

基于numpy构建 

DataFrame 

基于Series构建 

matplotlib

jupyter中使用matplotlib的方法

介绍

Matplotlib是Python的一个2D图形库,能够生成各种格式的图形(诸如折线图,散点图,直方图等等),界面可交互(可以利用鼠标对生成图形进行点击操作),同时该2D图形库跨平台,即既可以在Python脚本中编码操作,也可以在Jupyter Notebook中使用,以及其他平台都可以很方便的使用Matplotlib图形库,而且生成图形质量较高,甚至可以达到出版级别。需要注意的是,在相关Python软件中调用Matplotlib图形库时,需要利用shell进行单独安装,假如使用Jupyter Notebook时,相关图形库已直接配置在软件内,不过其生成的图形无法进行交互,而是内嵌在Jupyter Notebook生成界面内。

matplotlib参数配置

解决中文乱码

mac

首先需要设置: 

from matplotlib.font_manager import FontProperties 

font=FontProperties(fname='/Users/shangzekai/Downloads/font/simhei.ttf') 

用法: 

plt.title('标题', FontProperties=font, fontsize=20, color='red') ### 设置标 

题

windows

只需要在开头设置即可: 

plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 

用法: 

plt.title('标题', fontsize=20, color='red') ### 设置标题折线图 

过滤报错

# 过滤warning日志
import warnings
warnings.filterwarnings('ignore')

简单使用

在Python中使用Matplotlib时,常用到Matplotlib模块和Numpy模块,下面以一个简单的线性图形的例子进行说明:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3.50)
y_1 = 2*x+1
plt.plot(x,y_1)

plt.show()

  通过上述生成如下一次函数图形,首先对上述代码进行简要解说:

  • 首先绘图需要导入matplotlib.pyplot,其中pyplot是matplotlib的绘图框架,功能类似于于MATLAB的绘图功能,图形绘制需要利用到pyplot,即 plt.plot()*plt.show()*
  • 程序通过Numpy生成绘图所需数据,Numpy是Python的一个数据处理包,极大的方便了Python在科学计算方面的应用,在程序中通过使用Numpy内置 *linspace()*生成区间在[-3,3]的数组。

假如需要图像上具有多个函数图形,可进行如下操作:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3.50)
y_1 = 2*x+1
y_2 = x**2

# plt.figure(num=1,figsize=(8,5))
plt.plot(x,y_1)
plt.plot(x,y_2)

plt.show()

实例

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 配置中文乱码字体
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False 
# 读取文件
movies = pd.read_csv('./douban_movie.csv')
# 过滤warning日志
import warnings
warnings.filterwarnings('ignore')

柱状图

案例1 统计电影每个国家的电影数量

res = movies.groupby('产地').size().sort_values(ascending=False)    
# size() 显示数量聚合,sort_values(ascending=False)进行排序
res 
产地
美国      11866
日本       5053
中国大陆     3802
中国香港     2852
法国       2817
英国       2762
其他       1920
韩国       1351
德国        902
意大利       749
加拿大       723
中国台湾      618
西班牙       447
印度        357
澳大利亚      300
泰国        294
苏联        256
俄罗斯       221
丹麦        198
瑞典        193
波兰        181
荷兰        155
比利时       139
西德        130
墨西哥       119
阿根廷       116
USA       113
巴西        101
dtype: int64

设置柱状图的时候,x轴即是索引index y轴就是values

x = res.index
y = res.values


# 设置画布大小
plt.figure(figsize=(20,6))

# 标题设置
plt.title('每个国家的电影数量',size=30)
# 设置坐标轴的名称
plt.xlabel('产地',size=15)
plt.ylabel('数量',size=15)


# 设置x轴的刻度   rotation 将刻度进行角度设置
plt.xticks(size=15,rotation=45)


# 将数量显示到对应的柱状上
for a,b in zip(x,y):
    # print(a,b)
    # 将值写到相应的位置   
        # 参数设置(x轴位置,y轴位置,写的数据)   ha:水平居中 ,
        
    plt.text(a,b+100,b,ha='center',size=15)

    
# plt.savefig('./图片.png')   # 保存图片


# 柱状图 bar   设置颜色 ,color='red'
plt.bar(x,y)     
plt.show()

img

折线图

案例2 统计每一年电影数量的折线图

movies.groupby('年代').size().sort_index()  # 以索引进行排序 sort_index()
# 最后会有垃圾数据,需要使用切片进行清洗
res = movies.groupby('年代').size().sort_index()[:-2]
res
年代
1888       2
1890       1
1892       1
1894       3
1895       8
        ... 
2012    2042
2013    2001
2014    1887
2015    1592
2016     257
Length: 126, dtype: int64
x = res.index
y = res.values

# 设置画布以及坐标轴显示
plt.figure(figsize=(10,6))
plt.title('每一年电影的数量折线图',color='red',size=20)
plt.xlabel('年代',color='blue',size=15)
plt.ylabel('数量',color='blue',size=15)

# 画折线图
plt.plot(x,y)
plt.show()

img

饼图

案例3 电影时长的饼图分布

# 分布的范围 0-60  60-90  90-120  120-1000
# pd.cut([1,2,3,4],(0,60,90,120,1000))   第一个参数是待分割的数据,第二个是分割的范围
#索引获取所有时长
movie_time = movies['时长']
res_time = pd.cut(movie_time,(0,60,90,120,1000)).value_counts()
# 使用value_counts()对数据进行聚合计数
res_time
(90, 120]      16578
(0, 60]        10324
(60, 90]        7727
(120, 1000]     4104
Name: 时长, dtype: int64
# 分别获取索引与值
x = res_time.index
y = res_time.values


# 设置画布
plt.figure(figsize=(10,6))

plt.title('电影时长分布图',color='red',size=20)
plt.xlabel('年代',color='blue',size=15)
plt.ylabel('数量',color='blue',size=15)


# 绘制饼图  
patchs, l_text, p_text = plt.pie(y,labels=x,autopct='%.2f%%')   # 控制显示的小数位
# 有三个返回值 
    # l_text就是一个label的列表
    # p_text就是百分比的值列表
    # patchs就是个补丁(无)
    
    
for l in l_text:
    # 通过set进行设置
    l.set_size(15)
    l.set_color('red')
    
    
for l in p_text:
    # 通过set进行设置
    l.set_size(15)
    l.set_color('white')
    
    
plt.show()

img

其他

echarts和highcharts

seaborn 加强版的matplotlib

金融基础

金融基础知识和python金融量化

  • 股票
  • 期权
    • 创业公司开不起相应的工资, 会以期权+ 少部分工资的形式给你
  • 聚宽 (完善金融知识 + python)
1、金融 
1.1、什么是金融 金就是钱,融就是玩,说白了搞金融就是在玩钱。专业点来说就是对现有资源进行重新整合,实现价值和利润的等效流通。 搞金融其实是有一定赌的性质,但是它和赌博不一样,他对社会是有好处的,为什么国际禁止赌博而不禁止金融。因为金钱流通起 来对我们的国家的发展是有好处的,有消费、有生产,国家的经济才能好。不然所有的钱都存在地窖里,都不用,没有流通,那国家 的经济一定不景气。 比如现在有一个很有想法的创业者,但是他没有钱,一个亿万富翁投资给他500万,然后他拿这500万创业,那如果他的公司上市怎 么样的,升值了,那这个亿万富翁的钱是不是也升值了。那对于这个创业者来说,他本来没钱,通过金融变有钱了。 
1.2、金融工具 在金融市场中可交易的金融资产都可以称作金融工具。 股票 期货 黄金 外汇 基金 ..... 接下来主要就股票进行简单介绍 


2、股票 
股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东。 作用: 出资证明、证明股东身份、对公司经营发表意见 公司分红、交易获利 
2.1、股票分类 A股:人民币普通股票。它是由我国境内的公司发行,供境内机构、组织或者个人(不含台、港、澳投资者)以人民币认购和交易的 普通股股票(T + 1,,涨跌幅10%) B股:人民币特种股票。它是以人民币标明面值,以外币认购和买卖,在境内(上海、深圳)证券交易所上市交易的(T + 1,T + 3) H股:注册地在内地、上市地在香港的外资股(T + 0,涨跌幅不设限制) N股:美国纽约上市 S股:新加坡上市 
2.2、股票市场构成 上市公司 投资者(包括机构投资者) 证监会、证券业协会、交易所 证券中介机构 交易所 上海证券交易所:只有一个主板(沪指) 深圳证券交易所: 主板:大型成熟企业(深成指) 中小板:经营规模较小 创业板:尚处于成长期的创业企业 
2.3、影响股价的因素 公司自身因素:股票自身价值是决定股价最基本的因素,而这主要取决于发行公司的经营业绩、资信水平以及连带而来的股息红 利派发状况、发展前景、股票预期收益水平等。 行业因素:行业在国民经济中地位的变更,行业的发展前景和发展潜力,新兴行业引来的冲击等,以及上市公司在行业中所处的 位置,经营业绩,经营状况,资金组合的改变及领导层人事变动等都会影响相关股票的价格。 
市场因素:投资者的动向,大户的意向和操纵,公司间的合作或相互持股,信用交易和期货交易的增减,投机者的套利行为,公 司的增资方式和增资额度等,均可能对股价形成较大影响。 心理因素:情绪波动,判断失误,盲目追随大户、狂抛抢购 经济因素:经济周期,国家的财政状况,金融环境,国际收支状况,行业经济地位的变化,国家汇率的调整等 政治因素 
2.4、股票买卖(A股) 委托买卖股票 个人不能直接买卖,需要在券商开户,进行委托购买 股票交易日:周一到周五(非法定节假日和交易所休市日) 股票交易时间 9:15 - 9:25 开盘集合竞价时间 9:30 - 11:30 前市,连续竞价时间 13:00-15:00 后市,连续竞价时间 14:57-15:00 收盘集合竞价时间 T + 1交易制度 当日买入的股票第二个交易日才可以卖出 当日卖出股票回来的钱,可以立即买新股票,但是要到第二天才能转出 
2.5、专业名词 【多头】:预期股票会上涨的人。看涨 【空头】:预期股票价格会下跌的人。看跌 【多头市场】:也称为牛市。就是股票价格普遍上涨的市场。 【空头市场】:股价呈长期下降趋势的市场,空头市场中,股价的变动情况是大跌小涨。亦称熊市。 利多:是刺激股价上涨,对多头有利的因素和消息 利空:促使股价下跌,对空头有利的因素和消息。 【多头套牢】:指预测股价将上涨,买进后却一路下跌。 【空头套牢】:指预测股价将下跌,将所有股票放空卖出,但股价却一直上涨。 【ST股】:指境内公司连续两年亏损,被进行特别处理的股票。*ST股票是指境内上市公司连续三年亏损的股票。 
2.6、涨停、跌停 1 昨天收盘时的价格作为0基准,规定一个A股市场的股票一天的涨跌幅度为±10%,规定S或者ST打头的股票一天涨跌幅限度为 ±5%。 2 新发行第一天上市的股票(在股票前面加N),涨跌幅不受限制,第二天恢复正常。 3 分红送股后复牌,复牌当日不受涨跌幅限制。 4 股改复牌后的股票,复牌当日不受涨跌幅限制。 
2.7、股票代码 沪市股票代码是以6打头,深市股票代码是以0打头,创业板股票代码以3打头。 不知到代码可以用首字母查找。 2.8、各股的分时走势 最新:最新成交价。 开盘:开盘价,即当天开盘第一笔交易的价格 集合竞价:是指在每个交易日上午9:15—9:25,由投资者按照自己所能接受的心理价格自由进行买卖申报,电脑交易主机系统对 全部有效委托进行一次集中撮合处理过程。在集合竞价时间内的有效委托报单未成交,则自动有效进入9:30开始的连续竞价。 集合定价由电脑交易处理系统对全部申报按照价格优先、时间优先的原则排序,并在此基础上,找出一个基准价格,使它同时能满足 以下3个条件:  1.成交量最大。 2.高于基准价格的买入申报和低于基准价格的卖出申报全部满足(成交)。 3.与基准价格相同的买卖双方中有一方申报全部满足(成交)。 收盘:收盘时的价格。收盘价的产生:沪市为当日最后一笔交易前一分钟所有交易的成交量加权平均价。深市为前三分钟。 最高:当日最高交易价。 最低:当日最低交易价。 均价:当日的平均价格。 涨跌:以昨天收盘价为基准的涨跌幅度。 震幅:当日的最高价与最低价的幅度。 总手:此股票当日总共成交的总数。内盘外盘的总和。 金额:此股票当日总共成交的金额。 现手:现时的成交量。 涨停:今天最高可以涨到多少。 跌停:今天最低可以跌到多少。 量比:量比是衡量相对成交量的指标。其公式为:量比=现成交总手/(过去5日平均每分钟成交量×当日累计开市时间(分))。 换手:指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。其公式为成交量/流通总股数×100% 市盈(动):动态市盈率,指在一个考察期(通常为12个月的时间)内,股票的价格和每股收益的比例。投资者通常利用该比例值估 量某股票的投资价值,或者用该指标在不同公司的股票之间进行比较。 委比:是衡量某一时段内,买盘和卖盘强弱的技术指标。它的计算公式为: 委比=(委买手数-委卖手数)/(委买手数+委卖手 数)×100% 颜色:绿跌红涨。 外盘:以委托卖出价成交的手数。代表买方的力量。 内盘:以委托买入价成交的手数。代表卖方的力量。 盘口:是在股市交易过程中,看盘观察交易动向的俗称。 S & B : S=SELL( 卖出 ) ,或以绿色箭头表示 ;B=BUY( 买入 ) ,或以红色箭头表示 。 2.9、K线图 K线图有直观、立体感强、携带信息量大的特点,能充分显示股价趋势的强弱、买卖双方力量平衡的变化,预测后市走向较准确, 是各类传播媒介、电脑实时分析系统应用较多的技术分析手段。 
3、金融分析 基本面分析 
宏观经济面分析:国家的财政政策、货币政策等 行业分析 公司分析:财务数据、业绩报告等 技术面分析:各项技术指标 K线 MA(均线) KDJ(随机指标) MACD(指数平滑移动平均线)

猜你喜欢

转载自www.cnblogs.com/fwzzz/p/12460469.html
今日推荐