python中的matplotlib,让数据可视化

一些碎碎念~ 

⛳ 你好哇,我是小瑾,在校大学生一位哦~

⛵目前博文包含课程设计、csp刷题、算法介绍、当下科技热点分享、网站软件推荐等等哦,还会更新学习到的深度学习、视觉等方面的知识~

⛄一个希望与大家携手共进的小博主

✍关注我,让你的代码之旅不再孤独!

 Matplotlib简介

 ☘️  Matplotlib是Python中最流行的绘图库之一,用于生成二维图形和图表。它提供了一整套命令式函数来控制图形的各个方面,类似于MATLAB。它的核心模块是pyplot,提供了绘制图形的高层接口。

⭐️ 核心功能

  1. 基本绘图:折线图、柱状图、散点图、饼图等。
  2. 复杂图形:热力图、三维图、等高线图等。
  3. 自定义:图例、标题、标签、颜色、线型、注释等。
  4. 交互:支持交互式绘图,可以在窗口中缩放、平移等。

 使用前的准备:

✅ 1.下载pycharm(或者其他python编辑器)

✅ 2.打开终端

✅ 3.输入:pip install matplotlib

代码实践:

(题目我是分开列的,代码就全部总结到最底下的代码块里啦~ )

(1) 利用csv,Numpy和Pandas创建商店2022年模拟营业数据data.csv,包含两列(日期date、销量amount)。数据随机365条,date起于2022-01-01止于2022-12-31,amount范围[300,600],参考代码如下,创建的文件效果如图所示。

(2)利用pandas读取文件data.csv中数据,创建DataFrame,删除所有缺失值。

(3)利用matplotlib生成折线图,按每天进行统计,显示商店每天销量,图形保存为本地文件day_amount_plot.png。实验效果如图所示。

(4)利用matplotlib生成柱状图,按月份进行统计,显示商店每月的销量情况,并把图形保存为本地文件month_amount_bar.png。实验效果如图所示。分析数据,找出相邻两个月最大涨幅,并把涨幅最大的月份写入到文件maxMonth.txt中。

(5)利用matplotlib生成饼图,按季度进行统计,显示商店4个季度的销量分布情况,并把图形保存为本地文件season_amount_pie.png。实验效果如图所示。

提示:season1= df1:3.sum() #第1季度(01-03月)数据统计

饼图:plt.pie([season1, season2, season3, season4],labels=["season1", "season2", "season3", "season4"])

import csv
import random
import datetime
with open(r"data.csv","w+",newline='') as csvfile:
    wr=csv.writer(csvfile,dialect="excel")
    wr.writerow(["data","amount"])
    startDate=datetime.date(2022,2,2)
    for i in range(365):
        amount=int(random.random()*301+300)
        wr.writerow([startDate,amount])
        startDate=startDate+datetime.timedelta(days=1)

import numpy as np
import pandas as pd
f=open(r"Data.csv",newline='')
arr1=np.arange('2022-01-01','2023-01-01',dtype='datetime64[D]')
arr2=np.random.randint(300,600,size=[len(arr1)])
data=pd.DataFrame({'date':arr1,'amount':arr2})
data.to_csv('Data.csv',index=False)
f.close()
df=pd.read_csv("data.csv")
df=df.dropna()

import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(df["date"],df["amount"],label="day->amount",color="red",linewidth=2)
plt.title("2022 Day Business Volume of Wpf Store")
plt.xlabel("day")
plt.ylabel("amount")
plt.xlim("2022-01-01","2021-01-01")
plt.legend()
plt.savefig("day_amount_plot.png")
plt.show()

df=pd.read_csv("data.csv",encoding="utf-8")
df=df.dropna()
df1=df
df1["month"]=df1["date"].map(lambda x: x[:x.rindex('-')])
df1=df1.groupby(by="month",as_index=False).sum()
print(df1)
plt.figure(figsize=(12,6))
T2=np.arange(1,13)
plt.bar(T2,df1["amount"],label="month->amount",color="blue")
plt.title("2022 Month Business Volume of Wpf Store")
plt.xlabel("month")
plt.ylabel("amount")
plt.xlim(1,12)
plt.xticks(np.arange(1,13,1),['2022-01','2022-02','2022-03','2022-04','2022-05','2022-06','2022-07','2022-08','2022-09','2022-10','2022-11','2022-12'])
plt.legend()
plt.savefig("month_amount_bar.png")plt.show()
df2=df1.drop("month", axis=1).diff()
m=df2["amount"].nlargest(1).keys()[0]
with open("max_month.txt", 'w') as txtfile:
    txtfile.write(df1.loc[m,"month"])
txtfile.close()

season1= df1[:3]['amount'].sum()
season2 = df1[3:6]['amount'].sum()
season3= df1[6:9]['amount'].sum()
season4= df1[9:12]['amount'].sum()
plt.figure(figsize=(12,6))
plt.pie([season1, season2, season3, season4],labels=["season1", "season2", "season3", "season4"])
plt.title("2022 Season Business Volume of Wpf Store")#设置图标题
plt.savefig('season_amount_pie.png')
plt.show()

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小瑾比个耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值