第三章数据分析作业
import pandas as pd import matplotlib.pyplot as plt import numpy as np ##读取数据 url = r"E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data\catering_fish_congee.xls" data = pd.read_excel(url,names=['date','sale']) plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文 plt.rcParams['axes.unicode_minus'] = False #箱型图 plt.figure() p = data.boxplot(return_type=('dict')) x = p['fliers'][0].get_xdata() y = p['fliers'][0].get_ydata() y.sort() plt.title('季度销售额箱型图 3149') #加标题 # 直方图 bins = [0,500,1000,1500,2000,2500,3000,3500,4000] labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)', '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] data['sale分层'] = pd.cut(data.sale, bins, labels=labels) aggResult = data.groupby(by=['sale分层'])['sale'].agg([("sale","count")]) pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图 plt.title('季度销售额频率分布直方图 3149',fontsize=20) plt.show()
import pandas as pd import matplotlib.pyplot as plt #导入绘图包 plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题 plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题 url = r"E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data\catering_dish_profit.xls" data = pd.read_excel(url) #饼图 plt.figure(figsize=(6,6))#将画布设定为正方形,则绘制的饼图是正圆 plt.pie(data['盈利'], labels=data['菜品名']) plt.title('菜品销售量分布饼图 3149') #加标题 plt.show() #条形图 plt.figure(figsize=(8,4)) plt.bar(data['菜品名'],data['盈利']) plt.xlabel('菜品') plt.ylabel('销量') plt.title('菜品销售量条形图 3149') #加标题 plt.show()
import pandas as pd import matplotlib.pyplot as plt #导入绘图包 plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题 plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题 url = r"E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data\dish_sale.xls" data = pd.read_excel(url) #画折线图对比数据 plt.figure(figsize=(12,8)) plt.plot(data['月份'],data['A部门'],color='green',label='A部门',marker='o') plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='s') plt.plot(data['月份'],data['C部门'],color='skyblue',label='C部门',marker='x') plt.xlabel('月份') plt.ylabel('销售额(万元)') plt.title('菜品销售量折线对比图 3149') #加标题 plt.legend() #显示图例 plt.show()
import numpy as np import matplotlib.pyplot as plt #导入绘图包 import math plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题 plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题 x=np.arange(0,2*math.pi,0.1)#以0.1为单位,生成0到6的数据 y=np.sin(x) plt.figure(figsize=(12,8)) plt.plot(x,y,color='skyblue',label='f(x)=sin x',marker='o') plt.title('f(x)=sin x的函数图象 3149') #加标题 plt.xlabel('X') plt.ylabel('Y') plt.legend() #显示图例 plt.show()
import pandas as pd import matplotlib.pyplot as plt df_normal=pd.read_csv("E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data/user.csv") plt.figure(figsize=(8,4)) plt.plot(df_normal["Date"],df_normal["Eletricity"]) plt.xlabel("日期") #设置x轴刻度间隔 x_major_locator=plt.MultipleLocator(7) ax=plt.gca() ax.xaxis.set_major_locator(x_major_locator) plt.ylabel("每日电量") plt.title("用户电量趋势 3149") plt.rcParams['font.sans-serif']=['SimHei'] plt.show()
import matplotlib.pyplot as plt years=[2009,2010,2011,2012,2013,2014,2015,2016,2017] turnovers=[0.5,9.36,52,191,350,571,912,1027,1682] plt.figure() plt.scatter(years,turnovers,c='blue',s=100,label='年份标签') plt.xticks(range(2008,2017,2)) plt.yticks(range(0,3200,800)) plt.xlabel("Year",fontdict={'size':16}) plt.ylabel("Number",fontdict={'size':16}) plt.title("散点图 3149",fontdict={'size':20}) #legend标签位置 plt.legend(loc='best') plt.show()
import pandas as pd import numpy as np x=np.linspace(0,2*np.pi,endpoint=True) y=np.sin(x) plt.figure() plt.plot(x,y,'gp--') #绿色带星虚线 plt.xlabel("x",fontdict={'size':16}) plt.ylabel("y",fontdict={'size':16}) plt.legend("sin(x)") plt.title("曲线图 3149") plt.show()
#饼图import matplotlib.pyplot as plt #The slices will be crdered and plotted counter-clockwise labels='A','B','C','D'#定义标签 sizes=[25,30,35,10]#每一块的比例 colors=['yellowgreen','gold','lightskyblue','lightcoral']#每一块的颜色 explode=(0,0,0,0.2)#突出显示,这里仅仅突出显示第二块(即‘D’) plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.lf%%', shadow=True,startangle=90) plt.axis('equal')#显示为圆(避免比例压缩为椭圆) plt.title("带突出饼图 3149") plt.show()
import matplotlib.pyplot as plt import numpy as np x=np.random.randn(800) #1000个服从正态分布的随机数 plt.hist(x,10)#分成10组绘制直方图 plt.title('随机数直方图 3149') plt.show()
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False import numpy as np import pandas as pd x=pd.Series(np.exp(np.arange(20)))#原始数据 plt.figure(figsize=(8,9))#设置画布大小 axl=plt.subplot(2,1,1) x.plot(label='原始数据图',legend=True) plt.title('使用plot(logy=True)函数进行绘图 3149') axl=plt.subplot(2,1,2) x.plot(logy=True,label='对数数据图',legend=True) plt.show()
#绘制误差棒图 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False import numpy as np import pandas as pd error=np.random.randn(10) #定义误差列 y=pd.Series(np.sin(np.arange(10)))#均值数值列 y.plot(yerr=error) #绘制误差图 plt.title('误差棒图 3149') plt.show()
import pandas as pd catering_sale='E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data\catering_sale.xls' #餐饮数据 data=pd.read_excel(catering_sale,index_col=u'日期') #读取数据,指定“日期”列为索引列 print(data.describe) import matplotlib.pyplot as plt #导入图像库 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.figure() #建立图像 p=data.boxplot(return_type='dict') #画箱型图,直接使用DetaFrame的方法 x=p['fliers'][0].get_xdata() #‘flies’即为异常值的标签 y=p['fliers'][0].get_ydata() y.sort()#从小大大依次排序,该方法直接改变原对象 ''' 用annotate添加注释 其中有些相近的点,注释会出现重叠,难以看清,需要一些技巧来控制 以下参数都输经过调试过的,需要具体问题具体调试 ''' for i in range(len(x)): if i>0: plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i])) else: plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i])) plt.title('箱型图 3149') plt.show() #展示箱型图
math_scores = np.array([71,65,70,96,64]) chinese_scores = np.array([84,75,68,83,57]) english_scores = np.array([55,78,76,91,64]) figure2 = plt.figure(figsize = (10, 5)) figure2.add_subplot(1,1,1) plt.xlabel("",fontsize = 14) plt.ylabel("平均分", fontsize = 14) plt.xticks(fontsize=14) plt.yticks(fontsize=14) plt.title("成绩条形图 3149", color='blue'fontsize=20) plt.rcParams["font.sans-serif"] = "SimHei" plt.rcParams["axes.unicode_minus"] = False category = ["1班", "2班", "3班", "4班", "5班"] index_category = np.arange(len(category)) bar_width = 0.25 plt.bar(index_category - bar_width, chinese_scores, width=bar_width, color=[0,0,1]) plt.bar(index_category, math_scores, width=bar_width, color=[0,1,0]) plt.bar(index_category + bar_width, english_scores, width=bar_width, color=[1,0,0]) plt.show()
import pandas as pd import matplotlib.pyplot as plt #导入绘图包 plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题 plt.rcParams['axes.unicode_minus'] = False # 解决中文显示问题 url = r"E:\py mathph\JupyterLab-Portable-3.1.0-3.9\shujuwajue\data\catering_dish_profit.xls" data = pd.read_excel(url) #饼图 plt.figure(figsize=(6,6))#将画布设定为正方形,则绘制的饼图是正圆 plt.pie(data['盈利'], labels=data['菜品名']) plt.title('菜品销售量分布饼图 3149') #加标题 plt.show() #条形图 plt.figure(figsize=(8,4)) plt.bar(data['菜品名'],data['盈利']) plt.xlabel('菜品') plt.ylabel('销量') plt.title('菜品销售量条形图 3149') #加标题 plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人