python实现表格分析与建模_python实现数据分析与建模

前言

首先我们做数据分析,想要得出最科学,最真实的结论,必须要有好的数据。而实际上我们一般面对的的都是复杂,多变的数据,所以必须要有强大的数据处理能力,接下来,我从我们面临的最真实的情况,一步一步教会大家如何做。

1.数据的读取

(1)读取模块

Import pandas as pd

Import numpy as np

(2)读取表格的全部数据

df = pd.read_csv(".data/HR.csv")

(3)读取你所需要的数据

sl_s=df["sactisfaction_level"]

2. 数据的处理

2.1.异常值(空值)处理

2.1.1删除

首先,第一步是对空值的处理。

有两种,一种直接删除,另一种指代。

如果数据多,想简单一点,就直接删除,方法都很简单。

首先,建立一个DataFrame表

1.为了确定是否含有空值:

df.isnull() #如果含有空值,返回True

2.删除

df.dropna() #去掉含空值的行

如果想要删除某一个属性含空值的行就加入subset参数

df.dropna(subset=["B"]) #去掉B属性含空值的行

判断是否有重复的数据:

df.duplicated(["A"]) #A属性中重复的数据返回True

删除A属性重复的行

df.drop_duplicates(["A"])

df.drop_duplicates(["A"],keep=False) #删除A属性全部重复的行

df.drop_duplicates(["A"],keep=first) #删除A属性全部重复的行,保留第一个

df.drop_duplicates(["A"],keep=last) #删除A属性全部重复的行,保留最后一个

2.1.2指代

有些数据非常重点,不能删除,那我们就选择指代,也就是替换

#含空值的数据被替换为“b*”

df.fillna("b*")

#E属性中的含空值的数据被替换成该属性的平均值

df.fillna(df["E"].mean())

#插值替换

如果含空值的元素为最后一个,那么空值的数据替换成和上一个数据一样

怎么含空值的元素为中间,那么空值的数据被(上+下)/2代替

df["E"].interpolate()

#3次样条插值 order 参数就是几次样条插值

df["E"].interpolate(method="spline",order=3)

*函数

(4)异常值分析(含有就返回True) --isnull()

sl_s.isnull()

主要表示没有空值

(5)提取异常值的该属性信息

sl_s[sl_s.isnull()]

(6)提取异常值的表格全部信息

df[df["sactisfaction_level"].isnull()]

(7)丢弃异常值 --dropna()

sl_s=sl_s.dropna()

注:删除为空的异常值

可以利用where()把异常数据赋空,然后利用dropna()删除

(8)填充异常值 --fillna()

sl_s=sl_s.fillna()

(9)平均值 --mean()

sl_s.mean()

(10)标准差 --std()

Sl_s.std()

(11)最大值 --max()

sl_s.max()

(12)最小值 --min()

sl_s.min()

(13)中位数 --median()

sl_s.median()

(14)下四分位数 --quantile(q=0.25)

sl_s.quantile(q=0.25)

(15)上四分位数 --quantile(q=0.75)

sl_s.quantile(q=0.75)

(16)偏度 --skew()

sl_s.skew()

分析:小于0 是负偏 均值偏小,大部分数是比他的均值大的

大于 0 稍微有些振偏

远大于0, 是极度振偏,均值要比他的大多数值大好多。

(17)峰度 --kurt()

sl_s.kurt()

分析:<0 相比于正态分布,他的趋势相对平缓

远大于0 介绍他的形变是非常大的,所以是不靠谱的

(18)获得离散化的分布(numpy模块) --histogram()

np.histogram(sl_s.values,bins = np.arange(0.0,1.1,0.1))

结果分析:

[195,1214,532,974,…]

[0.0,0.1,0.2,0.3,0.4…]

代表0.0-0.1之间有195个数,0.1-0.2之间有1214个数,以此类推

分布间隔为0.1

3.利用四分位数来去除异常值

3.1.提取大于1的值

le_s[le_s>1]

3.2 去除大于1的异常值

le_s[le_s<=1]

3.3 提取正常值(利用四分位数)

3.3.1 下四分位

q_low=le_s.quantile(q =0.25)

3.3.2 上四分位

q_high=le_s.quantile(q=0.75)

3.3.3 四分位间距

q_interval=q_high-q_low

3.3.4 定义k的值

K=1.5~3之间

如果k=1.5,删除的异常值是中度异常

如果k=3.0,删除的异常值是极度异常

3.3.5 筛选

le_s=le_s[le_sq_low-k*q_interval]

3.4 数据的个数 --len()

len(le_s)

3.5离散分布直方图(numpy模块)

np.histogram(le_s.values,bins=np.arange(0.0,1.1,0.1))

3.6回顾数据的平均值,标准差,中位数,最大值,最小值,偏度,峰度,确定数据的正常。

4.静态结构分析

4.1每个值出现的次数 --values_counts()

np_s.value_counts()

4.2获取该数据的构成和比例(每个值的频率)

np_s.value_counts(normalize=True)

4.3 排序

