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编写一个模仿CPU工作的程序
Apr 16 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
Python处理文本换行符实例代码
Feb 03 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
Python使用正则实现计算字符串算式
Dec 29 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
python对Excel的读取的示例代码
Feb 14 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
如何利用python检测图片是否包含二维码
Oct 15 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
Terran历史背景
2020/03/14 星际争霸
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
php批量修改表结构实例
2017/05/24 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
讲解Python中的递归函数
2015/04/27 Python
python安装以及IDE的配置教程
2015/04/29 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python 删除非空文件夹的实例
2018/04/26 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python导入库的具体方法
2020/06/18 Python
python MD5加密的示例
2020/10/19 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
《老王》教学反思
2014/02/23 职场文书
家长会标语
2014/06/24 职场文书
收银员岗位职责
2015/02/03 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python