8 数据分析

8.1 基本统计分析(描述性统计分析)

一般统计某个变量的最小值,第一个四分位值,中值,第三个四分位值,以及最大值

均值(Mean),中位数(Median)和众数(Mode)

其中均值和中位数用于定量的数据,众数用于定性的数据

对于定 量数据( Data )来说,均值是总和除以总量 N,中位数是数值大小位于中间(奇偶总量处理不同)的值,均值相对中位位数来说,包含的信息量更大,但是容易受异常的影响。

描述性统计分析函数为 describe 。该函数返回值有均值、标准差、最大 值、最小值、分位数等。括号中可以带一些参数,

size计数(此函数不需要括号),sum()求和,mean()平均值, var()方差,std()标准差,median()中位数,mode()众数

# -*- coding: UTF-8 -*-
'''
@Author :Jason
数据分析中的一些特殊值,比如平均值,最大值,方差,标准差等等
'''
def BasicInfo():import pandas as pddf = pd.read_excel(r"./files/i_nuc.xls",sheet_name=6)#sheet_name可以写具体sheet名字符串,也可以写第几个,注意从0开始# print(df.head())# print(df["英语"].describe())'''count    20.000mean     72.550std       7.178min      60.00025%      66.00050%      73.50075%      76.250max      85.000Name: 英语, dtype: float64'''# print(df.describe()) #DF的各列相应的数据'''Unnamed: 0            学号            班级  ...         数分         高代         解几count    20.00000  2.000000e+01  2.000000e+01  ...  20.000000  20.000000  20.000000mean      9.50000  2.308024e+09  2.308024e+07  ...  62.850000  62.150000  69.650000std       5.91608  8.399160e+01  8.522416e-01  ...   9.582193  15.142394  10.643876min       0.00000  2.308024e+09  2.308024e+07  ...  40.000000  23.000000  44.00000025%       4.75000  2.308024e+09  2.308024e+07  ...  60.750000  56.750000  66.75000050%       9.50000  2.308024e+09  2.308024e+07  ...  63.500000  65.500000  71.00000075%      14.25000  2.308024e+09  2.308024e+07  ...  69.250000  71.250000  77.000000max      19.00000  2.308024e+09  2.308024e+07  ...  78.000000  90.000000  83.000000[8 rows x 9 columns]'''# print(df["解几"].size)   #这里的size 没有括号()# #20# print(df["解几"].var()) #最大值max(),最小值min(),和sum(),平均值mean(),var()方差,std()标准差#这里处理用mean()来算样本均值import numpy as npprint(np.mean(df["数分"]),np.average(df["数分"]),df["数分"].mean()) #62.85 62.85 62.85if __name__ == "__main__":BasicInfo()

8.2 分组分析

根据字段将分析对象分成不同的部分,以对比分析各组之间差异性的一种方法
    常用的统计指标: 计数,求和,平均值
    命令:
        df.groupby(by=["分类1","分类2",...])["被统计的列"].agg({列别名1:统计函数1,列别名:统计函数2,...})

其中agg最后不好写成字典格式 FutureWarning: using a dict with renaming is deprecated and will be removed