np_s.value_counts(normalize=True).sort_index()

5.数据分区间

5.1把数据分成几份 --histogram()

np.histogram(amh_s.values,bins=10) 把数据分成10份

5.2另一种方法 加了区间,计算区间的频数

(左闭右开的区间)

Np.histogram(amh_s.values,bins = np.arange(amh_s.min(),amh_s.max()+10,10))

(左开右闭的区间)

amh_s.value_counts(bins=np.arange (amh_s.min(),amh_s.max()+10,10))

6.英文异常值数据的处理

6.1 首先,统计该数据的分布频数

s_s.value_counts()

6.2确定异常值的名字。

6.3把异常值赋空(NaN) --where()

s_s.where(s_s!="name")

意思是把”name”的数据赋空

6.4把赋空的异常值删除 --dropna()删除异常值

s_s.where(s_s!="name").dropna()

6.5 检查删除异常值的结果

s_s.where(s_s!="name").dropna().value_counts()

7.对比分析

7.1对表格中空值的行删除

Df = df.dropna(axis=0,how='any')

axis =0 ,代表的是行删除

how=‘any' 代表的是含有部分空值就执行行删除

how=‘all' 代表的是一行全部是空值执行行删除

7.2含有条件性的对异常值的删除

df=df[df["last_evaluation"]<=1] [df["salary"]!="name"][df["department" ]!="sale"]

7.3分组(比如:把同一部门的人分为一组) --groupby()

df.groupby("department")

7.4对分组后的组取均值

df.groupby("department").mean()

7.5 取部分数据(切片) --loc()

df.loc[:,["last_evaluation","department"]] .groupby("department")

7.6 取部分数据求平均

df.loc[:,["last_evaluation","department"]] .groupby("department").mean()

7.7 取部分数据求极差 --apply()

df.loc[:,["average_monthly_hours" ,"department"]].groupby ("department")[ "average_monthly_hours"]. apply(lambda x:x.max()-x.min())

总结

以上所述是小编给大家简介的python实现数据分析与建模 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对乐购源码网址的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 利用Coroutine实现跳动数字效果

纯粹转载&#xff1a;转载注明参考链接&#xff01; 参考链接&#xff1a;http://xataxnova.blog.163.com/blog/static/236620063201451061738122/&#xff0c;作者&#xff1a;网易博客 xataxnova 示例代码&#xff1a;&#xff08;将该脚本绑在一个Lable对象上&#xff0c;即…

java mvc 案例_springmvc经典案例

本想自己写一下总结&#xff0c;但是发现一篇好文&#xff0c;转发一下&#xff0c;日后自己再做补充&#xff1b;感谢Sunnier&#xff0c;引自&#xff1a;https://www.cnblogs.com/sunniest/p/4555801.htmlSpringMVC学习笔记----一、SpringMVC基础入门&#xff0c;创建一个He…

Ajax.ActionLink 辅助方法实现局部刷新

1&#xff0c;需要引用一个JS文件jquery.unobtrusive-ajax.min.js【MVC4 默认存在Scripts文件夹里】引用到母版页 _Layout.cshtml&#xff0c;并且一定要放在JQuery引用文件之后 2&#xff0c;需要添加一个分布视图到指定的目录里&#xff0c;分布视图是用来显示局部刷新的 3&a…

java 命名约定_Java命名约定

java 命名约定我想写这篇简短的文章来帮助某些难以记住Java API类和方法名称的人。 如您所知&#xff0c;Java是区分大小写的语言&#xff0c;要构建Java程序&#xff0c;您需要使用许多内置API类和方法。 而且&#xff0c;初学者发现很难准确地记住方法名称和类名称而不改变大…

Discuz UCenter 修改手记 - 2014.12.19

最近在整JAVA和UCENTER的东西&#xff0c;受限于项目架构需要&#xff0c;无法完全以UCENTER为中心&#xff0c;所以在对接过程中遇到了许多不愉快的事情。经历多番研究&#xff0c;终于解决了其中了两个大问题&#xff0c;现记录下来&#xff0c;以备日后查看。 一、解决email…

java泛型方法无参_从头再来:Java泛型(开发必须知道的)

Java泛型老规矩&#xff0c;测试一下&#xff0c;下面的程序能否正常运行&#xff1f;为什么&#xff1f;开头测试题泛型就是实现了参数化类型&#xff0c;也就是代码可以适用于多种类型。泛型是在编译期检查的&#xff0c;在编译期检查类型是否安全。我认为泛型最有用的就是和…

几种常见模式识别算法整理和总结

这学期选了门模式识别的课。发现最常见的一种情况就是&#xff0c;书上写的老师ppt上写的都看不懂&#xff0c;然后绕了一大圈去自己查资料理解&#xff0c;回头看看发现&#xff0c;Ah-ha&#xff0c;原来本质的原理那么简单&#xff0c;自己一開始仅仅只是被那些看似formidab…

使用Fabric8在CDI管理的bean中注入Kubernetes Services

