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('我国历年城镇居民消费水平增长率')

Python数据可视化_第1张图片

        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('需求量')

Python数据可视化_第2张图片

        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)

Python数据可视化_第3张图片

         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()

Python数据可视化_第4张图片

        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()

Python数据可视化_第5张图片

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

        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('不同品类在不同年份的总需求量变化')

Python数据可视化_第6张图片

        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('节假日对产品需求量的影响')

Python数据可视化_第7张图片

        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('收盘价')

 Python数据可视化_第8张图片

你可能感兴趣的:(python,开发语言)