pandas子图绘制及简单案例实践

参考:matplotlib绘制多子图

subplots()方法快速绘制

subplots()方法快速的创建多子图环境,并返回一个包含子图的Numpy数组
fig, ax = plt.subplots(2,3,sharex=‘col’, sharey=‘row’)
在这里插入图片描述
通过sharex和sharey参数,自动地去掉了网格内部子图的坐标刻度等内容,实现共享,让图形看起来更整齐整洁。
元数据简略
在这里插入图片描述
在这里插入图片描述
数据就简单截个头截个尾。方便理解代码。

读取数据
import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as plt
#设置中文
mpl.rcParams[‘font.sans-serif’]=[‘SimHei’]
data=pd.read_csv(‘platVolume.csv’) #读数据

打印有多少家平台:

第一种方式
data1=data.drop_duplicates(['wdzjPlatId'])  #去重
data1['wdzjPlatId'].count() #求总数量  
第二种方式
data['wdzjPlatId'].nunique()
第三种方式
data['wdzjPlatId'].unique().size

结果512
打印所有平台一年内的成交量综合:

    data2=data['amount'] #取出原数据的成交额
	data2.sum().round(decimals=2) #求和保留俩位
结果:201089856.64
data.index=pd.to_datetime(data['date']) #取出时间转成datatime类型赋值给索引,为后面时间序列取数据做准备
figure,axes=plt.subplots(nrows=2,ncols=2,figsize=(10,8))  #首先新建一个图像(figure)和图(axes),图像figure包含多个或者一个axes(图)
                                                        #nrows为行,ncols为列,figsize为设置长宽(长,宽)
data['2016-07-03':'2017-06-30'].resample('M',how=sum)['amount'].plot(ax=axes[0][0],title='月成交额到17年6月底') 
                                        #第一个0为索引取得一行,第二个0为索引取得第一行的第一列,下面类似。
data['2016-07-03':'2017-07-02'].resample('M',how=sum)['amount'].plot(ax=axes[0][1],title='月成交额到17年7月余头')
data['2016-07-03':'2017-06-30'].resample('D',how=sum)['amount'].plot(ax=axes[1][0],title='日成交额到17年6月底')
data['2016-07-03':'2017-07-02'].resample('D',how=sum)['amount'].plot(ax=axes[1][1],title='日成交额到17年7月余头')

在这里插入图片描述
由月成交额对比可以看到,有第二张比第一张就多一个月的零头的数据,日数据也同理,只是不太好看。数据分析切记不要丢掉任何一点数据,否则带来的后果:咱也不知道,咱也不敢说。

add_subplot()方法

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_csv('上市公司ROE预测.csv',encoding='ANSI')  #读取csv,需要用这个编码
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
fig = plt.figure(figsize=(18,8))  #设置一个图像长宽 
ax1 = fig.add_subplot(1,2,1)  #添加子图 add_subplot(行,列,第几张图)
ax2 = fig.add_subplot(1,2,2)
data1=data[data['成长速度(%)']<0]
data2=data1.sort_values(by='成长速度(%)',ascending=True)
data2['成长速度(%)']=data2['成长速度(%)'].apply(lambda x:float(str(x).replace('-','')))

data3=data2[['行业代码','成长速度(%)']]
X=data3['行业代码'].values[:10]
Y=data3['成长速度(%)'].values[:10]
ax1.bar(X,Y)
ax1.set_title('成长速度下降速度比比值前十')  #设置子图标题
ax1.set_xlabel('行业代码')  #设置子图X轴名称
ax1.set_ylabel('成长速度比')#设置子图Y轴名称

data4=data2[['行业代码','资产规模']]
X1=data4['行业代码'].values[:10]
Y2=data4['资产规模'].values[:10]
ax2.plot(X1,Y2)
ax2.set_title('下降速度前十行业资产规模折线图')
ax2.set_xlabel('行业代码')
ax2.set_ylabel('资产规模')
plt.show()

在这里插入图片描述这个方法可以另外设置xy轴名称,第一个方法,不知怎么设置xy轴方法。等找到了再来更新,学艺很浅,多多指教。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值