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 相关文章推荐
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Python set常用操作函数集锦
Nov 15 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
python 8种必备的gui库
Aug 27 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
Numpy ndarray 多维数组对象的使用
Feb 10 Python
python opencv通过按键采集图片源码
May 20 Python
Python实现滑雪小游戏
Sep 25 Python
Elasticsearch 批量操作
Apr 19 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
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
python安装scipy的方法步骤
2019/06/26 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
学习python需要有编程基础吗
2020/06/02 Python
python连接mysql有哪些方法
2020/06/24 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
《燕子专列》教学反思
2014/02/21 职场文书
廉洁使者实施方案
2014/03/29 职场文书
小学生植树节活动总结
2014/07/04 职场文书
物业消防安全责任书
2014/07/23 职场文书
模范教师事迹材料
2014/12/16 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android