序幕 在Kubernetes中我最喜欢的就是发现服务的方式。 为什么&#xff1f; 主要是因为用户代码不必处理注册&#xff0c;查找服务&#xff0c;也没有网络意外&#xff08;如果您曾经尝试过基于注册表的方法&#xff0c;那么您就会知道我在说什么&#xff09; 。 这篇文章将介绍…

意外分配– JIT编译抖动

在研究ByteWatcher时 &#xff08;请参阅我的上一篇 文章 &#xff09;&#xff0c;我遇到了一些非常奇怪的事情。 这是实际的代码段&#xff0c;用于找出特定线程上的分配量&#xff1a; return (long) mBeanServer.invoke(name,GET_THREAD_ALLOCATED_BYTES,PARAMS,SIGNATUR…

fastd java下载_FastReport VCL报表控件

FastReport VCL报表控件是著名的 Delphi 打印控件。含全部源码。支持 Delphi 10.2 Tokyo&#xff0c;FastReport可以在大量的方式报表的创建过程中操纵对象。快速发展的报表和随后的打印&#xff0c;这样的优点&#xff0c;正如预览打印文档的外观。专业版除了报表标准版的功能…

#102030:在30天内运行20 10K来庆祝Java的20年

1995年5月23日是技术史上的重要时刻。 业界似乎并没有意识到当天发布的语言会在未来几年内完全改变技术的格局。 Java将在今年的同一天庆祝20岁生日。 Java 20年&#xff0c;哇&#xff01; 回顾20年前的存储器时代&#xff0c;思考一下Java的发明时间/方式。 万维网专用于精…

View 的 android:visibility属性的讨论

Android VIEW 中的 visibility 属性&#xff0c;在API中的描述为&#xff1a;Controls the initial visibility of the view. [控制VIEW的初始可见性]。 其中包含三个参数&#xff1a; * 默认值为visible&#xff0c;可见。这里需要注意的是 "invisible" 和 "go…

jms java client mq_将Java客户端(JMS)连接到IBM MQ时出现问题

我正在尝试使用基本上通过以下方式构建的Java客户端使用SSL消耗IBM MQ(版本8.0.0.8)&#xff1a;Oracle JKD 8和IBM JRE 7(出于测试目的&#xff0c;我每个都有一个客户端)com.ibm.mq.allclient-9.1.0.0.jarjavax.jms-api-2.0.1.jarspring-jms-4.3.7.RELEASE.jarspring-jms-4.3…

JQuery-Dialog(弹出窗口,遮蔽窗口)

在Ajax中经常用到的弹出窗口和遮蔽窗口。自己写肯定是一个最佳方案&#xff0c;但时间和成本上&#xff0c;还是决定了寻找现成的吧。大概罗列一下。需要我满足我几个条件 一定要简洁方便拥有遮蔽功能&#xff0c;Model Dialog &#xff0c;所谓的模态窗口可以根据HTML弹出窗口…

java 设置系统参数_Java如何设置系统参数和运行参数

系统参数系统级全局变量&#xff0c;该参数在程序中任何位置都可以访问到。优先级最高&#xff0c;覆盖程序中同名配置。系统参数的标准格式为&#xff1a;-Dargnameargvalue&#xff0c;多个参数之间用空格隔开&#xff0c;如果参数值中间有空格&#xff0c;则用引号括起来。其…

HDU 1244 DP

题目大意: 我们需要将一串数字分成多个确定个数的连续段&#xff0c;在得到所有段的和的最大值 定义一个dp[i][j]数组表示在前j个数中取满 i 个段所能得到的最大值 那么也就是说明在这道题目当中每一段都是必须要被取到的 能够取到的前提是 j > cnt[i] //表示前 i 段的数字个…

java怎么生成字母_java自动生成字母

新建一个类SpringContextUtil.java&#xff1a;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;/*** 获取spring容器&#xff0c;以访问容器中定义的其…

一天一块钱第二天翻倍_再把钱翻倍

一天一块钱第二天翻倍总览 很久以前&#xff0c;我写了一篇关于用双倍赚钱的文章。 但是&#xff0c;当解决方案相当简单时&#xff0c;仍然是许多开发人员普遍担心的问题。 用双倍赚钱的问题 double有两种类型的错误。 它存在表示错误。 即它不能精确地表示所有可能的十进制…

移动端回到顶部

PC端回到顶部&#xff0c;很多人都是用js来写的。这样效果比较好一些了&#xff0c;但是在移动端的时候&#xff0c;就没必要搞个animate的动画了&#xff0c;然后实现回到顶部的方法也有&#xff1a;window.scrollTo(0,0)。但是更简单的就是a锚点里面href"#"&#x…

java调用接口实现的方法_java调用接口的实现方法

java调用接口的实现方法发布时间&#xff1a;2020-06-29 11:08:46来源&#xff1a;亿速云阅读&#xff1a;78作者&#xff1a;Leah本篇文章给大家分享的是有关java调用接口的实现方法&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家学习&#xff0c;希望大家阅读完这篇…