1.缺失值分析及箱型图

数据:catering_sale.xls(餐饮日销额数)

缺失值使用函数:describe()函数,能算出数据集的八个统计量

  1. import pandas as pd
  2. catering_sale = r'.\catering_sale.xls' #餐饮数据
  3. data = pd.read_excel(catering_sale, index_col=u'日期') # 读取数据,指定“日期”列为索引
  4. describe = data.describe() #describe()函数能算出数据集的八个统计量
  5. print(describe)
  6. count = describe.loc['count'] #loc统计对应的数值
  7. print("缺失值为:% d" % (len(data) - int(count))) # 记录有201条,但count只有200,说明缺失值数为1

结果分析:该数据表有一个缺失值,其中共有200个数据,最大值为2755.2147,最小值为22.00

极差-变异系数-四分位数间距:

  1. data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
  2. data = data[(data[u'销量'] > 400)&(data[u'销量'] < 5000)] #过滤异常数据
  3. statistics = data.describe() #保存基本统计量
  4.  
  5. statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] #极差
  6. statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean'] #变异系数
  7. statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] #四分位数间距
  8.  
  9. print(statistics)

结果:

箱型图:

  1. # 画出数据的箱线图
  2. import matplotlib.pyplot as plt # 导入图像库
  3.  
  4. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签,plt.reParams是一个配置表
  5. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  6.  
  7. plt.figure()
  8. p = data.boxplot(return_type='dict') # 画箱线图,处理异常值
  9. x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
  10. y = p['fliers'][0].get_ydata()
  11. y.sort()
  12.  
  13. for i in range(len(x)):
  14. if i>0:
  15. plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
  16. else:
  17. plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))
  18.  
  19. plt.title('3148Tang-箱型图',fontsize=15)
  20. plt.show()

分析:由图看出有一个离群点,大部分数据集中在2000-4000之间,也有少部分数据位于下界,箱型图提供了一个异常值标准

 2.频率分布直方图

数据:catering_fish_congee.xls (“捞起生鱼片”每日销售额)

频率直方图:

  1. # 代码3-3 捞起生鱼片的季度销售情况
  2. import pandas as pd
  3. import numpy as np
  4. catering_sale = './catering_fish_congee.xls' # 餐饮数据
  5. data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引
  6.  
  7. bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
  8. labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)',
  9. '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)']
  10.  
  11. data['sale分层'] = pd.cut(data.sale, bins, labels=labels)
  12. # aggResult = data.groupby(by=['sale分层'])['sale'].agg({'sale',np.size})
  13. aggResult = data.groupby(by=['sale分层'])['sale'].agg(np.size)
  14. print(aggResult)
  15.  
  16. pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100
  17. print(pAggResult)
  18.  
  19. import matplotlib.pyplot as plt
  20. plt.figure(figsize=(10,6)) # 设置图框大小尺寸
  21. pAggResult.plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图
  22. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  23. plt.title('3148-Tang季度销售额频率分布直方图',fontsize=20)
  24. plt.show()

3.绘制饼图

数据:catering_dish_profit.xls (不同菜品在某段时间的销售分布)

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. catering_dish_profit = './catering_dish_profit.xls' # 餐饮数据
  4. data = pd.read_excel(catering_dish_profit) # 读取数据
  5.  
  6. #绘制饼图
  7. x = data['盈利']
  8. labels = data['菜品名']
  9. plt.figure(figsize=(10,6)) # 设置图框大小尺寸
  10. plt.pie(x,labels=labels)# 绘制饼图
  11. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  12. plt.title('3148-Tang菜品销售量分布(饼图)',fontsize=15)
  13. plt.axis('equal')
  14. plt.show()

4.条形图:

  1. #绘制条形图
  2. x = data['菜品名']
  3. y = data['盈利']
  4. plt.figure(figsize=(10,6)) # 设置图框大小尺寸
  5. plt.bar(x,y,color='g')# 绘制饼图
  6. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  7. plt.xlabel('菜品')
  8. plt.ylabel('销量')
  9. plt.title('3148-Tang菜品销售量分布(条形图)',fontsize=15)
  10. plt.show()

