python实现数据分析与建模


Posted in Python onJuly 11, 2019

前言

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

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_s<q_high+k*q_interval][le_s>q_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实现数据分析与建模 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Django返回json数据用法示例
Sep 18 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
Python实现的计算器功能示例
Apr 26 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
Python3的socket使用方法详解
Feb 18 Python
Python中如何引入第三方模块
May 27 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 Python
新手如何发布Python项目开源包过程详解
Jul 11 #Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 #Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 #Python
Python使用pyautocad+openpyxl处理cad文件示例
Jul 11 #Python
python实现微信自动回复机器人功能
Jul 11 #Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 #Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 #Python
You might like
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript 写类方式之八
2009/07/05 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python开发的实用计算器完整实例
2017/05/10 Python
对pandas中apply函数的用法详解
2018/04/10 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
幼教求职信
2014/03/12 职场文书
《桥》教学反思
2014/04/09 职场文书
真诚的求职信
2014/07/04 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2015大学生求职信范文
2015/03/20 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android