python matplotlib数据可视化

import pandas as pd
import matplotlib。pyplot as plt

1 柱形图

案例:明日科技图书馆销量统计python类图书销量,画柱形图  

df_book = pd.read_excel('../dataset/明日科技图书销量.xlsx')
df_book
#条件查询python类的图书
df_book_python = df_book[df_book['商品名称'].str.contains(''python)]
df_book_python
#分组统计各python类图书的总销量
result = df_book_python.groupby('商品名称')['成交商品件数'].sum()
result
# 画柱形图
x=result.index # x轴数据
y=result.values # y轴数据
plt.rcParams['font.family']='SimHei'# 让图形显示中文
plt.bar(x,y,width=0.5,color='black')# 柱形图函数

plt.title('Python类图书销量') #标题
plt.xticks(rotation=15)# x轴刻度倾斜
for a,b in zip(x,y):#绘制数据标签
    plt.text(
        a,# 标签x轴坐标
        b,#标签y轴坐标
        f'{b}',#标签文本格式
        ha='center'#标签对齐方式
        )
plt.show()# 显示图形 

运行结果

2 饼图

统计超市销售数量中男性和女性的支付方式占比情况的差异

df_sale = pd.read_exxel('../dataset/超市销售数据.xlsx')
df_sale
#交叉分析
gender_zffs = pd..pivot_table(
    data=daf_sale,
    index='性别',
    columns='支付方式',
    values='购买数量',
    aggfunc='sum'
)
gender_zffs

运行结果:

 

#画饼图
#男性中各类支付方式的占比
result2_man=gender_zffs.loc['男',:]
result2_man

运行结果:

 

#男性画图
plt.pie
    gender_zffs.loc['男',:],#数据,自动计算百分数
    labels = gender_zffs.loc['男',:].index,#文本标签
    autopct=''%1.2f%%,#数据标签格式
    explode=[0,0,0.1],#扇形到原点距离
    clors=['#ff8080','skyblue','green']
)
plt.show()

 运行结果:

#女性画图
plt.pie(
    gender_zffs.loc['男',:],#数据,自动计数百分数
    labels = genber_zffs.loc['女',:].index,#文本标签
    autopct=%1.2f%%,#数据标签格式
    explode=[0,0,0.1],#扇形到原点的距离
    colors=['#ff8080','skyblue',green]
)
plt.show()

运行结果:

 

3 折线图

案例:股票开盘价和五月军线(近20日收盘价的平均值)的折线图

df_stock=pd.read_excel(r'../shuju/股价数据.xlsx')
df_stock
#重新排序,日期升序
df_stock_sort=df_stock.sort_values(by='date').reset_index(drop=True)
df_stock_sort
#数据准备
x=df_stock_sort['date']
y1=df_stock_sort['open']
y2=df_stock_sort['ma20']
y2
#折线图
plt.plot(
    x,
    y1,
    '-',#控制y1折线的样式的字符串
    y2,
    '-.'
)
plt.title('某股票开盘价和20日均线的折线图')
plt.xticks([0,100,200,300,400,500,600],rotation=15)
plt.show()

 运行结果:

4 散点图

案例:图书的浏览量和成交量之间的关系

df_book=pd.read_excel(r'../shuju/明日科技图书销量.xlsx')
df_book
plt.scatter(
    df_book['浏览量'],
    df_book['成交商品件数'],
    s=1
)
plt.title('浏览量和成交量散点图')
plt.xlim(0,5000)
plt.ylim(0,400)
plt.show ()

运行结果:

 

5 直方图(分布图)

案例:航空工作用户年龄的分布

df_air=pd.read_excel(r'../shuju/航空公司数据.xlsx')
df_air
#画图
plt.hist(
    df_air['年龄'],
    bins=[i for i in range(0,100,1)]
)
plt.title('用户年龄分布图(直方图)')
plt.show()

运行结果:

 

6 箱形图

案例:航空公司用户年龄分布

df_air['年龄']
df_air=pd.read_excel(r'../shuju/航空公司数据.xlsx')

plt.boxplot(
    x=df_air['年龄'].dropna(),#数据不能有空值,如果要画多个箱形图,则数据要以列表的形式
    labels=['年龄'],# 必须输入一个列表
    vert=False
)
plt.title
plt.show()

运行结果:

 

7 同时显示多张图形

plt.figure(figsize=(16,8))
plt.subplot(2,3,4)
#重新定义x和y的值
x=result.index # x轴数据
y=result.values # y轴数据
plt.rcParams['font.family']='SimHei'# 让图形显示中文
plt.bar(x,y,width=0.5,color='black')# 柱形图函数

plt.title('Python类图书销量') #标题
plt.xticks(rotation=15)# x轴刻度倾斜
for a,b in zip(x,y):#绘制数据标签
    plt.text(
        a,# 标签x轴坐标
        b+500,#标签y轴坐标
        f'{b}',#标签文本格式
        ha='center'#标签对齐方式
        )
plt.subplot(2,3,2)
plt.pie(
    gender_zffs.loc['女',:],#数据,自动计算百分比
    labels=gender_zffs.loc['女',:].index,#文本标签
    autopct='%1.2f%%',# 数据标签格式
    explode=[0,0,0.1]#扇形图到原点的距离
)
plt.subplot(2,3,5)
x=df_stock_sort['date']
y1=df_stock_sort['open']
y2=df_stock_sort['ma20']
plt.plot(
    x,
    y1,
    '-',#控制y1折线的样式的字符串
    y2,
    '-.'
)
plt.title('某股票开盘价和20日均线的折线图')
plt.xticks([0,100,200,300,400,500,600],rotation=15)
plt.subplot(2,3,1)
plt.scatter(
    df_book['浏览量'],
    df_book['成交商品件数'],
    s=1
)
plt.title('浏览量和成交量散点图')
plt.xlim(0,5000)
plt.ylim(0,400)
plt.subplot(2,3,3)
plt.hist(
    df_air['年龄'],
    bins=[i for i in range(0,100,1)]
)
plt.title('用户年龄分布图(直方图)')
plt.subplot(2,3,6)
plt.boxplot(
    x=df_air['年龄'].dropna(),#数据不能有空值,如果要画多个箱形图,则数据要以列表的形式
    labels=['年龄'],# 必须输入一个列表
    vert=False
)
plt.show()

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值