5.用于比较数据--折线图

数据:dish_sale.xls,不同部门各月份的销售额

折线图:

  1. #部门之间销售金额比较
  2. data = pd.read_excel("./dish_sale.xls") # 读取数据
  3.  
  4. plt.figure(figsize=(10,6)) # 设置图框大小尺寸
  5.  
  6. plt.plot(data['月份'],data['A部门'],color='skyblue',label='A部门',marker='o')
  7. plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='*')
  8. plt.plot(data['月份'],data['C部门'],color='yellow',label='C部门',marker='s')
  9.  
  10. plt.legend()#显示图例
  11. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  12. plt.title('3148-Tang部门之间销售金额比较',fontsize=15)
  13. plt.ylabel('销售额(万元)')
  14. plt.show()

数据:dish_sale_b'.xls,B部门各年份之间销售金额比较

折线图:

  1. #B部门各年份之间销售金额比较
  2. data = pd.read_excel("./dish_sale_b.xls") # 读取数据
  3.  
  4. plt.figure(figsize=(10,6)) # 设置图框大小尺寸
  5.  
  6. plt.plot(data['月份'],data['2012年'],color='green',label='2012年',marker='o')
  7. plt.plot(data['月份'],data['2013年'],color='yellow',label='2013年',marker='*')
  8. plt.plot(data['月份'],data['2014年'],color='purple',label='2014年',marker='s')
  9.  
  10. plt.legend()#显示图例
  11. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  12. plt.title('3148-TangB部门各年份之间销售金额比较',fontsize=15)
  13. plt.ylabel('销售额(万元)')
  14. plt.show()

分析:总体来看,3个部门的销售额呈递减趋势,A部门与C部门的递减趋势比较平稳;B部门的销售额下降趋势比较明显,进一步分析造成这种现象的原因,可能是原材料不足

6.周期性分析

数据:user.csv(某单位日用电量)

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3.  
  4. df_normal = pd.read_csv("./user.csv") #读入数据
  5. plt.figure(figsize=(10,6))
  6. plt.plot(df_normal["Date"],df_normal["Eletricity"],color='green')
  7. plt.xlabel("日期")
  8. plt.ylabel("每日电量")
  9.  
  10. # 设置x轴刻度间隔
  11. x_major_locator = plt.MultipleLocator(7)
  12. ax = plt.gca()
  13. ax.xaxis.set_major_locator(x_major_locator)
  14. plt.title("3148Tang-正常用户电量趋势")
  15. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  16. plt.show() # 展示图片

数据:Steal user.csv(窃电用户数据)

  1. # 窃电用户用电趋势分析
  2. df_steal = pd.read_csv("./Steal user.csv")
  3. plt.figure(figsize=(10, 6))
  4. plt.plot(df_steal["Date"],df_steal["Eletricity"],color='yellow')
  5. plt.xlabel("日期")
  6. plt.ylabel("日期")
  7.  
  8. # 设置x轴刻度间隔
  9. x_major_locator = plt.MultipleLocator(7)
  10. ax = plt.gca()
  11. ax.xaxis.set_major_locator(x_major_locator)
  12. plt.title("3148Tang-窃电用户电量趋势",fontsize=15)
  13. plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
  14. plt.show() # 展示图片

 7.帕累托图

  1. import pandas as pd
  2.  
  3. #初始化参数
  4. dish_profit = './catering_dish_profit.xls' #餐饮菜品盈利数据
  5. data = pd.read_excel(dish_profit, index_col = u'菜品名')
  6. data = data[u'盈利'].copy()
  7. data.sort_values(ascending = False)
  8. #降序排列
  9. import matplotlib.pyplot as plt #导入图像库
  10. plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
  11. plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
  12.  
  13. plt.figure()
  14. data.plot(kind='bar')
  15. plt.ylabel(u'盈利(元)')#左侧y轴,右侧y
  16. p = 1.0*data.cumsum()/data.sum()
  17. p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)
  18. 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%处的标记。这里包括了指定箭头样式。
  19. #注释格式规定,点的位置,注释内容,箭头样式
  20. plt.ylabel(u'盈利(比例)')
  21. plt.title("3148Tang-菜品盈利数据帕累托图",fontsize=15)
  22. plt.show()

