python数据分析 -第三次笔记


1.交叉分析
2.分组分析


1.交叉分析

交叉分析的含义是在纵向分析法和横向分析法的基础上,从交叉、立体的角度出发,由浅入深、由低级到高级的一种分析方法。这种方法虽然复杂,但它弥补了“各自为政”分析方法所带来的偏差。
其实主要的用法是:用于分析两个变量之间的关系。
交叉分析一定要和假设检验连用会更好
首先,作者的理解是:交叉分析,一定是二维的,需要两个因子,要不无法交叉,那既然交叉了,就可以做成透视表,这两个因子一个为行,一个为列,然后做假设检验,判断P值是否小于0.0.5,这样就更加清晰明了
编程实现:
采用的是T检验假设
*第一步,提取数据

import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
#设置图片的字体  font_scale
sns.set_context(font_scale=1.5)
df=pd.read_csv("./data/HR.csv")
#分组indices获得分组后的数据的索引,下标
#'''
dp_indices=df.groupby(by="department").indices
#取出left的sales的值
#loc : 通过行标签索引行数据
#iloc : 通过行号索引行数据
sales_values=df["left"].iloc[dp_indices["sales"]].values
#取出left的technical的值
technical_values=df["left"].iloc[dp_indices["technical"]].values

*第二步,T检验

#输出这两个变量的t检验的P值  ss.ttest_ind()[1]
print(ss.ttest_ind(sales_values,technical_values)[1])
#然后分组后的department数据,按组为一个因子两两求P值
#取出department分组后的keys键名称
dp_keys=list(dp_indices.keys())
#初始化一个dp_t_mat的矩阵
dp_t_mat=np.zeros([len(dp_keys),len(dp_keys)])
#便利每一个数据
for i in range(len(dp_keys)):for j in range(len(dp_keys)):#t检验p_value=ss.ttest_ind(df["left"].iloc[dp_indices[dp_keys[i]]].values,\df["left"].iloc[dp_indices[dp_keys[j]]].values)[1]#t检验的P值小于0.05赋-1,就是让heatmap绘出的图形,更加具有区分性if p_value<0.05:dp_t_mat[i][j]=-1else:#把P值赋给dp_t_mat矩阵dp_t_mat[i][j] = p_value

*第三步,绘图

#画图
sns.heatmap(dp_t_mat,xticklabels=dp_keys,yticklabels=dp_keys)
plt.show()

*利用透视表,交叉分析

#建一个透视表pd.pivot_table()
#values="left"我们看得值是left,横坐标index设置为promotion_last_5years,再指定一个salary,
#纵坐标columns  表示Work_accident,聚合方法aggfunc,设为平均数,是一个函数
piv_tb=pd.pivot_table(df,values="left",index=["promotion_last_5years","salary"],\columns=["Work_accident"],aggfunc=np.mean)
#画图,透视表,填入这张表piv_tb,最小值vmin,最大值vmax,颜色cmap
sns.heatmap(piv_tb,vmin=0,vmax=1,cmap=sns.color_palette("Reds",n_colors=256))
plt.show()

2.分组分析

*分组分析的含义:是指将客体(问卷、特征、现实)按研究要求进行分类编组,使得同组客体之间的差别小于各种客体之间的差别,进而进行分析研究的方法。
分组分析,一般是利用条形图绘制的,绘制条形图主要是利用seaborn模块的barplot()和countplot()条形图函数。
这里讲一下barplot()和countplot()之间的区别:
*barplot(条形图)
条形图表示数值变量与每个矩形高度的中心趋势的估计值,并使用误差线提供关于该估计值附近的不确定性的一些指示。具体用法如下:
*countplot()绘制
一个计数图可以被认为是一个分类直方图,而不是定量的变量。基本的api和选项与barplot()相同,因此您可以比较嵌套变量中的计数。(工作原理就是对输入的数据分类,条形图显示各个分类的数量)具体用法如下:
seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
注:countplot参数和barplot基本差不多,可以对比着记忆,有一点不同的是countplot中不能同时输入x和y,且countplot没有误差棒。

*分组分析的编程实现

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#设置图片的字体  font_scale
sns.set_context(font_scale=1.5)
df=pd.read_csv("./data/HR.csv")
#离散分组
#绘条形图
#sns.barplot(x="salary",y="left",hue="department",data=df)
#plt.show()
#连续分组
sl_s=df["satisfaction_level"]
sns.barplot(list(range(len(sl_s))), sl_s.sort_values())
plt.show()

绘图结果

*第二种,利用不纯度(Gini系数)

#可能平方和
def getProbSS(s):if not isinstance(s,pd.core.series.Series):s=pd.Series(s)prt_ary = pd.groupby(s, by=s).count().values / float(len(s))return sum(prt_ary**2)
#求Gini的值
def getGini(s1,s2):d=dict()for i in list(range(len(s1))):d[s1[i]]=d.get(s1[i],[]) + [s2[i]]return 1-sum([getProbSS(d[k])*len(d[k]) / float(len(s1)) for k in d])
print("getGini",getGini(s1,s2))

