分析数据-绘图
import pandas as pd
catering_sale = r'E:\sj\catering_sale(1).xls'
data = pd.read_excel(catering_sale, index_col='日期')
print(data.describe())
import numpy as np
x=np.linspace(0,2*np.pi,50)
s=np.sin(x)
plt.figure()
plt.plot(x,s,'b-*',)
plt.title('正弦图3151',fontsize=20)
plt.show()
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') # 画箱线图,直接使用DataFrame的方法
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('箱型图3151',fontsize=20)
plt.show() # 展示箱线图
# 代码3-3 捞起生鱼片的季度销售情况
import pandas as pd
import numpy as np
catering_sale = r'E:\sj\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)']
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('季度销售额频率分布直方图3151',fontsize=20)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
catering_dish_profit = r'E:\sj\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('菜品销售量分布(饼图)3151',fontsize=20) #设置标题
plt.axis('equal')
plt.show()
#绘制条形图
x=data['菜品名']
y=data['盈利']
plt.figure(figsize=(8,4)) #设置画布大小
plt.bar(x,y)
plt.rcParams['font.sans-serif']='SimHei'
plt.xlabel('菜品') #设置x轴标题
plt.ylabel('销量') #设置y轴标题
plt.title('菜品销售量分布(条形图)3151',fontsize=20) #设置标题
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df_normal =pd.read_csv(r'E:\sj\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("正常用户电量趋势3151",fontsize=20)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
# plt.axis('equal')
plt.show() # 展示图片
# 窃电用户用电趋势分析
# 窃电用户用电趋势分析
df_steal = pd.read_csv(r'E:\sj\data\Steal user.csv')
plt.figure(figsize=(10, 9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")# 设置x轴刻度间隔
x_major_locator = plt.MultipleLocator(77)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("窃电用户电量趋势3151",fontsize=20)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.show() # 展示图片
# 部门之间销售金额比较
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel(r'E:\sj\data\dish_sale.xls')
plt.figure(figsize=(8, 4))
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.legend() #显示图例
plt.ylabel(' 销售额(万元) ')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('三个部门之间销售额的比较3151',fontsize=20)
plt.show()
# B部门各年份之间销售金额的比较
data=pd.read_excel(r'E:\sj\data\dish_sale_b.xls')
plt.figure(figsize=(8, 4))
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.rcParams['font.sans-serif'] = ['SimHei']
plt.title('B部门各年份销售额的比较3151',fontsize=20)
plt.show()
# 餐饮销量数据统计量分析 import pandas as pd
catering_sale = r'E:\sj\data\catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列 为索引列
data = data[(data['销量'] > 400)&(data['销量'] <5000)] # 过滤异常数据
statistics = data.describe() # 保存基本统计量
statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] # 板差
statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean']#变异系数
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] # 四分位数间距
print(statistics)
# 菜品盈利数据帕累托图
import pandas as pd
# 初始化参数
dish_profit =r'E:\sj\data\catering_dish_profit.xls'# 餐饮菜品盈利数据
data = pd.read_excel(dish_profit, index_col='菜品名')
data =data['盈利'].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()
data.plot(kind='bar')
plt.ylabel('盈利(元)')
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('盈利(比例)')
plt.title('菜品盈利数据帕累托图3151',fontsize=20)
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)) # 设置画布大小
ax1 = plt.subplot(2, 1, 1)
x.plot(label='原始数据图',legend=True,)
plt.title('原始图3151',fontsize=20)
ax1 = plt.subplot(2, 1, 2)
x.plot(logy=True, label='对数数据图', legend=True)
plt.title('Y轴的对数图形对比图3151',fontsize=20)
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('误差条形图3151',fontsize=20)
plt.show()