数据挖掘python 画各类图
## -*- coding: utf-8 -*- # 代码3-1 使用describe()方法即可查看数据的基本情况 import pandas as pd catering_sale = 'D://人工智能//catering_sale.xls' # 餐饮数据 data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列 print(data.describe()) # 代码3-2 餐饮销额数据异常值检测 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('季度销售额箱型图 20信计1班2020310143024许伊诺',fontsize=20) plt.show() # 展示箱线图
# -*- coding: utf-8 -*- # 代码3-3 捞起生鱼片的季度销售情况 import pandas as pd import numpy as np catering_sale = 'D://人工智能//catering_fish_congee(1).xls' # 餐饮数据 data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引 import matplotlib.pyplot as plt d = 500 # 设置组距 num_bins = round((max(data['sale']) - min(data['sale'])) / d) # 计算组数 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 plt.hist(data['sale'], num_bins) plt.xticks(range(0, 4000, d)) plt.xlabel('sale分层') plt.grid() plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.title('季度销售额频率分布直方图20信计1班许伊诺 2020310143024',fontsize=20) plt.show() # 代码3-4 不同菜品在某段时间的销售量的分布情况 import pandas as pd import matplotlib.pyplot as plt catering_dish_profit = 'D://人工智能//catering_dish_profit(1)(1).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('菜品销售量分布(饼图)20信计1班许伊诺 2020310143024') # 设置标题 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('菜品销售量分布(条形图)20信计1班许伊诺 2020310143024') # 设置标题 plt.show() # 展示图片 # 代码3-5 不同部门在各月份的销售对比情况 # 部门之间销售金额比较 import pandas as pd import matplotlib.pyplot as plt data=pd.read_excel("D://人工智能//dish_sale(1).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.title("20信计1班许伊诺 2020310143024") plt.show() # B部门各年份之间销售金额的比较 data=pd.read_excel("D://人工智能//dish_sale_b(1).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.title("20信计1班许伊诺 2020310143024") plt.show() # 代码3-6 餐饮销量数据统计量分析 # 餐饮销量数据统计量分析 import pandas as pd catering_sale = 'D://人工智能//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) # 代码3-7 某单位日用电量预测分析 import pandas as pd import matplotlib.pyplot as plt df_normal = pd.read_csv("D://人工智能//user.csv") plt.figure(figsize=(8,4)) plt.plot(df_normal["Date"],df_normal["Eletricity"]) plt.xlabel("日期") plt.ylabel("每日电量") # 设置x轴刻度间隔 x_major_locator = plt.MultipleLocator(7) ax = plt.gca() ax.xaxis.set_major_locator(x_major_locator) plt.title("正常用户电量趋势20信计1班许伊诺 2020310143024") plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.show() # 展示图片 # 窃电用户用电趋势分析 df_steal = pd.read_csv("D://人工智能/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(7) ax = plt.gca() ax.xaxis.set_major_locator(x_major_locator) plt.title("窃电用户电量趋势20信计1班许伊诺 2020310143024") plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.show() # 展示图片 # 代码3-8 菜品盈利帕累托图 # 菜品盈利数据 帕累托图 import pandas as pd # 初始化参数 dish_profit = 'D://人工智能//catering_dish_profit(1)(1).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("20信计1班许伊诺 2020310143024") plt.show() # 代码3-9 餐饮销量数据相关性分析 # 餐饮销量数据相关性分析 from __future__ import print_function import pandas as pd catering_sale = 'D://人工智能//catering_sale_all.xls' # 餐饮数据,含有其他属性 data = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,指定“日期”列为索引列 print(data.corr()) # 相关系数矩阵,即给出了任意两款菜式之间的相关系数 print(data.corr()['百合酱蒸凤爪']) # 只显示“百合酱蒸凤爪”与其他菜式的相关系数 # 计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数 print(data['百合酱蒸凤爪'].corr(data['翡翠蒸香茜饺']))
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在(0,2Π)的函数图象--20信计1班2020310143024许伊诺') #加标题 plt.xlabel('X') plt.ylabel('Y') plt.legend() #显示图例 plt.show()