怎样用python制表_用Python绘图和制表(附泰坦尼克号案例)

数据可视化:

·我们生活中常见的图形

·数据可视化基础

·绘图包Mateplotlib如何使用?

·如何使用pandas绘图?

·如何用Notebook制作数据分析报告

1生活中常见的图形

技术成熟度“几字形”曲线

分为萌芽期、过热期、低谷期、复苏期、成熟期。

库布勒罗斯转变曲线

在面对一个有用的技能时,你是像上图中的拒绝、逃离现实、愤怒还是最终取得成功呢?

2数据可视化基础知识

画板figure

画纸Axes/Subplot

坐标轴Axis

坐标轴x/y label

标题title

主要刻度Major tick

次要刻度Minor tick

图例Legend

网格Grid

线Line

点Markers

数值类型:散点图scatter plot

时间顺序:折线图line plot

分类数据:柱状图bar plot

颜色:热图heatmap

3python绘图包matplotlib

首先在conda中安装,代码:conda install matplotlib

·通过pyplot绘图

#导入matplotlib的pyplot模块

import matplotlib.pyplot as plt

'''

第1步:定义x和y坐标轴上的点

'''

#x坐标轴上点的数值

x=[1,2,3,4]

#y坐标轴上点的数值

y=[1,4,9,16]

'''

第2步:使用plot绘制线条

'''

plt.plot(x,y)

'''

第3步:显示图形

'''

plt.show(x,y)

·线条属性

'''

color表示颜色

marker:点的形状

linestyle:线条的形状

'''

plt.plot(x,y,color='r',marker='o',linestyle='dashed')

'''

axis:坐标轴范围

语法axis[xmin,xmax,ymin,ymax]

'''

plt.axis([0,6,0,20])

plt.show()

·多图

import numpy as np

t=np.arange(0,5,0.2)

t

array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,

2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2,

4.4, 4.6, 4.8])

#线条1

x1=y1=t

#线条2

x2=x1

y2=t**2

#线条3

x3=x1

y3=t**3

#使用plot绘制线条

linesList=plt.plot(x1,y1,

x2,y2,

x3,y3)

#使用setp方法可以同时设置多个线条属性

plt.setp(linesList,color='r')

plt.show()

·添加文本

'''

第1步:定义x和y坐标轴上的点

'''

#x坐标轴上点的数值

x=[1,2,3,4]

#y坐标轴上点的数值

y=[1,4,9,16]

'''

第2步:使用plot绘制线条

'''

plt.plot(x,y)

'''

添加文本

'''

#x轴文本

plt.xlabel('x轴坐标')

#y轴文本

plt.ylabel('y轴坐标')

#标题

plt.title('标题')

#添加注释

plt.annotate('我是注释',xy=(2,5),xytext=(2,10),

arrowprops=dict(facecolor='black',shrink=0.01),

)

'''

第3步:显示图形

'''

plt.show()

修改后:

·如何创建多个画板

#1创建画板

fig=plt.figure(1)

#2创建画纸

ax1=plt.subplot(2,1,1)

#3在画纸1上绘画

plt.plot([1,2,3])

#4在画纸2上绘画

ax2=plt.subplot(2,1,2)

plt.plot([4,5,6])

plt.show()

4如何使用pandas绘图

互联网数据获取:conda install pandas-datareader

·导入包

#数据分析包

import pandas as pd

'''

互联数据获取包

注意:安装包的命令中的连接符是‘-’也就是pandas-datareader。

但是这里导入包的连接符是下划线‘_’,也就是pandas-datareader

这里一定要注意安装和导入包这两个连接符是不一样的,不然无法导入使用

'''

from pandas_datareader import data

·6家公司

'''

获取国内股票数据的方式是:“股票代码”+“对应股市”(港股为.hk,A股为.ss)

例如腾讯是港股是:0700.hk

'''

#字典:6家公司的股票

gafataDict={'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',

'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700.hk'}

·获取数据

# 获取哪段时间范围的股票数据

start_date = '2017-01-01'

end_date = '2018-01-01'

#从雅虎财经数据源(get_data_yahoo)获取阿里巴巴股票数据

babaDf=data.get_data_yahoo(gafataDict['阿里巴巴'],start_date, end_date)

·查看数据

#查看前5行数据

babaDf.head()

#查看数据集情况

babaDf.info()

·股票时间

babaDf.plot(x=babaDf.index,y='Close')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2017年阿里巴巴股价走势')

#显示网格

plt.grid(True)

#显示图形

plt.show()

·散点图

babaDf.plot(x='Volume',y='Close',kind='scatter')

#x坐标轴文本

plt.xlabel('成交量')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('成交量和股价')

#显示网格

plt.grid(True)

#显示图形

plt.show()

·GAFATA比较

#绘制谷歌的画纸1

