第一周数据分析挖掘作业

 

代码及运行结果截图如下:

import pandas as pd
catering_sale='D:\大三下大数据分析\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()
plt.figure(figsize=(8,6))
plt.title("图3-2 销量异常检测箱线图(3135)",fontdict={'size':20})
p=data.boxplot(return_type='dict')
x=p['fliers'][0].get_xdata()
y=p['fliers'][0].get_ydata()
y.sort()

 

 

 

 

import numpy as np
import pandas as pd
catering_sale='D:\大三下大数据分析\catering_fish_congee.xls'
data=pd.read_excel(catering_sale,names=['date','sale'])

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)']
print(data)

data['sale分层'] = pd.cut(data.sale, bins, labels=labels)
aggResult = data.groupby(by=['sale分层'])['sale'].agg([('sale',np.size)])

pAggResult=round(aggResult/aggResult.sum(),2)*100

import matplotlib.pyplot as plt
plt.figure(figsize=(10,6)) # 设置图框大小尺寸
pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.title('图3-3 季度销售额频率分布直方图(3135)',fontsize=20)
plt.show()

 

 

 

#代码3-4 不同菜品在某时间段的销售量分布情况 饼图和条形图
import matplotlib.pyplot as plt
import pandas as pd
catering_dish_profit='D:\大三下大数据分析\data\catering_dish_profit.xls'
data=pd.read_excel(catering_dish_profit)

#饼图
x=data['盈利']
labels=data['菜品名']
plt.figure(figsize=(8,6))
plt.pie(x,labels=labels)
plt.rcParams['font.sans-serif']='SimHei'
plt.title('图3-4 菜品销量分布饼图(3135)',fontsize=20)
plt.axis('equal')
plt.show()

#条形图
x=data['菜品名']
y=data['盈利']
plt.figure(figsize=(8,4))
plt.title('图3-5 菜品销量分布条形图(3135)',fontsize=20)
plt.bar(x,y)
data.plot(kind='bar')
plt.rcParams['font.sans-serif']='SimHei'
plt.xlabel('菜名')
plt.ylabel('销量')
plt.axis('equal')
plt.show()

 

 

 

 

#代码3-5
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel('D:\大三下大数据分析\data\dish_sale.xls')
plt.figure(figsize=(10,8)) # 设置图框大小尺寸
#data.plot()
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='blue',label='C部门',marker='x')
plt.legend()
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.ylabel('销售额(万元)')
plt.xlabel('月份')
plt.title('图3-6 菜品销售量分布折线图(3135)',fontsize=20)
plt.show()

 

 

 

data=pd.read_excel('D:\大三下大数据分析\data\dish_sale_b.xls')
plt.figure(figsize=(8,5)) # 设置图框大小尺寸
#data.plot()
plt.plot(data['月份'],data['2012年'],color='green',label='2012',marker='o')
plt.plot(data['月份'],data['2013年'],color='red',label='2013',marker='s')
plt.plot(data['月份'],data['2014年'],color='skyblue',label='2014',marker='x')

plt.legend()
plt.ylabel('销售额(万元)')
plt.xlabel('月份')
plt.title('图3-7 B部门各年份之间销售额比较折线图(3135)',fontsize=20)
plt.show()

 

 

 

 

import pandas as pd
import matplotlib.pyplot as plt

data=pd.read_csv("D:/大三下大数据分析/data/user.csv")
plt.figure(figsize=(8,4))
plt.plot(data["Date"],data["Eletricity"])
plt.xlabel("日期")
x_major_locator=plt.MultipleLocator(7)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量")
plt.title("图3-8 正常用户电量趋势(3135)",fontsize=20)
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.show()

 

 

#窃电用户用电趋势分析
steal=pd.read_csv("D:/大三下大数据分析/data/Steal user.csv")
plt.figure(figsize=(10,9))
plt.plot(steal["Date"],steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")

x_major_locator=plt.MultipleLocator(7)
ax=plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("图3-9 窃电用户电量趋势(3135)",fontsize=20)
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.show()

 

 

 


#菜品盈利数据 帕累托图
import pandas as pd
#初始化参数
dish_profit = 'D:\大三下大数据分析\data\catering_dish_profit.xls' #餐饮菜品盈利数据
data = pd.read_excel(dish_profit, index_col = u'菜品名')
data = data[u'盈利'].copy()
data.sort_values(ascending = False)
import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
plt.figure()
plt.figure(figsize=(8,6))
plt.title("代码3-8/图3-10菜品盈利数帕累托图(3135)",fontdict={'size':20})
data.plot(kind='bar')
plt.ylabel(u'盈利(元)')
p = 1.0*data.cumsum()/data.sum()
p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)
plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) #添加注释,即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u'盈利(比例)')
plt.show()

 

 

 

#图3-13 正弦曲线图
import numpy as np
x=np.linspace(0,2*np.pi,50)
y=np.sin(x)
plt.plot(x,y,'bp--')
plt.title("图3-13 正弦曲线图(3135)",fontdict={'size':20})
plt.show()

 

 

 

#图3-14 饼图
import matplotlib.pyplot as plt
labels='Frogs','Hogs','Dogs','Logs'
sizes=[15,30,45,10]
colors=['yellowgreen','gold','lightskyblue','lightcoral']
explode=(0,0.1,0,0)

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=90)
plt.axis('equal')
plt.title("图3-14 饼图(3135)",fontdict={'size':20})
plt.show()

 

 

 

#图3-15 二维条形直方图
import matplotlib.pyplot as plt
import numpy as np
x=np.random.randn(1000)
plt.hist(x,10)
plt.title("图3-15 二维条形直方图(3135)",fontdict={'size':20})
plt.show()

 

 

 

#图3-16 箱型图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x=np.random.randn(1000)
D=pd.DataFrame([x,x+1]).T
D.plot(kind='box')
plt.title("图3-16 箱型图(3135)",fontdict={'size':20})
plt.show()

 

 

 

#图3-17 对数图形
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

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("图3-17 原始数据图(3135)",fontdict={'size':20})

axl=plt.subplot(2,1,2)
x.plot(logy=True,label='对数数据图',legend=True)
plt.title("图3-17 对数数据图(3135)",fontdict={'size':20})
plt.show()

 

 

 

 

#图3-18 误差棒图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

error=np.random.randn(10)
y=pd.Series(np.sin(np.arange(10)))
y.plot(yerr=error)
plt.title("图3-18 误差棒图(3135)",fontdict={'size':20})
plt.show()

 

 

 

总结:

        就像老师说的,这些图形的代码画法都是我们使用Python时最基本的,最需要掌握的,在日后的工作中有很多用处。因此,我们不能懈怠,也不能忘记。在画这些图的过程中,我不断查漏补缺,但是其中有一些画得还不够好,相信在经过之后两个月的学习,我能够完善自己的专业知识。

 

posted @ 2023-02-25 14:16  爱喝肥宅快乐水的YYX  阅读(31)  评论(0)    收藏  举报