python数据分析的交叉分析和分组分析 -第三次笔记相关推荐

  1. Python数据分析大作业 4000+字 图文分析文档 销售分析

    资源地址:Python数据分析大作业 4000+字 图文分析文档 销售分析 +完整python代码 数据来自某商场,具体商业数据保密 资源地址:Python数据分析大作业 4000+字 图文分析文档 ...

  2. Python数据分析实战:降雨量统计分析报告分析

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python ,作者小小明 最近遇到一个有点烧脑的需求,其实也不算烧pytho ...

  3. 分布分析和分组分析_如何通过群组分析对用户进行分组并获得可行的见解

    分布分析和分组分析 数据分析 (DATA ANALYSIS) Being a regular at a restaurant is great. 乙 eing定期在餐厅是伟大的. When I sta ...

  4. Python数据分析实战:上海二手房价分析

    1 数据搜集 使用 urllib 库中的request 模块爬取赶集网发布的上海二手房信息,包括包括户型.面积.单价等,再使用BeautifulSoup 库解析爬取的HTML数据,最终将数据保存到CS ...

  5. Python数据分析案例—淘宝用户行为分析

    赛题与数据 一.项目背景 本数据报告以淘宝app平台为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括:日PV和日UV分析,付费率分析,复购行为分析,漏斗流失分析 ...

  6. Python数据分析项目实例4:使用seaborn分析泰坦尼克号生还者数据

    泰坦尼克号生还者数据集下载(免费):https://download.csdn.net/download/weixin_44940488/20814899 使用的分析软件:jupyter notebo ...

  7. python数据分析报告范文_Python数据实战分析之定量和定性数据分析

    数据分析中关于数据的部署 数据分析的最后一步--部署,旨在展示结果,也就是给出数据分析的结论.若应用场景为商业,部署过程将分析结果转换为对购买数据分析服务的客户有益的方案.若应用场景为科技领域,则将成 ...

  8. python数据分析实战项目—运用matplotlib可视化分析10000条北京各大区二手房区域信息(附源码)

    文章目录 开发工具 数据内容 实现代码 运行效果 10000条二手房信息下载地址 总结 开发工具 python版本:Python 3.6.1 python开发工具:JetBrains PyCharm ...

  9. python数据分析实战之阿里巴巴股票行情分析

    文章目录 1.明确需求和目的 2.数据收集 3.数据预处理 3.1 加载相关库和数据集 3.2 数据概览 3.3 数据格式处理 3.4 缺失值处理 4.数据分析 4.1 股票K线图 4.2 涨跌情况分 ...

最新文章

  1. POSIX多线程编程-条件变量pthread_cond_t
  2. 经常关注的、极具参考价值的网站收集(无限畅想版)
  3. 第八天- linux目录结构详细介绍
  4. 干货 | 如何系统学习 C 语言?
  5. springboot整合redis修改分区
  6. 程序员应具备的职业素质
  7. 42 可写成成三个整数的立方和
  8. 【Flink】Flink 源码之Buffer Debloating
  9. 关于自动化测试,你真的懂嘛?
  10. 【元胞自动机】基于matlab界面聚合元胞自动机模拟【含Matlab源码 2004期】
  11. JxBrowser使用心得和带中文翻译的文档分享
  12. 怎么样把书上的字很快的弄成电子版
  13. UML图箭头和实线虚线到底什么意思
  14. 天使投资喜欢什么样的商业计划书
  15. CC00054.bigdatajava——|Java分支结构.V04|——|Java.v04|ifelse.v02|判断负数和非负数|
  16. 力扣(145.102)补9.5
  17. Android Drawable图标生成工具
  18. android 8 忘记图案,安卓手机忘记锁屏图案密码六种解决办法
  19. 平衡面板数据中的缺失值可以存在吗?
  20. linux应急处理方法,Linux系统下6个常见紧急情况的应急处理方法

热门文章

  1. 多模态融合技术综述和应用
  2. 【AI参赛经验】汉字书法识别入门—by:真的学不会
  3. 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的删数方案(O((n-k)logk)优化)
  4. spring security——学习笔记(day05)-实现自定义 AuthenticationProvider身份认证-手机号码认证登录
  5. 使用IDEA生成DOC文档
  6. 聊聊NIPT基因检测技术
  7. Android-4.4模拟器
  8. Linux代码编译(模式切换、gdb、编译器之间的对比、彩色进度条、rpm与yum区别)
  9. 第四范式蒋仁皓:什么才是构建企业AI的关键要素
  10. 哥尼斯堡的“七桥问题”(C++)