ax1=googDf.plot(x=googDf.index,y='Close')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax1,x=amazDf.index,y='Close')

#Facebook

fbDf.plot(ax=ax1,x=fbDf.index,y='Close')

#苹果

applDf.plot(ax=ax1,x=applDf.index,y='Close')

#阿里巴巴

babaDf.plot(ax=ax1,x=babaDf.index,y='Close')

#腾讯

txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年GAFATA股价累计涨幅比较')

#显示网格

plt.grid(True)

plt.show()

'''

使用label自定义图例

'''

#绘制谷歌的画纸1

ax1=googDf.plot(x=googDf.index,y='Close',label='谷歌')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax1,x=amazDf.index,y='Close',label='亚马逊')

#Facebook

fbDf.plot(ax=ax1,x=fbDf.index,y='Close',label='Facebook')

#苹果

applDf.plot(ax=ax1,x=applDf.index,y='Close',label='苹果')

#阿里巴巴

babaDf.plot(ax=ax1,x=babaDf.index,y='Close',label='阿里巴巴')

#腾讯

txDf.plot(ax=ax1,x=txDf.index,y='Close_dollar',label='腾讯')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年GAFATA累计涨幅')

#显示网格

plt.grid(True)

plt.show()

因为谷歌和亚马逊的股价比较高,造成我们看不出其他4家公司的股票走势。 所以根据股价我们可以将这6家公司分成2组,一组是股价较高的谷歌和亚马逊。另外一组是股价较低的4家公司。

'''

第1组:谷歌,亚马逊

'''

#绘制谷歌的画纸2

ax2=googDf.plot(x=googDf.index,y='Close',label='谷歌')

#通过指定画纸ax,在同一张画纸上绘图

#亚马逊

amazDf.plot(ax=ax2,x=amazDf.index,y='Close',label='亚马逊')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('2018年谷歌和亚马逊累计涨幅')

#显示网格

plt.grid(True)

plt.show()

'''

第2组:4家公司

'''

#绘制Facebook的画纸3

#通过指定画纸ax,在同一张画纸上绘图

#Facebook

ax3=fbDf.plot(x=fbDf.index,y='Close',label='Facebook')

#苹果

applDf.plot(ax=ax3,x=applDf.index,y='Close',label='苹果')

#阿里巴巴

babaDf.plot(ax=ax3,x=babaDf.index,y='Close',label='阿里巴巴')

#腾讯

txDf.plot(ax=ax3,x=txDf.index,y='Close_dollar',label='腾讯')

#x坐标轴文本

plt.xlabel('时间')

#y坐标轴文本

plt.ylabel('股价(美元)')

#图片标题

plt.title('GAFATA2018年累计涨幅')

#显示网格

plt.grid(True)

plt.show()

·柱状图:股价平均值

#6家公司股票收盘价平均值

gafataMeanList=[googDf['Close'].mean(),#谷歌

amazDf['Close'].mean(),#亚马逊

fbDf['Close'].mean(),#Facebook

applDf['Close'].mean(),#苹果

babaDf['Close'].mean(),#阿里巴巴

txDf['Close_dollar'].mean()#腾讯

]

#创建pandas一维数组Series

gafataMeanSer=pd.Series(gafataMeanList,

index=['谷歌',

'亚马逊',

'Facebook',

'苹果',

'阿里巴巴',

'腾讯'])

gafataMeanSer.plot(kind='bar',label='GAFATA')

#图片标题

plt.title('2017年GAFATA股价平均值')

#x坐标轴文本

plt.xlabel('公司名称')

#y坐标轴文本

plt.ylabel('股价平均值(美元)')

plt.grid(True)

plt.show()

改为箱线图

#存放6家公司的收盘价

closeDf=pd.DataFrame()

#合并6家公司的收盘价

closeDf=pd.concat([closeDf,googDf['Close'],#谷歌

amazDf['Close'],#亚马逊

fbDf['Close'],#Facebook

applDf['Close'],#苹果

babaDf['Close'],#阿里巴巴

txDf['Close_dollar']#腾讯

],axis=1)

#重命名列名为公司名称

closeDf.columns=['谷歌','亚马逊','Facebook','Facebook','阿里巴巴','阿里巴巴']

#箱线图

closeDf.plot(kind='box')

plt.grid(True)

plt.show()

5如何用Notebook制作数据分析报告

原则:每一步都要有效结论,最后要有总结和下一步对策或趋势预测。

使用notebook中的markdown语法

#一级标题

##二级标题

...

*无需列表

1. 有序列表

**加粗**

*斜体*

[插入链接](网址)

![插入图片](图片路径)

>引用

- - -分割线

生成幻灯片

·显示幻灯片单元格菜单view-cell toolbar-slideshow

·隐藏幻灯片单元格菜单view-cell toolbar-none

案例:泰坦尼克号生存预测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值