Python数据可视化

笔记

目录

一、图形绘制基础

二、常用图形绘制

        1.折线图的绘制

        2.散点图的绘制

        3.柱状图的绘制

         4.箱型图绘制

        5.饼状图的绘制

三、组合图与双坐标图绘制

        1.多个折线图的组合绘制

        2.折线图和散点图的组合绘制

        3.双坐标图绘制


一、图形绘制基础

        采用Matplotlib包Pyplot模块的plot函数绘制正弦函数图像

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title("sine curve")
plt.show()

二、常用图形绘制

        1.折线图的绘制

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来设置字体样式以正常显示中文标签
y=[8.07,6.42,9.79,8.20,7.69,6.02,7.86,6.93,6.84,9.04,10.06]
x=[2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020]
plt.plot(x,y,'g',lw=4,label='城镇居民消费水平增长率')
plt.legend(loc=5)
plt.grid(True)
plt.xlabel('年')
plt.ylabel('增长率')
plt.title('我国历年城镇居民消费水平增长率')

        2.散点图的绘制

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

#用来设置字体样式以正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']

#默认是使用Unicode负号,设置正常显示字符,如正常显示负号
plt.rcParams['axes.unicode_minus']=False

plt.figure(figsize=(10, 6))
plt.plot('item_price', 'ord_qty', 'o',data=database)
plt.xlabel('价格')
plt.ylabel('需求量')

        3.柱状图的绘制

import numpy as np
import matplotlib.pyplot as plt
dict={'202009':2324,'202010':2814,
'202011':2525,'202012':2946,'202101':3019,'202102':2087,'202103':3398}
plt.figure(figsize=(9,5))
plt.bar(dict.keys(),dict.values(),width=0.3,align='center',label='funds')
plt.grid(True)
plt.legend(loc=1)
plt.xlabel('月')
plt.ylabel('发行数量')
plt.title('基金产品发行数量')
plt.savefig('test',dpi=600)

         4.箱型图绘制

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = {
    'Japan': [1200, 1300, 1500, 1400, 1600, 1600, 1800, 1800, 1900, 2400],
    'USA': [1200, 1350, 1400, 1500, 1660, 1800, 1700, 1900, 2100, 2000],
    'Russia': [1100, 1200, 1200, 1400, 1300, 1600, 1700, 1900, 1900, 1800],
    "Korean": [1200, 1100, 1000, 1300, 1200, 1500, 1600, 1700, 1800, 1800]
}
df = pd.DataFrame(data)
df.plot.box(title="某公司产品各个国家用户消费分布图") 
plt.grid(linestyle="--", alpha=0.3)
plt.savefig('test',dpi=600)
plt.show()

        5.饼状图的绘制

import pandas as pd
import matplotlib.pyplot as plt
labels = ['A','B','C','D','E']
x = [15,30,30,10,15]
plt.pie(x,labels=labels)
plt.savefig('test',dpi=600)
plt.show()

三、组合图与双坐标图绘制

        1.多个折线图的组合绘制

#导入数据并对订单日期进行分解
database['order_date'] = pd.to_datetime(database['order_date'])  #对日期列进行日期格式转换
database['year']=database.order_date.dt.year #分解出年份
database['month']=database.order_date.dt.month
database['day']=database.order_date.dt.day

#按照产品明细和年份进行分组后对需求量求和
pro1=database.groupby(['second_cate_code','year'])['ord_qty'].sum().reset_index()

#将每个产品明细在2015年的需求量存进数组里
x1=[]
y1=[]
for x in list(pro1.loc[pro1['year']==2015]['second_cate_code']):
    x1.append(x)
for y in list(pro1.loc[pro1['year']==2015]['ord_qty']):
    y1.append(y)
#添加101区域406和411产品明细需求量数据为0
x1.insert(5,406)
y1.insert(5,0)
x1.insert(10,411)
y1.insert(10,0)

#将每个产品明细在2016年的需求量存进数组里
x2=[]
y2=[]
for x in list(pro1.loc[pro1['year']==2016]['second_cate_code']):
    x2.append(x)
for y in list(pro1.loc[pro1['year']==2016]['ord_qty']):
    y2.append(y)
#添加102区域411产品明细需求量数据为0
x2.insert(10,411)
y2.insert(10,0)

#将每个产品明细在2017年的需求量存进数组里
x3=[]
y3=[]
for x in list(pro1.loc[pro1['year']==2017]['second_cate_code']):
    x3.append(x)
for y in list(pro1.loc[pro1['year']==2017]['ord_qty']):
    y3.append(y)

#将每个产品明细在2018年的需求量存进数组里
x4=[]
y4=[]
for x in list(pro1.loc[pro1['year']==2018]['second_cate_code']):
    x4.append(x)
for y in list(pro1.loc[pro1['year']==2018]['ord_qty']):
    y4.append(y)  

plt.figure(figsize=(15,10))
plt.plot(x1,y1)
plt.plot(x2,y2)
plt.plot(x3,y3)
plt.plot(x4,y4)
plt.xticks(x1,x1)
plt.xlabel('产品细类')
plt.ylabel('总需求量')
plt.legend([2015,2016,2017,2018],prop = {'size':12})
plt.title('不同品类在不同年份的总需求量变化')

        2.折线图和散点图的组合绘制

cnholidays = holidays.CountryHoliday('CN')#获取中国的节假日期

#添加‘节假日’的字段,存储当前日期是否为节假日
database['holiday']=0

#判断当前日期是否为节假日,是为1,否为0
for i,j in database.iterrows():
    ifholiday=datetime.date(int(j['year']),int(j['month']),int(j['day'])) in cnholidays
    if(ifholiday==True):
        database.at[i,'holiday']=1
    else:
        database.at[i,'holiday']=0
        
#对日期和节假日进行分组后对需求量求和
holidayqty=database.groupby(['order_date','holiday'])['ord_qty'].sum().reset_index()

#将是节假日的日期的数据和非节假日的日期的数据分别存储进数组里
yes=holidayqty.loc[holidayqty['holiday']==1]
no=holidayqty.loc[holidayqty['holiday']==0]

plt.figure(figsize=(15,10))
plt.plot(yes['order_date'],yes['ord_qty'],'o',color='r')
plt.plot(no['order_date'],no['ord_qty'],color='b')
plt.xlabel('日期')
plt.ylabel('需求量')
plt.legend(['节假日','非节假日'],prop = {'size':15})
plt.title('节假日对产品需求量的影响')

        3.双坐标图绘制

import matplotlib.pyplot as plt
close=[22.23,22.59,22.36,22.47,22.85,22.79,22.76,23.82,23.97,25.38,25.5]
date=['12/14/2021','12/15/2021','12/16/2021','12/17/2021','12/21/2021',    '12/22/2021','12/23/2021','12/24/2021','12/25/2021','12/26/2021','12/27/2021']
vol=[34711261,35634241,40123423,39043212,45983023,42902912,37584231,30029832,4039221,5023281,5598231]
fig,ax1=plt.subplots()
plt.bar(date,vol,width=0.3,label='交易量')
plt.legend(loc=1)
plt.xlabel('日期')
plt.ylabel('交易量')
plt.title('stock xxxxxx')
plt.xticks(rotation = 60)
ax2=ax1.twinx()
plt.plot(close,'r',lw=2,label='收盘价')
plt.grid(True)
plt.legend(loc=8)
plt.ylabel('收盘价')

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值