# -*- coding: UTF-8 -*-
'''
@Author :Jason
df.groupby(by=["分类1","分类2",...])["被统计的列"].agg({列别名1:统计函数1,列别名:统计函数2,...})by 表示用于分组的列[] 表示用于统计的列.agg 表示统计别名显示统计值的名称,统计函数用于统计数据。常用size,sum,mean提示,agg好像会逐渐取消,所以还是一个个算比较好
'''
import pandas as pd
import numpy as np
class Groupby:def __init__(self):self.df = pd.read_excel(r'./files/i_nuc.xls',sheet_name=6)def printp(self):afterGbInfo1 = self.df.groupby(by="班级")["军训","英语","体育","性别"].mean()# print(afterGbInfo1)'''军训        英语        体育班级                                       23080242  81.333333  70.833333  73.00000023080243  85.500000  71.000000  60.66666723080244  64.375000  75.000000  75.375000结合实例理解: 先根据班级分组,再算出指定科目的平均分'''afterGbInfo2 = self.df.groupby(by=["班级", "性别"])["军训", "英语", "体育"].mean()# print(afterGbInfo2)'''军训         英语         体育班级      性别                                 23080242 女   83.500000  69.500000  89.500000男   80.250000  71.500000  64.75000023080243 女   86.000000  69.333333  42.666667男   85.000000  72.666667  78.66666723080244 女   46.500000  74.500000  77.000000男   70.333333  75.166667  74.833333结合实例理解:先按班级分组,再按性别分组,再算指定列的平均值'''afterGbInfo3 = self.df.groupby(["班级", "性别"])["军训"].agg({"总分":np.sum,"人数":np.size})print(afterGbInfo3)'''总分  人数班级       性别         23080242 女   167   2男   321   423080243 女   258   3男   255   323080244 女    93   2男   422   6'''afterGbInfo4 = self.df.groupby(["班级", "性别"])["军训", "英语", "体育", "性别"].agg({"总分": np.sum, "人数": np.size})# print(afterGbInfo4)'''总分           人数      军训   英语   体育 体育 军训 英语班级       性别                        23080242 女   167  139  179  2  2  2男   321  286  259  4  4  423080243 女   258  208  128  3  3  3男   255  218  236  3  3  323080244 女    93  149  154  2  2  2男   422  451  449  6  6  6数组这样太多反而更复杂了,'''if __name__ == "__main__":GB = Groupby()GB.printp()

8.3 分布分析  cut==>分组最好理解
   将数据(定量数据)进行等距 或 不等距的分组,研究各组分布规律的一种分析方法

# -*- coding: UTF-8 -*-
'''
@Author :Jason
@Date   :2019/11/17 16:56
@Desc   :Crate By Jason
'''
import pandas as pd
import numpydef Cut():df = pd.read_excel("./files/i_nuc.xls",sheet_name=6)df["total"] = df["英语"] + df["体育"] + df["军训"] + df["数分"] + df["高代"] + df["解几"]# print(df["total"].head())'''0     3541     3702     3913     4004     407Name: total, dtype: int64'''# print(df["total"].describe())'''count     20.000000mean     413.250000std       36.230076min      354.00000025%      386.00000050%      416.50000075%      446.250000max      457.000000Name: total, dtype: float64'''bins = [df["total"].min()-1,400,450,df["total"].max()+1]labels = ["及格","良好","优秀"]newDf = pd.cut(df["total"],bins=bins,labels = labels)df["等级"] = newDf# print(df.head())'''Unnamed: 0          学号        班级  姓名 性别  英语  体育  军训  数分  高代  解几  total  等级0           0  2308024241  23080242  成龙  男  76  78  77  40  23  60    354  及格1           1  2308024244  23080242  周怡  女  66  91  75  47  47  44    370  及格2           2  2308024251  23080242  张波  男  85  81  75  45  45  60    391  及格3           3  2308024249  23080242  朱浩  男  65  50  80  72  62  71    400  及格4           4  2308024219  23080242  封印  女  73  88  92  61  47  46    407  良好'''print(df.groupby(by = ["等级"])["total"].agg(numpy.size))'''等级及格    7良好    9优秀    4Name: total, dtype: int64'''
if __name__ == "__main__":Cut()

8.4 交叉分析
    分析两个或者两个以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析,一般分为定量、定量分组交叉;
    定量、定性分组分析;定性、定性分组交叉