8.相关性分析

  1. import pandas as pd
  2. catering_sale = './catering_sale_all.xls' #餐饮数据,含有其他属性
  3. data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
  4. #相关系数矩阵,即给出了任意两款菜式之间的相关系数
  5. data.corr()
  6. pd.options.display.float_format = '{:,.2f}'.format ## 指定小数位数
  7. data.corr()

  1. #只显示“百合酱蒸凤爪”与其他菜式的相关系数
  2. print(data.corr()[u'百合酱蒸凤爪'])
  3. data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']) #计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数

结果:

 9.python主要数据探索函数

参考链接

(1)计算协方差矩阵 cov()

  1. # 计算6x5随机矩阵的协方差矩阵
  2. import pandas as pd
  3. import numpy as np
  4. D = pd.DataFrame (np.random. randn (6, 5) ) #产生6X5随机矩阵
  5. D.cov() #计算协方差矩阵

(2)绘制正弦与余弦虚线

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.linspace(0,2*(np.pi))
  4. y1 = np.sin(x)
  5. y2 = np.cos(x)
  6. plt.figure()
  7. plt.plot(x,y1,'r-o')
  8. plt.plot(x,y2,'b-*')
  9. plt.legend("sin(x)")

(3)饼图  hist()

  1. import matplotlib.pyplot as plt #导入作图库
  2. %matplotlib inline
  3. # The slices will be ordered and plotted counter-clockwise.
  4. labels = ' Frogs', 'Hogs', ' Dogs', 'Logs' , #定义标签
  5. sizes = [15, 30, 45, 10] # 每一块的比例
  6. colors = [ 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral' ] #每一块的颜色
  7. explode = (0, 0.1, 0, 0) #突出显示,这里仅仅突出显示第二块(即'Hogs')
  8. plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',shadow=True, startangle=90)
  9. plt .axis ('equal') #显示为圆(避免比例压缩为椭圆)
  10. plt.show()

(4)函数图

  1. import matplotlib.pyplot as plt # 导入作图库
  2. import numpy as np
  3. import pandas as pd
  4.  
  5. %matplotlib inline
  6. plt. rcParams ['font.sans-serif' ] = [ 'SimHei' ] #用来正常显示中文标签
  7. plt. rcParams [ 'axes.unicode_minus'] = False #用来正常显示负号
  8. x = pd. Series (np.exp (np. arange (20) ) ) #原始数据
  9. x.plot (label = u'原始数据图',legend = True,color='lightskyblue')
  10. plt.title('3148-Tang',fontsize=15)
  11. plt.show()
  12. x.plot (logy = True,label = u'原始数据图',legend = True,color='lightcoral')
  13. plt.show()

(5)误差棒图

  1. import matplotlib.pyplot as plt # 导入作图库
  2. import numpy as np
  3. import pandas as pd
  4. %matplotlib inline
  5. error = np. random. randn (10) #定义误差列
  6. y = pd.Series (np. sin (np. arange (10) ) ) #均值数据列
  7. y .plot (yerr = error) #绘制误差图
  8. plt.title('3148-Tang误差棒图',fontsize=15)
  9. plt.show()

第3章---数据探索(python数据挖掘)的更多相关文章

  1. Python数据挖掘课程

    [Python数据挖掘课程]一.安装Python及爬虫入门介绍[Python数据挖掘课程]二.Kmeans聚类数据分析及Anaconda介绍[Python数据挖掘课程]三.Kmeans聚类代码实现.作 ...

  2. 数据挖掘(二)用python实现数据探索:汇总统计和可视化

    今天我们来讲一讲有关数据探索的问题.其实这个概念还蛮容易理解的,就是我们刚拿到数据之后对数据进行的一个探索的过程,旨在了解数据的属性与分布,发现数据一些明显的规律,这样的话一方面有助于我们进行数据预处 ...

  3. python数据挖掘之数据探索第一篇

    目录 数据质量分析   当我们得到数据后,接下来就是要考虑样本数据集的数据和质量是否满足建模的要求?是否出现不想要的数据?能不能直接看出一些规律或趋势?每个因素之间的关系是什么?   通过检验数据集的 ...

  4. 利用python进行泰坦尼克生存预测——数据探索分析

    最近一直断断续续的做这个泰坦尼克生存预测模型的练习,这个kaggle的竞赛题,网上有很多人都分享过,而且都很成熟,也有些写的非常详细,我主要是在牛人们的基础上,按照数据挖掘流程梳理思路,然后通过练习每 ...

  5. Python数据挖掘——数据预处理

    Python数据挖掘——数据预处理 数据预处理 数据质量 准确性.完整性.一致性.时效性.可信性.可解释性 数据预处理的主要任务 数据清理 数据集成 数据归约 维归约 数值归约 数据变换 规范化 数据 ...

  6. Python数据挖掘——数据概述

    Python数据挖掘——数据概述 数据集由数据对象组成: 数据的基本统计描述 中心趋势度量 均值 中位数 众数 中列数 数据集的最大值和最小值的平均 度量数据分布 极差 最大值与最小值的差 四分位数 ...

  7. Python机器学习之数据探索可视化库yellowbrick

    # 背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plot ...

  8. python数据探索

    数据质量分析 脏数据包括:缺失值:异常值:不一致的值:重复数据及含有特殊符号的数据: 1.缺失值处理 统计缺失率,缺失数 2.异常值处理 (1)简单统计量分析 (2)3Q原则 正态分布情况下,小概率事 ...

  9. Python 数据分析—第九章 数据聚合与分组运算

    打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one ...

  10. Python机器学习之数据探索可视化库yellowbrick-tutorial

    背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plotly ...

随机推荐

  1. php 合并,拆分,追加,查找,删除数组教程

    1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: array array_merg ...

  2. PC端 图片宽度是百分比,动态设置图片高度为 6:9

    我们知道图片宽度可以设置  百分比,但是高度要给一个固定值  不然不生效,并且产品要求图片显示必须是9:6,这开始确实难倒我了 后面想了一下用js  获取图片宽度  动态的计算高度就行了,超简单 se ...

  3. 3.Linux安装docker

    Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中. 进入docker官网找到安装文档 https://docs ...

  4. 剪裁正方形图片cropper

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  5. redhat7

    systemctl systemctl enable sshd 开机启动某服务 systemctl disable sshd 开机不启动某服务 systemctl is-enabled sshd查看某 ...

  6. leetcode 27. 移除元素 【时间击败100.00%】【内存击败84.67%】

    1 public int removeElement(int[] nums, int val) { 2 int last = nums.length - 1; 3 for (int i = 0; i ...

  7. DDD(三)DDD实战、贫血模型与充血模型

    DDD(三)DDD实战.贫血模型与充血模型 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 贫血模型与充血模型 1.贫血模型:一 ...

  8. 通过网页下载qq音乐在线听歌曲

    1.输入网址 打开 qq音乐网页版 https://y.qq.com/ 2.搜索喜欢的歌曲 3.播放喜欢的歌曲 4.谷歌浏览器检查代码 5.找到 network栏 搜索 m4a 6.找到相关地址 复制 ...

  9. python 处理CAD文件

    注意:如下的两个脚本都是我自己亲自试过的,可以运行得到结果!可以直接运行!可以直接运行! 网上的中文api能找到的不够全,工作中有用到部分功能,自己从中文英文资料里面找到一些,这里做一些总结. 画图a ...

  10. 【Java】生成随机字符串

    package com.runsky.utils; import java.util.Random; public class GetRandom { private static final Str ...