python实现数据分析与建模
作者:mrr 发布时间:2023-07-03 02:21:38
前言
首先我们做数据分析,想要得出最科学,最真实的结论,必须要有好的数据。而实际上我们一般面对的的都是复杂,多变的数据,所以必须要有强大的数据处理能力,接下来,我从我们面临的最真实的情况,一步一步教会大家怎么做。
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实现数据分析与建模 ,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:http://www.uml.org.cn/bigdata/201907113.asp


猜你喜欢
- 全球数据量的疯狂增长,使得市场对资深数据库管理员的需求也节节攀升。据统计,一直到2016美国IT市场对数据库管理员的需求量增长都将会超过所有
- 一 什么是WebsocketWebSocket是一种在单个TCP连接上进行全双工通信的协议WebSocket使得客户端和服务器之间的数据交换
- 索引和切片相当于是对数组中内容的读(read)或者查询(inquiry)。是我们获取有用信息(demanded infomation)的重要
- 从字节码角度看描述器在前面的内容当中我们已经详细分析了描述器的使用和其相关的应用,我们通常使用描述器都是将其作为类的一个类属性使用,而使用的
- 本文为大家分享了python搭建服务器实现两个Android客户端间收发消息,供大家参考,具体内容如下python服务器# coding:u
- 在上一篇文章中,我们介绍了如何使用源码对TensorBoard进行编译教程,没有定制需求的可以直接使用pip进行安装。TensorBoard
- 今天来说一下,有些刚刚接触python的朋友,在使用pip install安装python 第三方库的过程中会出现网速很慢,或者是安装下载到
- 我们主要讲解一下利用Python实现感知机算法。算法一首选,我们利用Python,按照上一节介绍的感知机算法基本思想,实现感知算法的原始形式
- 配置数据库密码特殊字符报错一般的springboot项目会有application.yml或者application.properties文
- 通常情况下,即使MyISAM表格式非常可靠(SQL语句对表做的所有改变在语句返回之前被写下),如果下列任何事件发生,你依然可以获得损坏的表:
- 我们平日办公时用得最多的软件是Execl、Word或WPS Office等,你的计算机中一定储存着大量的XLS、DOC、WPS文件吧!网页制
- 登录注册系统是日常上网最普通的操作,我设了一个分类一步步完善注册登录系统,若哪里有误,请见谅。所用语言:php数据库 :mysql本次实现功
- 如果你有两条音频合成为一条音频(叠加,不是拼接)的需求,以下代码可以直接使用,需要修改的地方我已经标出来了,有三处需要修改你的本地音频的地址
- 上一篇博客主要介绍了决策树的原理,这篇主要介绍他的实现,代码环境python 3.4,实现的是ID3算法,首先为了后面matplotlib的
- 老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验(容易出现乱
- 首先给出展示结果,大体就是检测工业板子是否出现。采取检测的方法比较简单,用的OpenCV的模板检测。大体思路opencv读取视频将视频分割为
- 通过对四则运算的学习,已经初步接触了Python中内容,如果看官是零基础的学习者,可能有点迷惑了。难道在IDE里面敲几个命令,然后看到结果,
- 什么是冗余字段?在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是
- 1、场景描述通常来说,前端要拿到excel数据,都是先上传存储数据库,然后再请求后端接口,获取数据。但有100个产品经理,就会有101个不同
- str.join即sequence – 要连接的元素序列。返回通过指定字符连接序列中元素后生成的新字符串。n =