# -*- coding: UTF-8 -*-
'''
@Author :Jason
交叉分析分析两个或者两个以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析,一般分为定量、定量分组交叉;定量、定性分组分析;定性、定性分组交叉
pivot_table(values,index,colnums,aggfunc,fill_value)values 数据透视表中的值index 数据透视中的行colnums 数据透视表的列aggfunc 表示统计函数fill_value 表示NA缺失值的同一替换返回值:数据透视表的结果
注意:默认对所有的数据列进行透视,非数据列会自动删除,例如:性别
'''
from pandas import read_excel
from pandas import pivot_table
import numpy
import pandas as pddef pivot_table_Exanple():df = read_excel(r'./files/i_nuc.xls',sheet_name=6)info1 = df.pivot_table(index=["班级","姓名"]) #透视所有数据列,性别列被自动删除# print(info1)'''Unnamed: 0    体育  军训    学号     数分  英语  解几  高代班级      姓名                                                 23080242 周怡            1  91  75  2308024244  47  66  44  47封印            4  88  92  2308024219  61  73  46  47张波            2  81  75  2308024251  45  85  60  45成龙            0  78  77  2308024241  40  76  60  23朱浩            3  50  80  2308024249  72  65  71  62迟培            5  50  89  2308024201  71  60  71  7623080243 余皓            8  67  85  2308024326  65  66  71  61李上初          10  90  84  2308024342  60  76  60  66李华            6  61  84  2308024347  61  67  78  65李嘉            9   0  90  2308024320  60  62  77  67郭窦           11  67  84  2308024310  64  79  79  64陈田            7  79  86  2308024307  69  76  69  4023080244 周路           14  80   0  2308024446  61  76  80  74姜毅涛          12  71   0  2308024435  61  77  76  73李侧通          17  96  91  2308024428  69  64  77  60李大强          16  76  77  2308024433  78  79  70  70李晓亮          19  60  85  2308024422  72  85  83  72林建祥          15  72  81  2308024421  63  72  75  90王慧           18  74  93  2308024402  70  73  75  71赵宇           13  74  88  2308024432  68  74  71  70'''info2 = df.pivot_table(["军训","英语","体育"],index=["班级","姓名"])# print(info2)'''体育  军训  英语班级       姓名             23080242 周怡   91  75  66封印   88  92  73张波   81  75  85成龙   78  77  76朱浩   50  80  65迟培   50  89  6023080243 余皓   67  85  66李上初  90  84  76李华   61  84  67李嘉    0  90  62郭窦   67  84  79陈田   79  86  7623080244 周路   80   0  76姜毅涛  71   0  77李侧通  96  91  64李大强  76  77  79李晓亮  60  85  85林建祥  72  81  72王慧   74  93  73赵宇   74  88  74'''df["total"] = df["英语"] + df["体育"] + df["军训"] + df["数分"] + df["高代"] + df["解几"]df["等级"] = pd.cut(df["total"],bins=[df["total"].min()-1,400,450,df["total"].max()+1],labels = ["及格","良好","优秀"])info3 = df.pivot_table(values=["total"],index=["等级"],columns=["性别"],aggfunc=[numpy.size,numpy.mean])print(info3)'''size         mean            total        total            性别     女  男   女           男等级                                 及格     3  4  365.666667  375.750000良好     3  6  420.000000  430.333333优秀     1  3  456.000000  455.666667'''if __name__ == "__main__":pivot_table_Exanple()

8.5 结构分析
    在分组分析以及交叉分析的基础之上,计算各组成部分所占的比重,进而分析总体的内部特征的一种交叉分析方法
    这里主要指定性分组,定性分组一般看结构,它的重点在于计算个组成部分占总体的比重.

# -*- coding: UTF-8 -*-
'''
@Author :Jason
结构分析
'''
import numpy as np
import pandas as pd
from pandas import read_exceldef StructuralAnaly():df = read_excel(r'./files/i_nuc.xls',sheet_name="Sheet7")df["total"] = df["英语"] + df["体育"] + df["军训"] + df["数分"] + df["高代"] + df["解几"]df_pt = df.pivot_table(values=["total"],index=["班级"],columns=["性别"],aggfunc=[np.sum])# print(df_pt)'''sum      total      性别       女     男班级                  23080242   777  156223080243  1209  127023080244   827  2620'''# print(df_pt.sum())'''性别sum  total  女     2813男     5452dtype: int64'''# print(df_pt.sum(axis=1)) #按列统计'''班级23080242    233923080243    247923080244    3447dtype: int64'''# print(df_pt.div(df_pt.sum(axis=1),axis=0)) #按列占比'''sum          total          性别         女         男班级                          23080242  0.332193  0.66780723080243  0.487697  0.51230323080244  0.239919  0.760081'''print(df_pt.div(df_pt.sum(axis=0),axis=1)) #按行占比'''sum          total          性别        女         男班级                          23080242  0.276218  0.28650023080243  0.429790  0.23294223080244  0.293992  0.480558'''if __name__ == "__main__":StructuralAnaly()

8.6 相关分析
  是否存在某种依赖关系==> 是否线性相关 ==>

两个变量 ==> 散点图.看变量之间是否符合某个变化规律

多个变量间 ==> 散点矩阵图 + 各变量间的散点图

||

相关系数:

Pearson相关系数:一般用于分析两个变量间的关系,要去连续变量的取值服从正态分布

Spearman秩相关系数和判定系数(等级相关系数):不符合Peason的

# -*- coding: UTF-8 -*-
'''
@Author :Jason
相关分析
DataFrame.corr()  ==  返回DataFrame计算每列两两之间的相似度
Series.corr(other) == 返回一个数值,大小表示相关度计算该序列与传入的序列之间的相关度
'''
import numpy as np
import pandas as pddef LinerRelated():df = pd.read_excel(r'./files/i_nuc.xls',sheet_name="Sheet7")linerNum = df["高代"].corr(df["数分"]) #计算两列之间的相关度# print(linerNum) #0.6077408233260108 查表可知中度相关linerInfo = df.loc[:,["英语","体育","军训","解几","数分","高代"]].corr()print(linerInfo)'''英语       体育      军训        解几        数分        高代英语  1.000000  0.375784 -0.252970  0.027452 -0.129588 -0.125245体育  0.375784  1.000000 -0.127581 -0.432656 -0.184864 -0.286782军训 -0.252970 -0.127581  1.000000 -0.198153  0.164117 -0.189283解几  0.027452 -0.432656 -0.198153  1.000000  0.544394  0.613281数分 -0.129588 -0.184864  0.164117  0.544394  1.000000  0.607741高代 -0.125245 -0.286782 -0.189283  0.613281  0.607741  1.000000'''
if __name__ == '__main__':LinerRelated()

8.7 实际案例:电商数据分析

数据如图,对各产品之间的销售情况做相关分析

# -*- coding: UTF-8 -*-
'''
@Author :Jason
数据分析电商案例
'''
from pandas import read_excel
import pandas as pd
import numpy as np
class ECommerce(object):def __init__(self):self.df = read_excel(r"./files/i_nuc.xls",sheet_name=0)def analy(self):df = self.dflinerRelat = df.loc[:6].corr()# print(linerRelat)'''优盘      电子表      电脑支架     插座     电池        音箱        鼠标     usb数据线     手机充电线     键盘  优盘       1.000000   -0.164718 -0.300081  0.823515  0.141810  0.348761  0.178440   -0.096369 -0.466076  0.537446电子表     -0.164718  1.000000  0.710849  0.032032 -0.072249  0.079744  0.523711   0.453210  0.178404 -0.227296  电脑支架   -0.300081  0.710849  1.000000  0.038194 -0.460049 -0.291185  0.190518   -0.221613 -0.236130 -0.530569  插座       0.823515  0.032032  0.038194  1.000000  0.345195  0.376368  0.449717   -0.227473 -0.501474  0.622129  电池       0.141810  -0.072249 -0.460049  0.345195  1.000000  0.672230  0.601558   0.357665  0.316784  0.845828  音箱       0.348761  0.079744  -0.291185  0.376368  0.672230  1.000000  0.809477   0.124411  0.147405  0.756389  鼠标       0.178440  0.523711   0.190518  0.449717  0.601558  0.809477  1.000000    0.160018  0.262633  0.624991  usb数据线  -0.096369  0.453210 -0.221613 -0.227473  0.357665  0.124411  0.160018    1.000000  0.483424  0.057932  手机充电线  -0.466076  0.178404 -0.236130 -0.501474  0.316784  0.147405  0.262633   0.483424  1.000000  0.174410 键盘       0.537446  -0.227296 -0.530569  0.622129  0.845828  0.756389  0.624991   0.057932  0.174410  1.000000'''#观察个数据之间的关系系数,寻找突破口#...没看出结论,案例说的是 键盘鼠标电池之间的关联比较大if __name__ == "__main__":EC = ECommerce()EC.analy()

参照:《基于Python的大数据分析基础及实战》

基于Python的大数据分析基础(九)--- 数据分析相关推荐

  1. 【数据分析】基于Python的一次职位招聘数据分析(入门参考)

    基于Python的一次职位招聘数据分析 1 Python数据分析常用的库和库函数 2 一次完整的数据分析过程 画图 工作地点处理 工资计量单位统一 公司类型 行业类型 参考 配套资源下载 职位信息分析 ...

  2. 基于python的旅游系统_基于python的去哪儿网旅游数据分析

    20011 基于python的去哪儿网旅游数据分析 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段 ...

  3. 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计

    基于Python 的"大学计算机基础"课程教学设计 日期:2018-04-11 04:32 摘要 培养非计算机专业大学生的计算思维能力,在"大学计算机基础"课程 ...

  4. 基于python的分布式扫描器_一种基于python的大数据分布式任务处理装置的制作方法...

    本发明涉及数据处理技术,具体是一种基于python的大数据分布式任务处理装置. 背景技术: 本发明提供一种分布式队列任务处理方案和装置,该方法可以提供分布式处理python任务,任务类型包括爬虫及其他 ...

  5. 基于Python的中英文分词基础:正则表达式和jieba分词器

    基于Python的中英文分词基础:正则表达式和jieba分词器 前言介绍 英文字符串处理 Python中的str 正则表达式 Python中的正则表达式模块 re 小练习 字符串中出现频次最多的字母 ...

  6. 基于python的量化投资基础(Chapter.0)——概述

    量化交易概述 量化交易就是通过数理统计模型方式及计算机程序化发出买卖指令去实现投资理念.实现投资策略的过程,以获取稳定收益为目的的交易方式. 广义的量化投资=基于现代科学方法的理论体系+研究方式+工程 ...

  7. 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3

    reading Foundations for Analysis with Python Day 5 <Python数据分析基础>封面 这篇笔记开始记录数据库的内容,会用两篇笔记分别讲述P ...

  8. 简书python数据分析基础reading_Python数据分析基础ReadingDay1

    从今天(2018-3-13)到3月26号本目录下会更新<Python数据分析基础>这本书的一些读书笔记和思考. 书目信息: 原书名: Foundations for Analysis wi ...

  9. 一个基于Python数据大屏可视化开源项目

    ‍‍ 今天给大家介绍一个开源数据大屏可视化工具. 项目简介 这是一个基于Python开发的,结构简单的项目.可通过配置Json的数据,实现数据报表大屏显示. 优点:代码清晰.结构简单.配置Json数据 ...

最新文章

  1. web前端,我的新开始
  2. C#调用C++的DLL 所有数据类型转换方式
  3. 从汉诺塔讲递归的思考方式
  4. spring aop抽取切点表达式
  5. 嵩天-Python语言程序设计程序题--第一周:Python基本语法元素
  6. 办学10年,进入全国前10名!这所神奇的高校,迎来10岁生日
  7. @async 没有异步_javascript之异步函数
  8. Python 基础—— collections 模块
  9. 软件测试黑盒用例文档,软件测试黑盒白盒测试用例.pdf
  10. Xor异或是什么意思? - 已解决 - 搜搜问问
  11. 修改保存hosts文件
  12. SQL Server 2005 express下载地址
  13. 城建税和教育费附加怎么计算
  14. matlab随机函数
  15. Spring MVC的数据绑定(简单数据绑定+POJO类型绑定)
  16. 前端之jquery基础
  17. JAVA 文件上传格式限制_关于servlet文件上传限制文件大小的问题,求高手帮忙
  18. ACL2022 PAIE: Prompting Argument Interaction for Event Argument Extraction
  19. Java百度识别身份证照片、驾驶证识别
  20. 第一次参与国际空间站ISS 的SSTV活动

热门文章

  1. 小猫咪的面向对象,一个猫类,三个对象,
  2. Mac Docker镜像源修改
  3. 实习打杂记录,xboot中使已上传文件能够下载。
  4. 前端低代码调研与总结
  5. Android应用内在线查看PDF文件
  6. 傲游浏览器有两个窗口显示的解决
  7. 设计模式01-入门介绍篇
  8. java+servlet+jsp大学生物品租赁网
  9. 【计算机视觉】PnP算法简介与代码解析-柴政(solvepnp理论篇)
  10. json在线解析与格式化